模型:
google/t5-efficient-small
T5-Efficient-SMALL是 Google's original T5 的一种变体,遵循了 T5 model architecture 的模式。它是一个仅经过预训练的检查点,随着Yi Tay, Mostafa Dehghani, Jinfeng Rao, William Fedus, Samira Abnar, Hyung Won Chung, Sharan Narang, Dani Yogatama, Ashish Vaswani, Donald Metzler等人的论文《 Scale Efficiently: Insights from Pre-training and Fine-tuning Transformers 》一起发布。
总的来说,论文指出与其他参数数量类似的模型架构相比,深-窄的模型架构对下游性能更有利。
引用论文中的一句话:
通常我们推荐先采用深-窄策略,即在考虑其他维度的均匀缩放之前,首选增加模型的深度。这主要是因为深度在帕累托前沿上的影响,正如论文的前几节所展示的。具体来说,一个高而窄的模型通常比基准模型更高效。同样地,一个高而基准的模型可能比一个大模型更高效。我们通常发现,无论大小,即使继续堆叠层次可能会增加绝对性能,帕累托效率相对增益在增加层次时会减少,收敛于32到36层。最后,我们注意到,这里的效率概念与任何一个计算维度有关,即params、FLOPs或吞吐量(速度)。我们报告了这三个关键效率指标(参数数量、FLOPS和速度),并将决策权交给实践者,由他们来决定考虑哪个计算维度。
要更加精确一些,模型的深度被定义为按顺序堆叠的transformer模块的数量。因此,每个transformer模块依次处理一系列词嵌入。
该模型检查点 - t5-efficient-small - 是 Small 类型的模型,没有变体。它有 60.52 百万个参数,因此在完全精度(fp32)下需要 ca. 242.08 MB 的内存,或者在半精度(fp16或bf16)下需要 121.04 MB 的内存。
下面是原始T5模型架构的摘要:
Model | nl (el/dl) | ff | dm | kv | nh | #Params |
---|---|---|---|---|---|---|
Tiny | 4/4 | 1024 | 256 | 32 | 4 | 16M |
Mini | 4/4 | 1536 | 384 | 32 | 8 | 31M |
Small | 6/6 | 2048 | 512 | 32 | 8 | 60M |
Base | 12/12 | 3072 | 768 | 64 | 12 | 220M |
Large | 24/24 | 4096 | 1024 | 64 | 16 | 738M |
Xl | 24/24 | 16384 | 1024 | 128 | 32 | 3B |
XXl | 24/24 | 65536 | 1024 | 128 | 128 | 11B |
其中使用了以下缩写:
Abbreviation | Definition |
---|---|
nl | Number of transformer blocks (depth) |
dm | Dimension of embedding vector (output vector of transformers block) |
kv | Dimension of key/value projection matrix |
nh | Number of attention heads |
ff | Dimension of intermediate vector within transformer block (size of feed-forward projection matrix) |
el | Number of transformer blocks in the encoder (encoder depth) |
dl | Number of transformer blocks in the decoder (decoder depth) |
sh | Signifies that attention heads are shared |
skv | Signifies that key-values projection matrices are tied |
如果一个模型检查点没有特指,则编码器层和解码器层的数量都对应于nl。
该检查点在 Colossal, Cleaned version of Common Crawl (C4) 上使用基于跨度的掩码语言建模(MLM)目标进行了524288步的预训练。
注意:该模型是一个预训练的检查点,必须进行微调以供实际使用。该检查点是用英语预训练的,因此只适用于英语自然语言处理任务。您可以参考以下示例了解如何微调模型:
PyTorch:
Tensorflow:
JAX/Flax:
TODO:如果有表格,请添加
TODO:如果有表格,请添加
我们强烈建议读者仔细阅读原始论文 Scale Efficiently: Insights from Pre-training and Fine-tuning Transformers ,以更深入地理解该模型检查点。正如以下 issue 中所解释的那样,包括 sh 或 skv 模型架构变体的检查点尚未在Transformers中被移植,因为它们可能在实际应用中有限,并且缺乏更详细的描述。虽然这些检查点仍然保留,但它们有可能在将来被移植。