模型概述
模型特點
模型能力
使用案例
🚀 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)。
持續預訓練
- 訓練過程:我們從Instella - 3B - Instruct(4K上下文長度)開始進行兩階段預訓練。
- 數據來源:我們的持續預訓練數據來自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句子分詞器將文檔劃分為句子,以確保所選子部分包含完整的句子。生成的問題和答案被附加到長文檔的末尾,作為一個完整的單輪指令跟隨數據樣本。此外,我們還使用短文檔生成長上下文指令數據,以增加數據集的多樣性。我們使用持續預訓練語料庫中的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中使用四個GPU作為一個序列並行組。
🔧 技術細節
評估結果
- 我們在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五個上下文長度下進行評估,並報告五個上下文長度的平均值。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技術的發展至關重要。



