mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
4744 字
14 分钟
T5/FLAN:Encoder-Decoder与指令微调
2025-02-21

在 GPT 系列引领生成式 LLM 潮流的同时,Google 的 T5(Text-to-Text Transfer Transformer)和 FLAN(Fine-tuned Language Net)代表了一条不同的发展道路:将所有 NLP 任务统一为文本生成问题

2019 年的 T5 论文是当时最大规模的迁移学习探索之一,系统性地比较了预训练目标、模型架构和数据策略。2021 年的 FLAN 则证明了一个关键洞察:通过指令微调,模型可以在未见过的任务上零样本泛化。这一发现直接启发了后来的 InstructGPT 和 ChatGPT。

本文要点#

  • T5 的 Text-to-Text 统一框架设计
  • Encoder-Decoder 架构细节与 GPT 对比
  • Span Corruption 预训练目标与 C4 数据集
  • FLAN 指令微调的核心思想与实验
  • FLAN-v2 与 FLAN-T5 的演进
  • T5 家族的版本迭代(v1.1、v11、UL2)
  • 对后世开源模型和研究范式的影响

一、T5:Text-to-Text 框架#

1.1 核心思想#

T5 将所有 NLP 任务统一为”文本到文本”的格式:

graph LR A["输入文本"] --> B["T5 模型"] B --> C["输出文本"] subgraph 任务映射 D["翻译"] --> E["translate English to French: hello → bonjour"] F["摘要"] --> G["summarize: article → summary"] H["问答"] --> I["question: context? → answer"] J["分类"] --> K["sst2 sentence → positive"] end

这种设计的核心优势在于:无论什么任务,模型的输入输出格式完全一致。这意味着同一个模型、同一套训练流程可以处理翻译、摘要、分类、问答等截然不同的 NLP 任务,不需要为每个任务设计特定的输出头(output head)或损失函数。

1.2 任务统一格式#

原始任务T5 输入前缀与内容T5 输出
翻译translate English to French: Hello worldBonjour monde
情感分类sst2 sentence: This movie is great!positive
问答question: What is X? context: ...answer
摘要summarize: [长文本]摘要内容
共指消解coref: [文本]指代关系

T5 通过在输入前添加任务特定的前缀(prefix)来区分不同任务。这种做法后来被广泛采用,成为 instruction-following 模型的基本范式。

1.3 论文信息#

论文:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
作者:Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, ...
机构:Google Research, Brain Team
发表:2019 年 10 月(Journal of Machine Learning Research)
引用:15000+ 次

这篇论文的特别之处在于它不仅仅提出了一个模型,更是一次大规模的系统性消融实验——比较了不同架构、预训练目标、数据集和训练策略的效果。


二、T5 架构#

2.1 Encoder-Decoder 结构详解#

T5 使用经典的 Transformer Encoder-Decoder 架构,但在原始 Transformer 基础上做了几处重要简化:

flowchart TB subgraph T5架构 direction TB Input["输入 Token Embeddings"] --> PE["位置编码<br/>(Relative Bias)"] PE --> E1["Encoder Block 1"] E1 --> E2["Encoder Block 2"] E2 --> EN["... Encoder Block N"] EN --> CrossAttn["Cross-Attention"] Target["目标 Token Embeddings"] --> DPE["位置编码"] DPE --> D1["Decoder Block 1<br/>(Masked Self-Attn + Cross-Attn + FFN)"] D1 --> D2["Decoder Block 2"] D2 --> DN["... Decoder Block N"] DN --> LM["Linear + Softmax"] CrossAttn --> D1 end subgraph 每个Block SA["Self-Attention"] --> LN1["Layer Norm"] LN1 --> FFN["Feed-Forward Network"] FFN --> LN2["Layer Norm"] end

T5 的架构关键细节:

组件配置说明
注意力机制Multi-Head Self-AttentionEncoder 全双向,Decoder 因果掩码
位置编码Relative Position Bias不使用正弦编码,改为可学习的相对偏置
Layer NormPre-Norm(在注意力/FFN 之前)比 Post-Norm 训练更稳定
Feed-Forwardd_ff = 4 × d_model = 3072(Base)标准的两层 MLP 激活函数
激活函数geLU → T5 使用 ReLUT5 论文发现 ReLU 与 gated 激活效果接近
残差连接每个子层后添加标准 Transformer 做法

