🚀 MPT-7B
MPT-7Bは、1兆トークンの英語テキストとコードを使ってゼロから事前学習されたデコーダー型のトランスフォーマーモデルです。このモデルはMosaicMLによって訓練されました。
MPT-7BはMosaicPretrainedTransformer (MPT) モデルファミリーの一部で、効率的な訓練と推論のために最適化された改良型のトランスフォーマーアーキテクチャを使用しています。
これらのアーキテクチャの変更には、パフォーマンス最適化されたレイヤー実装や、位置埋め込みをAttention with Linear Biases (ALiBi) で置き換えることによるコンテキスト長の制限の排除が含まれています。これらの改良により、MPTモデルは高いスループット効率と安定した収束で訓練でき、標準的なHuggingFaceパイプラインとNVIDIAのFasterTransformerの両方で効率的にサービスを提供できます。
このモデルはMosaicMLのLLMコードベースを使用しており、llm-foundryリポジトリで見つけることができます。このモデルは、MosaicMLのNLPチームによって、LLMの事前学習、微調整、推論用のMosaicMLプラットフォーム上で訓練されました。
🚀 クイックスタート
このモデルは、訓練と微調整にMosaicMLのllm-foundryリポジトリを使用するのが最適です。
import transformers
model = transformers.AutoModelForCausalLM.from_pretrained(
'mosaicml/mpt-7b',
trust_remote_code=True
)
注意: このモデルは、from_pretrained
メソッドにtrust_remote_code=True
を渡す必要があります。これは、まだHugging Faceのtransformers
パッケージの一部ではないカスタムのMPT
モデルアーキテクチャを使用しているためです。MPT
には、FlashAttention、ALiBi、QK LayerNorm などの多くの訓練効率機能のオプションが含まれています。
FlashAttentionの最適化されたtriton実装を使用するには、attn_impl='triton'
と bfloat16
精度でモデルをGPU (cuda:0
) にロードすることができます。
import torch
import transformers
name = 'mosaicml/mpt-7b'
config = transformers.AutoConfig.from_pretrained(name, trust_remote_code=True)
config.attn_config['attn_impl'] = 'triton'
config.init_device = 'cuda:0'
model = transformers.AutoModelForCausalLM.from_pretrained(
name,
config=config,
torch_dtype=torch.bfloat16,
trust_remote_code=True
)
モデルはシーケンス長2048で訓練されましたが、ALiBiにより、ユーザーは微調整や推論時に最大シーケンス長を増やすことができます。例えば:
import transformers
name = 'mosaicml/mpt-7b'
config = transformers.AutoConfig.from_pretrained(name, trust_remote_code=True)
config.max_seq_len = 4096
model = transformers.AutoModelForCausalLM.from_pretrained(
name,
config=config,
trust_remote_code=True
)
このモデルは、EleutherAI/gpt-neox-20b トークナイザーで訓練されました。
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('EleutherAI/gpt-neox-20b')
その後、このモデルは、例えば、テキスト生成パイプライン内で使用することができます。
注意: 低精度でTorchモジュールを実行する場合、torch.autocastコンテキストマネージャー を使用することがベストプラクティスです。
from transformers import pipeline
pipe = pipeline('text-generation', model=model, tokenizer=tokenizer, device='cuda:0')
with torch.autocast('cuda', dtype=torch.bfloat16):
print(
pipe('Here is a recipe for vegan banana bread:\n',
max_new_tokens=100,
do_sample=True,
use_cache=True))
✨ 主な機能
このモデルの特徴
MPT-7Bは以下の特徴を持っています。
MPT-7Bから微調整されたモデル
以下のモデルはMPT-7Bを微調整したものです。
📚 ドキュメント
🔧 技術詳細
モデルの説明
アーキテクチャは、標準的なデコーダー専用トランスフォーマーの改良版です。
モデルは、標準的なトランスフォーマーから以下のように変更されています。
ハイパーパラメータ |
値 |
n_parameters |
67億 |
n_layers |
32 |
n_heads |
32 |
d_model |
4096 |
語彙サイズ |
50432 |
シーケンス長 |
2048 |
訓練データ
ストリーミングデータセット
データは、MosaicMLのStreamingDataset ライブラリを使用してフォーマットされ、オブジェクトストレージにデータを保存し、訓練中にコンピュートクラスタに効率的にストリーミングします。
StreamingDatasetにより、訓練を開始する前にデータセット全体をダウンロードする必要がなくなり、データセットの任意のポイントから訓練を即座に再開することができます。
データミックス
モデルは、1兆トークン (バッチサイズ1760、シーケンス長2048) で訓練されました。以下のデータミックスで訓練されました。
データソース |
ソース内のトークン数 |
割合 |
有効なトークン数 |
エポック数 |
mC4 3.1.0 - 英語 |
4179.9億 |
0.33 |
3300億 |
0.14 |
C4 - 英語 - SemDedup 80% |
1004.2億 |
0.299 |
2990億 |
2.98 |
RedPajama - CommonCrawl |
8784.5億 |
0.1 |
1000億 |
0.11 |
The Stack - 選択された言語 |
4637.8億 |
0.1 |
1000億 |
0.22 |
RedPajama - Wikipedia - 英語 |
48.7億 |
0.04 |
400億 |
8.21 |
The Stack - Markdown |
1070.7億 |
0.035 |
350億 |
0.33 |
S2ORC |
488.5億 |
0.033 |
330億 |
0.68 |
RedPajama - 書籍 |
260.2億 |
0.03 |
300億 |
1.15 |
RedPajama - arXiv |
281.0億 |
0.019 |
190億 |
0.68 |
RedPajama - StackExchange |
205.4億 |
0.014 |
140億 |
0.68 |
各バッチのサンプルは、上記の確率でデータセットの1つから選択されました。
各データセット内でサンプルはシャッフルされ、各サンプルは、2048のシーケンス長を埋めるのに必要なだけのシーケンスから構築されました。
データは、EleutherAI/gpt-neox-20b トークナイザーを使用してトークン化されました。このBPEトークナイザーには、多くの望ましい特性があり、そのほとんどはコードのトークン化に関連しています。
(1) コードを含む多様なデータミックス (The Pile) で訓練されています。
(2) 接頭辞スペースの存在に応じて不一致にトークン化するGPT2トークナイザーとは異なり、一貫したスペース区切りを適用します。
(3) 繰り返されるスペース文字のトークンが含まれており、大量の繰り返されるスペース文字を含むテキストの圧縮率を向上させることができます。
モデルの語彙サイズ50432は、128の倍数に設定され (MEGATRON-LM のように)、モデルのフロップ利用率 (MFU) が最大4ポイント向上しました。
訓練設定
このモデルは、MosaicMLプラットフォーム を使用して、440台のA100-40GBで約9.5日間訓練されました。
モデルは、FSDP を使用したシャード化されたデータ並列で訓練され、LION オプティマイザーを使用しました。
制限とバイアス
以下の文章は、EleutherAIのGPT-NeoX-20B から改変されています。
MPT-7B (Base) は、微調整なしでのデプロイを目的としていません。
さらなるガードレールとユーザーの同意なしで、人間との対話に使用してはなりません。
MPT-7Bは事実に誤りのある出力を生成する可能性があり、事実に正確な情報を生成することに依存してはなりません。
MPT-7Bは、様々な公開データセットで訓練されました。
事前学習データのクリーニングには多大な努力が払われていますが、このモデルが猥褻、偏見、またはその他の不快な出力を生成する可能性があります。
📄 ライセンス
モデルの日付
2023年5月5日
モデルのライセンス
Apache-2.0
免責事項
このモデルのライセンスは法律上のアドバイスを構成するものではありません。このモデルを使用する第三者の行為について、私たちは責任を負いません。商用目的でこのモデルを使用する前に、弁護士に相談してください。
引用
このモデルを引用するには、以下の形式を使用してください。
@online{MosaicML2023Introducing,
author = {MosaicML NLP Team},
title = {Introducing MPT-7B: A New Standard for Open-Source,
Commercially Usable LLMs},
year = {2023},
url = {www.mosaicml.com/blog/mpt-7b},
note = {Accessed: 2023-05-05},
urldate = {2023-05-05}
}
MosaicMLプラットフォーム
MosaicMLプラットフォームで独自のMPTまたはLLMを訓練 し、デプロイ することに興味がある場合は、こちらから登録 してください。