🚀 Switch Transformers C - 2048エキスパート (3.1 TBに対して1.6Tパラメータ)
Switch Transformersは、Masked Language Modeling (MLM) タスクで学習されたMixture of Experts (MoE) モデルです。このモデルは、大規模な言語モデルの学習において、T5よりも高速な学習と、微調整タスクでの優れた性能を実現します。

📚 目次
- TL;DR
- モデルの詳細
- 使用方法
- 用途
- バイアス、リスク、制限事項
- 学習の詳細
- 評価
- 環境への影響
- 引用
- モデルカードの作成者
📋 TL;DR
Switch Transformersは、Masked Language Modeling (MLM) タスクで学習されたMixture of Experts (MoE) モデルです。モデルアーキテクチャは古典的なT5に似ていますが、Feed Forward層が「エキスパート」MLPを含むSparse MLP層に置き換えられています。元の論文によると、このモデルは学習速度を向上させ(スケーリング特性)、微調整タスクでT5よりも優れた性能を発揮します。
要約の冒頭で述べられているように:
我々は、「Colossal Clean Crawled Corpus」で最大1兆パラメータのモデルを事前学習することで、現在の言語モデルの規模を拡大し、T5 - XXLモデルよりも4倍の速度向上を達成しました。
免責事項: このモデルカードの内容はHugging Faceチームによって作成され、一部は元の論文からコピーされています。
📊 モデルの詳細
モデルの説明
💻 使用方法
これらのチェックポイントはMasked - Language Modeling (MLM) タスクで学習されています。したがって、下流タスクで「すぐに使える」状態ではありません。微調整された重みを使用するにはFLAN - T5
を確認するか、このノートブックに従って独自のMoEを微調整することができます。
以下に、transformers
でモデルを使用する例を示します。ただし、このモデルは非常に大きいため、accelerate
のディスクオフロードを使用することを検討してください。
Pytorchモデルの使用
CPUでモデルを実行する
展開するにはクリック
from transformers import AutoTokenizer, SwitchTransformersForConditionalGeneration
tokenizer = AutoTokenizer.from_pretrained("google/switch-c-2048")
model = SwitchTransformersForConditionalGeneration.from_pretrained("google/switch-c-2048", device_map="auto", offload_folder=<OFFLOAD_FOLDER>)
input_text = "A <extra_id_0> walks into a bar a orders a <extra_id_1> with <extra_id_2> pinch of <extra_id_3>."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))
>>> <pad> <extra_id_0> man<extra_id_1> beer<extra_id_2> a<extra_id_3> salt<extra_id_4>.</s>
GPUでモデルを実行する
展開するにはクリック
from transformers import AutoTokenizer, SwitchTransformersForConditionalGeneration
tokenizer = AutoTokenizer.from_pretrained("google/switch-c-2048")
model = SwitchTransformersForConditionalGeneration.from_pretrained("google/switch-c-2048", device_map="auto", offload_folder=<OFFLOAD_FOLDER>)
input_text = "A <extra_id_0> walks into a bar a orders a <extra_id_1> with <extra_id_2> pinch of <extra_id_3>."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to(0)
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))
>>> <pad> <extra_id_0> man<extra_id_1> beer<extra_id_2> a<extra_id_3> salt<extra_id_4>.</s>
異なる精度でGPUでモデルを実行する
BF16
展開するにはクリック
from transformers import AutoTokenizer, SwitchTransformersForConditionalGeneration
tokenizer = AutoTokenizer.from_pretrained("google/switch-c-2048")
model = SwitchTransformersForConditionalGeneration.from_pretrained("google/switch-c-2048", device_map="auto", torch_dtype=torch.bfloat16, offload_folder=<OFFLOAD_FOLDER>)
input_text = "A <extra_id_0> walks into a bar a orders a <extra_id_1> with <extra_id_2> pinch of <extra_id_3>."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to(0)
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))
>>> <pad> <extra_id_0> man<extra_id_1> beer<extra_id_2> a<extra_id_3> salt<extra_id_4>.</s>
INT8
展開するにはクリック
from transformers import AutoTokenizer, SwitchTransformersForConditionalGeneration
tokenizer = AutoTokenizer.from_pretrained("google/switch-c-2048")
model = SwitchTransformersForConditionalGeneration.from_pretrained("google/switch-c-2048", device_map="auto", offload_folder=<OFFLOAD_FOLDER>)
input_text = "A <extra_id_0> walks into a bar a orders a <extra_id_1> with <extra_id_2> pinch of <extra_id_3>."
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to(0)
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))
>>> <pad> <extra_id_0> man<extra_id_1> beer<extra_id_2> a<extra_id_3> salt<extra_id_4>.</s>
📌 用途
直接的な使用と下流の使用
詳細については、研究論文を参照してください。
範囲外の使用
詳細情報が必要です。
⚠️ バイアス、リスク、制限事項
倫理的な考慮事項とリスク
詳細情報が必要です。
既知の制限事項
詳細情報が必要です。
敏感な使用
詳細情報が必要です。
📈 学習の詳細
学習データ
このモデルは、Colossal Clean Crawled Corpus (C4) データセットを使用して、T5
と同じ手順でMasked Language Modelingタスクで学習されました。
学習手順
元の論文のモデルカードによると、このモデルはTPU v3またはTPU v4ポッドで、t5x
コードベースとjax
を使用して学習されました。
🧪 評価
テストデータ、要因、指標
著者らは、様々なタスクでモデルを評価し、結果をT5と比較しました。定量的な評価の一部を以下の表に示します。
詳細については、研究論文を参照してください。
結果
Switch Transformersの完全な結果については、研究論文の表5を参照してください。
🌱 環境への影響
炭素排出量は、Lacoste et al. (2019)で提示されたMachine Learning Impact calculatorを使用して推定できます。
- ハードウェアタイプ: Google Cloud TPU Pods - TPU v3またはTPU v4 | チップ数 ≥ 4。
- 使用時間: 詳細情報が必要です。
- クラウドプロバイダー: GCP
- コンピュートリージョン: 詳細情報が必要です。
- 排出された炭素: 詳細情報が必要です。
📖 引用
BibTeX:
@misc{https://doi.org/10.48550/arxiv.2101.03961,
doi = {10.48550/ARXIV.2101.03961},
url = {https://arxiv.org/abs/2101.03961},
author = {Fedus, William and Zoph, Barret and Shazeer, Noam},
keywords = {Machine Learning (cs.LG), Artificial Intelligence (cs.AI), FOS: Computer and information sciences, FOS: Computer and information sciences},
title = {Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity},
publisher = {arXiv},
year = {2021},
copyright = {arXiv.org perpetual, non-exclusive license}
}