为什么选择 Encoder-Decoder 而非 Decoder-only? T5 论文系统地比较了三种架构:Encoder-Decoder、Decoder-only(语言模型)、以及前缀 LM(Prefix LM)。实验结果显示,Encoder-Decoder 架构在整体性能上略占优势,特别是在需要双向理解输入的任务(如分类、问答)上。

2.2 模型规模配置#

版本参数量d_modeld_ffHeadsLayersEncoder 层Decoder 层
T5-Small60M51220488666
T5-Base220M768307212121212
T5-Large770M1024409616242424
T5-3B3B10241638432242424
T5-11B11B102465536128242424

可以看到,从 T5-3B 到 T5-11B,d_model 保持不变但 d_ff 大幅扩展。这种设计使得 FFN 层占据了绝大部分参数。

2.3 对比 GPT 的差异#

特性T5 (Encoder-Decoder)GPT (Decoder-only)
注意力类型Encoder 内全双向 + Cross-AttnDecoder 内 Causal Mask
训练任务Span Corruption(去噪)因果语言建模(预测下一个 token)
双向理解原生支持(Encoder 双向编码)需要特殊技巧或足够大的模型
生成效率需要先完整编码再逐 token 生成直接自回归生成,效率高
参数利用Encoder+Decoder 分担参数全部参数用于生成
下游微调适合分类+生成混合任务适合纯生成任务

2.4 相对位置编码#

T5 没有使用 Transformer 原论文中的正弦位置编码,而是采用了一种可学习的相对位置偏置(Relative Position Bias):

# 简化的相对位置偏置示意
class RelativePositionBias(nn.Module):
def __init__(self, num_buckets=32, max_distance=128, num_heads=12):
self.relative_attention_bias = nn.Embedding(num_buckets, num_heads)
def forward(self, qlen, klen):
# 计算相对位置: q_pos - k_pos
# 将相对位置映射到 [0, num_buckets) 的桶中
# 对称桶设计:正负位置分别映射
relative_position = compute_relative_pos(qlen, klen)
rp_bucket = position_to_bucket(relative_position)
bias = self.relative_attention_bias(rp_bucket) # [qlen, klen, num_heads]
return bias # 添加到注意力分数上

这种设计的优势:位置信息直接参与到注意力计算中,而不是简单地加到 token embedding 上;同时桶化(bucketing)策略使得模型可以泛化到训练时未见过的序列长度。


三、T5 的训练#

3.1 预训练数据:C4 数据集#

T5 论文构建了一个名为 C4(Colossal Clean Crawled Corpus) 的大规模预训练数据集:

属性数值
数据来源Common Crawl(2019 年 4 月快照)
原始大小约 20TB
清洗后大小约 750GB
文档数量约 3.65 亿篇
Token 数量约 1560 亿

C4 数据集的清洗步骤:

  1. 语言过滤:仅保留英语文档(使用 langdetect)
  2. 质量过滤:移除包含不良词汇的页面
  3. 去重:移除重复的句子和文档
  4. 长度过滤:移除过短的文档(少于 3 个句子)
  5. 屏蔽词过滤:移除包含 JavaScript 代码的页面

C4 数据集后来成为 NLP 预训练的标准数据集之一,被许多后续工作采用。但需要注意的是,它的英文单一语言限制也引发了关于多语言能力的讨论。

3.2 预训练任务:Span Corruption#

T5 论文最核心的实验发现是:Span Corruption(跨度破坏)是最有效的预训练目标。

Span Corruption 的工作原理:

# Span Corruption 示例
# 原文: "Thank you for inviting me to your party last week."
# 步骤1: 随机选择 span 进行破坏
# 选中 "for inviting me" (3 个 tokens) 和 "party last" (2 个 tokens)
# 步骤2: 用 sentinel tokens 替换被选中的 span
# 输入: "Thank you <X> to your <Y> week."
# 目标: "<X> for inviting me <Y> party last"
# 实际 sentinel tokens 格式:
# 输入: "Thank you <extra_id_0> to your <extra_id_1> week."
# 输出: "<extra_id_0> for inviting me <extra_id_1> party last"

