モデル概要
モデル特徴
モデル能力
使用事例
🚀 Instella-Long✨:長文脈対応の完全オープンソース言語モデル
Instella-Longは、AMDによって開発された長文脈対応の言語モデルです。このモデルは、Instella-3B-Instructをベースに、AMD Instinct™ MI300X GPU上で継続的に訓練されています。私たちの知る限り、Instella-Longにより、Instellaシリーズは、最初の長文脈対応の完全オープンソース言語モデルとなりました。Instella-Longは128Kの文脈長をサポートし、長文脈ベンチマークでは、Phi-3.5-mini、Gemma-3-4B、Qwen2.5-3Bなどのオープンソースウェイトモデルを上回る性能を発揮します。
Instinct MI300X GPU上でInstellaを長文脈拡張訓練することで、AMDのハードウェアが複雑なAI訓練ワークロードを処理する能力と拡張性を示し、AIハードウェア分野に実行可能な選択肢を提供します。AMDのオープンソースへのコミットメントを受けて、私たちはすべてのモデルウェイト、詳細な訓練設定、データセット、コードを公開し、AIコミュニティが協力し、再現し、革新することで技術の進歩を加速させることを目指しています。
✨ 主な機能
- AMDは、128Kの文脈長をサポートする3Bの長文脈言語モデルInstella-Longをリリースしました。このモデルは、64個のInstinct MI300X GPU上で訓練されています。
- 私たちの知る限り、Instella-Longにより、Instellaシリーズは最初の長文脈対応の完全オープンソース言語モデルとなりました。Hugging Faceのモデル、訓練データ、訓練コードはすべて完全にオープンソースです。
- AMD ROCmソフトウェアスタックのサポートを受けて、Instella-Longはシーケンスパラレル(Sequence Parallelism)、FlashAttention - 2、Torch Compile、FSDPなどの効率的な訓練技術を採用し、8つのMI300ノード(各ノードに8つのGPUが搭載されている)上でモデルの分散訓練を行うことができます。
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "amd/Instella-3B-Long-Instruct"
tokenizer = AutoTokenizer.from_pretrained(checkpoint, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(checkpoint, device_map="auto", trust_remote_code=True)
prompt = [{"role": "user", "content": "What are the benefits of open-source AI research?"}]
inputs = tokenizer.apply_chat_template(
prompt,
add_generation_prompt=True,
return_tensors='pt'
)
tokens = model.generate(
inputs.to(model.device),
max_new_tokens=1024,
temperature=0.8,
do_sample=True
)
print(tokenizer.decode(tokens[0], skip_special_tokens=False))
📚 ドキュメント
Instella-Longモデルの概要
Instella-Longは、3月にリリースされたInstellaモデルをベースに、特にInstella - 3B - Instructを継続的に訓練したもので、同じモデルアーキテクチャを採用しています。Instella-Longの訓練は、1. 継続的な事前訓練、2. 教師付き微調整(SFT)、3. 直接嗜好最適化(DPO)の3つの段階に分けられます。
継続的な事前訓練
- 訓練プロセス:私たちはInstella - 3B - Instruct(4Kの文脈長)から2段階の事前訓練を開始しました。
- 段階1:文脈長を4096から65536トークンに拡張し、200億トークンでモデルを訓練しました。私たちはRoPEスケーリング法則に従い、RoPEの基本周波数を10000から514640に引き上げました。
- 段階2:Prolongの研究によると、目標文脈長よりも長い文脈長のデータでモデルを訓練することが有益です。この段階では、最大文脈長262144(目標文脈長128Kの2倍)の200億トークンでモデルを訓練しました。RoPEスケーリング法則に従い、RoPEの基本周波数を3691950に引き上げました。
- データソース:私たちの継続的な事前訓練データは、Prolongが作成したデータ混合セットに由来します。私たちはProlongが整理したテキストデータを使用し、独自のトークナイザーでデータをトークン化しました。継続的な事前訓練の各段階では、長文脈と短文脈のデータ混合セットで訓練を行いました。具体的な詳細は以下の通りです。
訓練段階 | 64K長データ | 256K長データ | 短データ |
---|---|---|---|
段階1 | コードライブラリ(30%)、書籍(30%)、教科書(3%) | - | FineWeb - Edu(10%)、FineWeb(10%)、StackExchange(4%)、ウィキペディア(5%)、ArXiv(3%)、OpenWebMath(5%) |
段階2 | コードライブラリ(10%)、書籍(15%) | コードライブラリ(20%)、書籍(15%)、教科書(2%) | FineWeb - Edu(10%)、FineWeb(10%)、StackExchange(4%)、ウィキペディア(5%)、ArXiv(4%)、OpenWebMath(5%) |
教師付き微調整(SFT)
- 訓練プロセス:長文脈の事前訓練データで継続的に訓練した後、私たちは長文脈の命令データで教師付き微調整を行いました。私たちは10億トークンの短文脈と長文脈の命令データ混合セットでモデルを訓練しました。
- データソース:継続的な事前訓練段階と同様に、私たちは短文脈と長文脈の命令データ混合セットでモデルを訓練し、比率は4:6です。短文脈の命令データには、Ultrachat 200K、OpenMathinstruct - 2、Tülu - 3 Instruction Following、MMLU補助訓練セットを使用しました。長文脈のSFTデータが不足しているため、私たちは合成的な長文脈命令データセットを構築しました。具体的には、継続的な事前訓練データセットの書籍の長文書を使用し、長さが少なくとも8Kトークンの文書を選択し、128Kトークンを超える文書は最大長128Kに切り捨てました。その後、Qwen2.5 - 14B - Instruct - 1Mを教師モデルとして使用し、文書に対して質問と回答のペアを合成生成しました。このプロセスを高速化するために、私たちは文書の一部をランダムに選択して質問と回答の生成を行い、全文書を使用するのではなく、選択した部分の長さは2Kから8Kトークンの間でランダムに設定しました。私たちはNLTK文分割器を使用して文書を文に分割し、選択した部分に完全な文が含まれるようにしました。生成された質問と回答は、長文書の末尾に追加され、完全な1ラウンドの命令追従データサンプルとなります。さらに、短文書を使用して長文脈命令データを生成し、データセットの多様性を高めました。私たちは継続的な事前訓練コーパスのArXivとDolmino - Mix - 1124のDCLMサブセットを使用しました。まず、各短文書に対して上記と同じプロセスで質問と回答のペアを生成しました。その後、異なる短文書を繰り返し連結し、128Kトークンに達するまで続けました。最後の文書を切り捨てないため、連結後の文書は128Kを超える場合があります。最後に、短文書に対応する質問と回答のペアをランダムに選択し、連結後の文書の末尾に追加しました。SFT段階の最終的なデータ混合セットは以下の通りです。
短データ | 長データ |
---|---|
Ultrachat 200K(25%)、OpenMathinstruct - 2(10%)、MMLU補助訓練セット(3%)、Tülu - 3 Instruction Following(2%) | 書籍(44%)、DCLM(10%)、ArXiv(6%) |
直接嗜好最適化(DPO)
- 訓練プロセス:最後の訓練段階では、直接嗜好最適化を使用して人間の嗜好に合わせた訓練を行いました。私たちはInstella - 3B - Instructと同じDPO訓練方法を採用し、同じデータを使用しました。前の訓練段階とは異なり、DPO段階では、最大文脈長2Kの短文データのみで訓練を行いました。他のオープンソースウェイトモデルの研究結果と一致して、短文データのみでDPO訓練を行うことで、長文脈タスクでのモデルの性能を引き続き向上させることができることがわかりました。
- データソース:私たちはOLMo - 2 - 1124 - 7B - Preference - MixデータセットをDPOデータとして使用し、このデータセットには7.6億トークンが含まれています。
シーケンスパラレル
極長入力の訓練をサポートするために、私たちはDeepspeed Ulyssesをベースにシーケンスパラレルを実装しました。シーケンスパラレルは、注意力計算の過程で注意力ヘッドを複数のGPUに分散させ、GPU通信においてリング注意力(Ring - Attention)よりも効率的です。入力長が長いため、私たちは段階2の継続的な事前訓練とSFTでは、4つのGPUを1つのシーケンスパラレルグループとして使用しました。
🔧 技術詳細
評価結果
- 私たちはHelmetでモデルの長文脈性能を評価しました。Helmetは最近リリースされた包括的な長文脈評価ベンチマークで、複数のカテゴリをカバーしています。以前の長文脈ベンチマークと比較して、Helmetは人間の知覚においてより良い一致性を示します。
- Instella - 3B - Long - Instructは、Helmetベンチマークのほとんどのタスクで、Phi - 3.5 - mini - instruct、Gemma - 3 - 4B - it、Qwen2.5 - 3B - Instruct、MiniCPM - 2B - 128kなどのオープンソースウェイトモデルを上回っています。
- 私たちは8K、16K、32Kの文脈長でQwen2.5 - 3B - Instructと比較を行い、Instella - 3B - Long - Instructの平均性能はQwen2.5 - 3B - Instructよりも2.75%高いことがわかりました。
モデル | サイズ | 訓練トークン数(最初から) | 自然問題(RAG) | TriviaQA(RAG) | HotpotQA(RAG) | InfiniteBench QA | InfiniteBench MC | NarrativeQA | NIAH(多値針) | 平均 |
---|---|---|---|---|---|---|---|---|---|---|
Llama - 3.2 - 3B - Instruct | 3.21B | ~9T | 51.8 | 86.2 | 56.4 | 38.7 | 56.0 | 26.0 | 99.2 | 59.19 |
Phi - 3.5 - mini - instruct | 3.82B | - | 41.2 | 78.6 | 48.6 | 24.0 | 55.0 | 27.7 | 87.0 | 51.73 |
gemma - 3 - 4b - it | 4.3B | ~4T | 47.2 | 76.8 | 45.2 | 21.0 | 49.0 | 20.7 | 74.0 | 47.70 |
Qwen2.5 - 3B - Instruct | 3.09B | ~18T | 34.6 | 65.8 | 41.8 | 14.7 | 35.0 | 21.0 | 80.4 | 41.90 |
MiniCPM - 2B - 128k | 2.4B | ~1T | 28.4 | 61.6 | 30.8 | 3.7 | 22.0 | 3.3 | 46.6 | 28.06 |
Instella - 3B - Long - Instruct | 3.11B | ~4T | 43.6 | 73.0 | 51.6 | 30.7 | 54.0 | 32.3 | 84.0 | 52.74 |
表1:Helmetベンチマークでの長文脈評価。NIAHとRAGタスクは、8K、16K、32K、64K、128Kの5つの文脈長で評価され、5つの文脈長の平均が報告されています。InfiniteBench QA、InfiniteBench MC、NarrativeQAは128Kの文脈長で評価されています。InfiniteBenchはHelmetによって再実装されています。
モデル | NIAH(多値針) - 8K | NIAH(多値針) - 16K | NIAH(多値針) - 32K | 自然問題(RAG) - 8K | 自然問題(RAG) - 16K | 自然問題(RAG) - 32K | TriviaQA(RAG) - 8K | TriviaQA(RAG) - 16K | TriviaQA(RAG) - 32K | HotpotQA(RAG) - 8K | HotpotQA(RAG) - 16K | HotpotQA(RAG) - 32K | 平均 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Instella - 3B - Long - Instruct | 98 | 95 | 87 | 53 | 49 | 46 | 79 | 73 | 75 | 59 | 59 | 51 | 68.67 |
Qwen2.5 - 3B - Instruct | 95 | 94 | 95 | 48 | 42 | 39 | 77 | 78 | 74 | 51 | 50 | 48 | 65.92 |
表2:8K、16K、32Kの文脈長でQwen2.5 - 3B - Instructとの比較。
評価指標
- 自然問題、TriviaQA、HotpotQAを含むRAGタスクには、部分文字列完全一致(SubEM)を使用しました。
- NIAHには再現率を、InfiniteBench MCには完全一致を使用しました。
- InfiniteBench QAとNarrativeQAは回答がオープンエンドであるため、私たちはgpt - 4o - miniを使用して、Helmetが提供するプロンプトと指標に基づいて回答と真値を評価しました。
モデル | MMLU | IFEval | MT - Bench | TruthfulQA | Toxigen(↓) | Crows - Pair |
---|---|---|---|---|---|---|
Instella - 3B - Instruct | 58.90 | 71.35 | 7.23 | 55.47 | 57.02 | 58.86 |
Instella - 3B - Long - Instruct | 57.44 | 68.76 | 6.83 | 55.52 | 42.34 | 60.05 |
表3:Instella - 3B - Instructとの短文脈ベンチマーク比較。
短文脈結果
Instella - 3B - Instructと比較すると、Instella - 3B - Long - Instructはいくつかの短文脈ベンチマークで性能が低下していることがわかりました。興味深いことに、TruthfulQAは安定しており、Crows - Pairはわずかに改善しており、一部の責任あるAI指標での向上が示唆されています。Toxigenの低下(57.02から42.34、低いほど良い)は、長文脈バージョンが毒性を回避する能力が向上していることを示しています。私たちは、これらの結果は、より長い文脈長を最適化することと短文脈性能を維持することの間のトレードオフを反映しており、このトレードオフは3Bパラメータ規模では、より大きなモデルよりも顕著である可能性があると推測しています。
訓練データ
段階 | データセット | ライセンス |
---|---|---|
継続的な事前訓練 - 段階1 | https://huggingface.co/datasets/amd/Instella - Long/tree/main/pretrain - phase - 1 | ResearchRAIL |
継続的な事前訓練 - 段階2 | https://huggingface.co/datasets/amd/Instella - Long/tree/main/pretrain - phase - 2 | ResearchRAIL |
SFT | https://huggingface.co/datasets/amd/Instella - Long/tree/main/sft | ResearchRAIL |
DPO | https://huggingface.co/datasets/allenai/olmo - 2 - 1124 - 7b - preference - mix | ODC - BY - 1.0 |
⚠️ 重要提示
訓練データセットの詳細情報(適用されるライセンス条項や使用制限など)は、リンク先のソースで確認できます。
📄 ライセンス
本プロジェクトは他のライセンスを使用しており、詳細はLICENSEファイルを参照してください。
まとめ
Instella-Longモデルのリリースは、オープンソースAIの発展における重要な一歩であり、AMDのハードウェアが言語モデル訓練における能力を示しています。私たちの知る限り、Instella-Longにより、Instellaシリーズは最初の長文脈対応の完全オープンソース言語モデルとなり、オープンソースウェイトモデルと比較しても競争力のある性能を持っています。
Instella-Longモデルのウェイト、訓練設定、データセット、コードを完全にオープンソース化することで、私たちはAIコミュニティの革新と協力を促進することを目指しています。私たちは、透明性、再現性、コミュニティの参加がAI技術の発展に不可欠であると信じています。