Sentinel Tokens 是 T5 引入的特殊 token(<extra_id_0><extra_id_99>),用于标记被破坏的 span 的位置。这种设计有几个关键特点:

  • Span 连续性:破坏的是连续的 token 序列,而非随机分散的单个 token(与 BERT 的 MLM 不同)
  • 可变长度:每个 span 的长度由几何分布采样决定(平均 span 长度约 3 个 token)
  • 自回归解码:模型需要按顺序逐个预测被破坏的 span
  • 破坏比例:通常为 15% 的 token 被破坏

3.3 消融实验:为什么选择 Span Corruption?#

T5 论文的最大贡献之一是系统性的消融实验。论文比较了多种预训练目标:

预训练目标方法描述GLUE 平均分
BERT-style MLM随机掩盖 15% 单个 token,预测原始 token83.2
Replace Corrupted SpansSpan Corruption(T5 最终选择)83.7
Masked Language Model与 BERT 相同82.7
MASS预测连续片段82.5
Deshuffling打乱顺序,恢复原始顺序80.1
Prefix Language Model前缀双向+后续自回归83.1
纯语言模型(GPT-style)因果语言建模82.3

关键发现:Replace Corrupted Spans(即 Span Corruption)在几乎所有下游任务上都表现最好,且不需要额外的特殊标记(如 BERT 的 [MASK]),因为 sentinel tokens 本身就是词汇表的一部分。

3.4 训练配置#

参数T5-BaseT5-LargeT5-11B
训练步数500K500K500K
Batch Size1281282048
学习率0.0010.0010.001
学习率调度逆平方根衰减逆平方根衰减逆平方根衰减
Dropout0.10.10.1
优化器AdaFactorAdaFactorAdaFactor
训练硬件--TPU v3 Pod

T5 使用 AdaFactor 优化器而非 Adam,这是因为它在大规模训练中内存效率更高——AdaFactor 不需要为每个参数存储动量(momentum)的完整矩阵。


四、FLAN:指令微调#

4.1 核心思想#

FLAN(Fine-tuned Language Net)是 Google 在 2021 年提出的,它证明了一个革命性的观点:

大型语言模型可以通过在多种任务上进行指令微调,获得在完全未见过的任务上的零样本泛化能力。

flowchart TB subgraph FLAN训练流水线 A["预训练语言模型<br/>(如 LaMDA-137B)"] --> B["构建指令数据集<br/>(62 个 NLP 任务)"] B --> C["指令模板化<br/>(每个任务 10+ 模板)"] C --> D["混合指令微调<br/>(Instruction Tuning)"] D --> E["评估未见任务<br/>(Zero-Shot)"] E --> F{"泛化到<br/>未见任务?"} F -->|是| G["FLAN 成功"] F -->|否| H["仅记忆训练任务"] end subgraph 关键设计 I["任务分组<br/>(Task Clustering)"] J["Leave-one-out<br/>评估策略"] K["多模板<br/>减少格式过拟合"] end I --> D J --> E K --> C

4.2 指令模板设计#

FLAN 的一个关键设计是为每个任务创建多种指令模板,以避免模型过拟合到特定格式:

# FLAN 指令模板示例(以翻译任务为例)
templates = {
"translation": [
"Translate this from {source_lang} to {target_lang}: {text}",
"What is the {target_lang} translation of: {text}",
"Convert the following text from {source_lang} into {target_lang}: {text}",
"{text}
Translate the above text from {source_lang} to {target_lang}.",
"Produce a {target_lang} translation of the following {source_lang} text: {text}",
],
"summarization": [
"Summarize this: {text}",
"Write a summary of: {text}",
"Briefly describe what this is about: {text}",
"What is a shorter version of this: {text}",
"Generate a summary of the following article: {text}",
],
"qa": [
"Answer this question based on the context: {question} Context: {context}",
"Based on the context, answer the question. Context: {context} Question: {question}",
"Read the following and answer the question below. {context} Question: {question}",
],
}

每个任务平均设计了 10 个不同的指令模板。这种多样性确保模型学到的是”理解指令”而非”记住格式”。

4.3 任务聚类与评估策略#

FLAN 的评估策略非常巧妙——使用 Leave-One-Out Task Clustering

将 62 个 NLP 任务分为若干聚类:
├── 聚类 1:情感分析(SST-2, IMDb, Yelp, ...)
├── 聚类 2:自然语言推理(MNLI, RTE, QNLI, ...)
├── 聚类 3:问答(SQuAD, TriviaQA, ...)
├── 聚类 4:翻译(WMT, ...)
└── 聚类 5:摘要(CNN/DailyMail, ...)
评估时:
- 选择一个聚类作为"未见任务"
- 使用其他所有聚类的数据进行指令微调
- 在未见聚类上测试零样本性能
- 轮流对每个聚类进行以上操作

这种设计验证了一个关键假设:模型确实能从多种任务的指令中学习到通用的”理解指令”能力,而不仅仅是记忆特定任务。

4.4 FLAN 的实验结果#

设置直接零样本FLAN 零样本提升
未见任务类型(如推理任务)显著提升+10~25%
新语言任务+8~15%
组合任务(需要多步推理)+5~20%
训练任务(已见过的类型)中等优秀+3~10%

论文还发现了一个关键点:模型越大,FLAN 的效果越好。137B 参数的模型从指令微调中的收益远大于 8B 的模型,这说明指令理解能力是随着模型规模涌现的。


五、FLAN 的演进:FLAN-v2 与 FLAN-T5#

5.1 FLAN-v2(2022)#

FLAN-v2(Scaling Instruction-Finetuned Language Models)大幅扩展了原始 FLAN 的工作:

对比项FLAN (2021)FLAN-v2 (2022)
任务数量621836
指令模板数~62015000+
基础模型LaMDA-137BPaLM, T5, 等
训练数据量~1.8M 样本15M+ 样本
任务类型NLP 为主NLP + 对话 + 代码 + 推理

5.2 FLAN-T5#

FLAN-T5 是将 FLAN 指令微调应用于 T5 模型的产物,也是最早的高质量开源指令微调模型之一

FLAN-T5 的训练流程:
1. 使用 T5 预训练权重(C4 数据集上的 Span Corruption)
2. 收集 1836 个任务的指令数据
3. 混合所有任务进行指令微调
4. 输出:FLAN-T5(在各尺寸上都显著优于原始 T5)

FLAN-T5 的关键改进:

  • 输入反转(Input Inversion):部分任务将输出作为输入,让模型学习逆向推理
  • 思维链数据(CoT Data):加入 Chain-of-Thought 格式的推理数据
  • 任务混合策略:通过过采样少数类别来平衡不同任务的数据量

5.3 FLAN 的贡献与数据构建#

FLAN 的指令数据集构建方法:

来源任务数样本数说明
NLP 数据集621.8M翻译、摘要、问答等
对话数据50.5M多轮对话
代码数据50.5M代码生成与理解
推理数据80.3M数学、逻辑推理

FLAN 证明了:不需要为每个任务收集大量标注数据,只需要在多种任务的少量指令数据上微调,模型就能获得广泛的泛化能力。这一发现为后来的 Instruction Following 研究奠定了基础。


六、T5 家族#

6.1 版本演进#

版本年份参数特点
T5-Small201960M基准版本,适合快速实验
T5-Base2019220M通用版本,平衡性能与效率
T5-Large2019770M高精度,许多 NLP 任务的标准选择
T5-3B20193B大规模版本
T5-11B201911B最大规模,接近当时 SOTA
T5 v1.12021同上修复 GeoMedian 初始化,改用 gated-GELU
T5 v112021同上在改进的数据集上重新预训练
FLAN-T5202211B指令微调版本,性能大幅提升
UL2202220B混合去噪器,统一预训练范式
Flan-UL2202320BUL2 + FLAN 指令微调

6.2 T5 v1.1 与 T5 v11#

Google 在 2021 年发布了 T5 的改进版本:

T5 v1.1 的改进:

  • 将 Feed-Forward 激活函数从 ReLU 改为 gated-GELU(即 gate(x) = x * sigmoid(W_g * x),输出维度减半)
  • 修改了权重初始化方式(使用 GeoMedian 初始化)
  • C4 数据集的改进版本 上重新预训练
  • 仅在无监督预训练阶段训练(不包含有监督微调)

T5 v11:

  • 在 C4 数据集的进一步清洗版本上预训练
  • 去除了 Wikipedia 和 OpenWebText 的重复数据
  • 训练更加充分

T5 v1.1 在社区中被广泛使用,特别是 t5-v1_1-baset5-v1_1-large 成为许多 NLP 项目的默认 backbone。

6.3 UL2 (2022)#

UL2(Unifying Language Learning)提出了混合去噪器(Mixture of Denoisers),统一了不同的预训练范式:

# UL2 三种去噪目标
objectives = {
"R-Denoiser": {
"描述": "常规去噪,短 span,高破坏比例",
"破坏比例": "15%",
"span长度": "3-5 tokens",
"类似": "标准 BERT MLM",
},
"S-Denoiser": {
"描述": "顺序去噪,长 span",
"破坏比例": "25%",
"span长度": "6-∞ tokens",
"类似": "T5 Span Corruption",
},
"X-Denoiser": {
"描述": "极端去噪,极大破坏",
"破坏比例": "50%",
"span长度": "3-∞ tokens",
"类似": "极端破坏+重建",
},
}
# 训练时随机选择一种去噪模式
mode = random.choice(["R", "S", "X"])
loss = model(input_with_noise, denoise_mode=mode)

UL2 的核心洞察:不同的预训练目标侧重不同能力(理解 vs. 生成),混合训练可以让模型同时获得两种能力。


七、对后世的影响#

7.1 开源模型生态#

T5/FLAN 启发了众多开源模型和项目:

  • FLAN-T5:最早的高质量开源指令微调模型之一,被广泛应用于研究和生产
  • T0 模型:Hugging Face 基于 T5 开发的多任务指令微调模型,进一步验证了 FLAN 的思路
  • UL2:成为后续 Google 内部模型的基础架构
  • mT5:T5 的多语言版本,支持 101 种语言
  • ByT5:T5 的字符级版本,无需 tokenizer

7.2 T0 模型#

T0(Sanh et al., 2021)是 Hugging Face BigScience 项目的重要成果,直接受到 FLAN 的启发:

T0 的设计思路:
- 基础模型:T5-Large(770M 参数)
- 训练数据:来自 PromptSource 的多任务指令数据
- 任务数量:107 个数据集,共 1700+ 个 prompt
- 核心验证:在小参数模型上也能实现指令泛化

T0 的贡献在于证明了 FLAN 的思路不局限于超大规模模型(137B+),在 770M 的规模上也能获得显著的零样本泛化提升。

7.3 研究贡献#

贡献影响
Text-to-Text 统一框架成为 NLP 任务标准范式,影响了后续所有 instruction-tuned 模型
指令微调(FLAN)直接启发了 InstructGPT、ChatGPT 的训练方法
系统性消融实验树立了大规模模型研究的实验范式
C4 数据集成为预训练数据集的事实标准之一
Span Corruption成为 Encoder-Decoder 模型的主流预训练目标

7.4 对 GPT 时代的启示#

虽然 Decoder-only 架构(GPT 系列)最终成为主流,但 T5/FLAN 的思想影响深远:

  1. 指令微调范式:FLAN 证明的”指令微调 → 零样本泛化”成为现代 LLM 的标准训练步骤
  2. 任务统一思想:Text-to-Text 的理念在 ChatGPT 等 instruction-following 模型中得到延续
  3. 预训练目标研究:Span Corruption 和混合去噪的思想影响了 LLaMA、PaLM 等后续模型的预训练
  4. 开源精神:T5 是最早的大规模开源预训练模型之一,推动了开源 LLM 生态的发展

小结#

T5 和 FLAN 是大语言模型发展史上两座重要的里程碑,分别在预训练架构和指令微调两个方向做出了开创性贡献。

核心贡献:

flowchart TB subgraph T5与FLAN的核心贡献 A["T5: Text-to-Text"] --> A1["统一所有 NLP 任务<br/>为文本生成"] A --> A2["系统性消融实验<br/>奠定研究范式"] A --> A3["C4 数据集<br/>+ Span Corruption"] B["FLAN: 指令微调"] --> B1["零样本任务泛化<br/>的开创性证明"] B --> B2["指令模板多样性<br/>避免格式过拟合"] B --> B3["直接启发<br/>InstructGPT / ChatGPT"] C["T5 家族演进"] --> C1["FLAN-T5: 开源指令模型"] C --> C2["UL2: 统一预训练范式"] C --> C3["T0: 小模型也能指令泛化"] end

历史意义:

  1. 任务统一:T5 证明了所有 NLP 任务可以统一为文本生成,消除了任务特定架构的需要
  2. 指令微调:FLAN 开创了 LLM 泛化能力训练的范式,直接启发了 ChatGPT 的诞生
  3. 开源精神:T5/FLAN-T5 成为最重要的开源 LLM 之一,推动了整个开源社区的发展
  4. 研究方法论:T5 论文的大规模消融实验为后续研究树立了标杆

虽然 GPT 系列的 Decoder-only 架构最终成为主流,但 T5/FLAN 的贡献不可磨灭——它们的思想已经深深融入了现代大语言模型的训练流程中。


常见问题 FAQ#

Q1:T5 为什么选择 Encoder-Decoder 而不是 Decoder-only?

A:T5 论文系统地比较了三种架构(Encoder-Decoder、Decoder-only、Prefix LM)。实验表明 Encoder-Decoder 在需要双向理解的任务(如分类、问答)上更有优势。此外,Encoder-Decoder 天然适合 Span Corruption 这种去噪预训练目标。不过随着模型规模增大,Decoder-only 架构逐渐成为主流。

Q2:Span Corruption 和 BERT 的 MLM 有什么区别?

A:主要区别有三点:(1) MLM 随机掩盖单个 token,Span Corruption 掩盖连续的 token 片段(span);(2) MLM 使用 [MASK] 标记,Span Corruption 使用 sentinel tokens(<extra_id_0> 等),后者是词汇表的一部分;(3) Span Corruption 的目标需要自回归解码,而非 MLM 的独立预测。

Q3:FLAN 和 InstructGPT 有什么关系?

A:FLAN 是指令微调的先驱工作(2021),证明了在多种 NLP 任务上微调可以让模型理解新指令。InstructGPT(2022)在此基础上加入了 RLHF(人类反馈强化学习),使模型不仅遵循指令,还更符合人类偏好。可以说 FLAN 验证了指令微调的可行性,InstructGPT 将其与对齐技术结合。

Q4:FLAN-T5 和原始 T5 的区别是什么?

A:原始 T5 仅通过 Span Corruption 预训练,没有经过指令微调。FLAN-T5 在 T5 预训练权重的基础上,使用 1836 个任务的指令数据进行微调。FLAN-T5 在几乎所有 zero-shot 和 few-shot 评测上都显著优于原始 T5。

Q5:T5 现在还有使用价值吗?还是已经被淘汰了?

A:T5 在纯生成任务上确实不如现代的 Decoder-only 模型(如 LLaMA、GPT-4)。但在需要双向编码理解的任务(如文本分类、信息抽取、语义匹配)上,Encoder-Decoder 架构仍有优势。FLAN-T5 也常被用作基线模型和蒸馏的教师模型。

Q6:C4 数据集有什么局限性?

A:C4 的主要局限包括:(1) 仅包含英语,不适用于多语言任务;(2) 数据来源为 2019 年的 Common Crawl,时效性有限;(3) 清洗过程可能移除了某些有价值的长尾内容;(4) 存在一定的隐私和偏见问题。后续的 mC4 和 C4 多语言版本部分解决了这些问题。

Q7:FLAN 的指令模板数量对效果有多大影响?

A:FLAN 论文发现,增加模板数量可以显著减少模型对特定格式的过拟合。每个任务至少 5-10 个不同模板是推荐的最低数量。FLAN-v2 将模板数量扩展到 15000+,进一步提升了泛化效果。但超过一定数量后,收益会递减。

Q8:UL2 和 T5 的 Span Corruption 有什么区别?

A:T5 只使用一种 Span Corruption 策略(固定破坏比例和 span 长度分布)。UL2 提出混合使用三种不同的去噪目标(R-Denoiser、S-Denoiser、X-Denoiser),覆盖从短到长的不同破坏粒度。UL2 还引入了模式指示 token,让模型知道当前使用的是哪种去噪模式。


参考资料#

支持与分享

如果这篇文章对你有帮助,欢迎支持作者或分享给更多人

T5/FLAN:Encoder-Decoder与指令微调
https://blog.souloss.com/posts/machine-learning/llm-paper-history/t5-and-flan-instruction-tuning/
作者
Souloss
发布于
2025-02-21
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时