模型概述
模型特點
模型能力
使用案例
🚀 Instella✨:具備卓越性能的完全開源語言模型
Instella是AMD開發的一系列完全開源的語言模型,擁有30億參數,在AMD Instinct™ MI300X GPU上從頭開始訓練。Instella模型在性能上超越了現有的同規模完全開源模型,並且與Llama-3.2-3B、Gemma-2-2B和Qwen-2.5-3B等最先進的開放權重模型及其指令微調版本相比,也具有競爭力。
通過在Instinct MI300X GPU上從頭開始訓練Instella,我們展示了硬件在處理大規模AI訓練工作負載方面的能力和可擴展性,為AI硬件領域提供了一個可行的選擇。秉承AMD對開源的承諾,我們在此處發佈了與Instella模型相關的所有資源,包括模型權重、詳細的訓練配置、數據集和代碼,以促進AI社區的協作、復現和創新,從而加速技術進步。
🚀 快速開始
安裝
首先,根據你的操作系統的具體說明安裝PyTorch。對於AMD GPU,你也可以從rocm/pytorch Docker鏡像開始。
要從源代碼安裝(推薦用於訓練/微調),請運行以下命令:
git clone https://github.com/AMD-AIG-AIMA/Instella.git
cd Instella
# 在MI300X上安裝Flash-Attention
GPU_ARCH=gfx942 MAX_JOBS=$(nproc) pip install git+https://github.com/Dao-AILab/flash-attention.git -v
# 安裝其他依賴項
pip install -e .[all]
使用示例
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "amd/Instella-3B-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))
在TRL中進行對話
你還可以使用TRL CLI在終端中與模型進行對話:
pip install trl
trl chat --model_name_or_path amd/Instella-3B-Instruct --trust_remote_code --max_new_tokens 1024
# <root>:
# which is bigger 9.8 or 9.11?
# <amd/Instella-3B-Instruct>:
# 9.8 is bigger than 9.11. The difference between the two numbers is 0.69 (9.8 - 9.11 = 0.69), which indicates that 9.8 is 0.69 units larger than 9.11.
✨ 主要特性
- 全新發布Instella:這是一系列由AMD開發的30億參數語言模型,在128個Instinct MI300X GPU上從頭開始訓練。
- 性能顯著提升:Instella模型在可比規模的完全開源語言模型中表現出色(如圖1所示),縮小了完全開源模型與開放權重模型之間的性能差距,與最先進的開放權重模型及其指令微調版本相比具有競爭力。
- 完全開源且可訪問:完全開源發佈模型權重、訓練超參數、數據集和代碼,促進AI社區的創新和協作。
- 高效訓練技術:在AMD ROCm軟件棧的支持下,Instella採用了高效的訓練技術,如FlashAttention - 2、Torch Compile和全分片數據並行(FSDP) 混合分片,以在大型集群上擴展模型訓練。
📦 Instella模型
在本次發佈中,我們推出了以下Instella模型:
模型 | 階段 | 訓練數據(令牌) | 描述 |
---|---|---|---|
Instella-3B-Stage1 | 預訓練(階段1) | 4.065萬億 | 第一階段預訓練,以培養自然語言能力。 |
Instella-3B | 預訓練(階段2) | 575.75億 | 第二階段預訓練,以進一步增強問題解決能力。 |
Instella-3B-SFT | 監督微調(SFT) | 89.02億(3個週期) | 監督微調,以實現指令跟隨能力。 |
Instella-3B-Instruct | 直接偏好優化(DPO) | 7.6億 | 通過直接偏好優化與人類偏好對齊,增強聊天能力。 |
總計: | 4.15萬億 |
表1: Instella模型和訓練階段。
Instella模型是基於自迴歸Transformer架構的純文本語言模型,擁有30億參數。在架構上,Instella包含36個解碼器層,每層有32個注意力頭。這些模型支持最長4096個令牌的序列長度,使用OLMo分詞器,詞彙量約為50000個令牌。在預訓練和微調過程中,我們使用了FlashAttention - 2、Torch Compile和bfloat16混合精度訓練,以減少內存使用,提高計算速度並優化資源利用率。為了平衡集群內節點間的內存效率和節點內的通信開銷,我們採用了全分片數據並行(FSDP)混合分片,將模型參數、梯度和優化器狀態在節點內分片,並在節點間複製。
我們的訓練管道基於開源的OLMo代碼庫,並針對我們的硬件和模型架構進行了調整和優化。預訓練時,我們使用了分佈在16個節點上的總共128個Instinct MI300X GPU,每個節點有8個Instinct MI300X GPU。我們使用OLMES、FastChat MT - Bench和Alpaca中的標準任務對模型和基線進行了評估。有關架構、訓練管道/超參數和評估結果的更多詳細信息,請參考我們的博客、Hugging Face模型卡片和Github倉庫。
🔧 技術細節
訓練管道
Instella模型的訓練包括四個階段,每個階段逐步增強模型的能力,從基本的自然語言理解到指令跟隨和與人類偏好對齊。
模型概述
階段 | 模型 | 訓練令牌 | 層數 | 注意力頭 | 模型隱藏大小 | MLP隱藏大小 | 上下文長度 | RoPE Theta |
---|---|---|---|---|---|---|---|---|
預訓練 | Instella-3B-stage1 | 4.065T | 36 | 32 | 2560 | 13824 | 4096 | 10,000 |
預訓練 | Instella-3B | 57.575B | 36 | 32 | 2560 | 13824 | 4096 | 10,000 |
監督微調(SFT) | Instella-3B-SFT | 8.902B(x3) | 36 | 32 | 2560 | 13824 | 4096 | 10,000 |
監督微調+直接偏好優化(SFT+DPO) | Instella-3B-instruct | 760M | 36 | 32 | 2560 | 13824 | 4096 | 10,000 |
超參數
階段 | 優化器 | 峰值學習率 | 學習率調度器 | Alpha F | 預熱(步數) | 權重衰減 | 衰減範數和偏差 | 衰減嵌入 | 批量大小(令牌) | 週期數 |
---|---|---|---|---|---|---|---|---|---|---|
預訓練階段1 | AdamW(0.9,0.95) | 4.0e - 4 | cosine_with_warmup | 0.1 | 2000 | 0.1 | 是 | 是 | 4M | 1 |
預訓練階段2 | AdamW(0.9,0.95) | 4.0e - 5 | cosine_with_warmup | 0.0 | 0 | 0.1 | 是 | 是 | 4M | 1 |
監督微調(SFT) | AdamW(0.9,0.95) | 1.0e - 5 | linear_with_warmup | 0.001 | 500 | 0.1 | 是 | 是 | 0.5M | 3 |
直接偏好優化(DPO) | AdamW(0.9,0.95) | 5.0e - 7 | linear | -- | 10% | 0.1 | -- | -- | 0.25M | 1 |
📚 詳細文檔
訓練數據
⚠️ 重要提示
有關訓練數據集的更多信息,包括適用的許可條款和使用限制,可在鏈接的源位置找到。
結果
預訓練
模型 | 大小 | 訓練令牌 | 平均 | ARC挑戰 | ARC簡單 | BoolQ | Hellaswag | PiQA | SciQ | Winnograde | OpenBookQA | MMLU | BBH(3次射擊) | GSM8k(8次射擊) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
開放權重模型 | ||||||||||||||
Gemma-2-2B | 2.61B | ~2T | 59.34 | 39.46 | 59.30 | 74.50 | 70.50 | 76.40 | 96.60 | 69.80 | 44.80 | 53.28 | 40.75 | 27.37 |
Llama-3.2-3B | 3.21B | ~9T | 62.51 | 47.16 | 64.91 | 74.80 | 73.10 | 75.90 | 95.30 | 70.30 | 51.20 | 57.81 | 47.00 | 30.10 |
Qwen2.5-3B | 3.09B | ~18T | 68.30 | 51.51 | 67.19 | 79.10 | 72.10 | 77.40 | 95.50 | 69.30 | 51.40 | 67.22 | 56.69 | 63.84 |
完全開源模型 | ||||||||||||||
Pythia-2.8b | 2.91B | 300B | 49.83 | 40.47 | 60.70 | 64.80 | 60.10 | 72.50 | 89.70 | 60.80 | 42.60 | 26.09 | 27.69 | 2.73 |
GPTNeo-2.7B | 2.72B | ~420B | 47.96 | 38.46 | 54.56 | 62.70 | 55.20 | 70.80 | 88.00 | 58.30 | 40.80 | 27.83 | 27.25 | 3.71 |
OpenELM-3B | 3.04B | ~1.5T | 52.28 | 37.46 | 58.42 | 68.60 | 71.70 | 75.60 | 92.50 | 65.40 | 46.40 | 26.69 | 29.40 | 2.96 |
StableLM-3B-4E1T | 2.8B | ~4T | 58.51 | 44.82 | 67.02 | 75.40 | 74.20 | 78.40 | 93.40 | 68.40 | 48.60 | 45.19 | 37.33 | 10.84 |
Instella-3B-Stage1 | 3.11B | ~4T | 61.33 | 53.85 | 73.16 | 78.70 | 74.20 | 77.50 | 94.90 | 71.20 | 51.40 | 54.69 | 34.30 | 10.77 |
Instella-3B | 3.11B | ~4T+60B | 66.59 | 52.84 | 70.53 | 76.50 | 75.00 | 77.80 | 96.40 | 73.10 | 52.40 | 58.31 | 39.74 | 59.82 |
- 性能超越同類:Instella-3B-Stage1和Instella-3B模型在所有基準測試中(除了PiQA)均顯著優於其他完全開源模型。我們最終的預訓練檢查點Instella-3B平均比現有的表現最佳的完全開源預訓練模型高出8.08%,在
ARC挑戰 [+8.02%]、ARC簡單 [+3.51%]、Winnograde [+4.7%]、OpenBookQA [+3.88%]、MMLU [+13.12%] 和GSM8K [+48.98%]
方面有顯著改進。 - 第二階段預訓練提升顯著:第二階段預訓練使整體平均性能相對於第一階段提高了5.26%,顯著縮小了Instella-3B模型與閉源模型之間的性能差距,平均比Llama-3.2-3B高出4.08%(
ARC挑戰 [+5.69%]、ARC簡單 [+5.61%] 和GSM8k [+29.72%]
),平均比Gemma-2-2B高出7.25%(ARC挑戰 [+13.38%]、ARC簡單 [+11.23%]、Hellaswag [+4.5%]、OpenBookQA [+7.6%]、MMLU [+5.03%] 和GSM8k [+32.45%]
),並且在大多數基準測試中與Qwen-2.5-3B具有競爭力。 - 多階段訓練效果顯著:多階段預訓練結合多樣化和高質量的數據顯著增強了Instella-3B的能力,使其成為同規模語言模型領域中具有競爭力的開源替代方案。
指令微調結果
模型 | 大小 | 訓練令牌 | 平均 | MMLU | TruthfulQA | BBH | GPQA | GSM8K | Minerva MATH | IFEval | AlpacaEval 2 | MT - Bench |
---|---|---|---|---|---|---|---|---|---|---|---|---|
開放權重模型 | ||||||||||||
Gemma-2-2B-Instruct | 2.61B | ~2T | 39.04 | 58.35 | 55.76 | 42.96 | 25.22 | 53.45 | 22.48 | 55.64 | 29.41 | 8.07 |
Llama-3.2-3B-Instruct | 3.21B | ~9T | 47.53 | 61.50 | 50.23 | 61.50 | 29.69 | 77.03 | 46.00 | 75.42 | 19.31 | 7.13 |
Qwen2.5-3B-Instruct | 3.09B | ~18T | 48.72 | 66.90 | 57.16 | 57.29 | 28.13 | 75.97 | 60.42 | 62.48 | 22.12 | 8.00 |
完全開源模型 | ||||||||||||
StableLM-zephyr-3B | 2.8B | 4T | 30.50 | 45.10 | 47.90 | 39.32 | 25.67 | 58.38 | 10.38 | 34.20 | 7.51 | 6.04 |
OpenELM-3B-Instruct | 3.04B | ~1.5T | 14.11 | 27.36 | 38.08 | 24.24 | 18.08 | 1.59 | 0.38 | 16.08 | 0.21 | 1.00 |
Instella-3B-SFT | 3.11B | ~4T | 42.05 | 58.76 | 52.49 | 46.00 | 28.13 | 71.72 | 40.50 | 66.17 | 7.58 | 7.07 |
Instella-3B-Instruct | 3.11B | ~4T | 44.87 | 58.90 | 55.47 | 46.75 | 30.13 | 73.92 | 42.46 | 71.35 | 17.59 | 7.23 |
- 顯著超越同類開源模型:Instella-3B-Instruct模型在所有評估的基準測試中始終顯著優於其他完全開源模型,平均得分比下一個表現最佳的完全開源指令微調模型高出14.37%。在所有聊天基準測試中都有顯著優勢(
MMLU [+13%]、TruthfulQA [7.57%]、BBH [7.43%]、GPQA [+4.46%]、IFEval [+37.15]、Alpaca 2 [10.08%] 和MT - Bench [1.2%]
)。 - 縮小與開放權重模型差距:Instella-3B-Instruct縮小了與領先的開放權重模型之間的性能差距。Instella-3B-Instruct的表現與現有的最先進的開放權重指令微調模型相當或略勝一籌,如Llama-3.2-3B-Instruct(
TruthfulQA [+5.24%]、GPQA [0.45%] 和MT - Bench [+0.1%]
)和Qwen2.5-3B-Instruct(GPQA [+2.01%] 和IFEval [+8.87%]
),同時平均得分比Gemma-2-2B-Instruct高出5.83%(MMLU [+0.55%]、BBH [+3.79]、GPQA [+4.91]、GSM8k [+20.47]、Minerva MATH [+19.98] 和IFEval [+15.17%]
)。 - 擅長指令跟隨和多輪問答:總體而言,Instella-3B-Instruct在指令跟隨任務和多輪問答任務(如TruthfulQA、GPQA、IFEval和MT - Bench)中表現出色,在其他知識回憶和數學基準測試中與現有的最先進的開放權重模型相比也具有很強的競爭力,同時訓練所需的令牌數量顯著減少。
結論
Instella系列模型的發佈是推進開源AI的重要一步,展示了AMD硬件在大規模語言模型訓練中的能力。Instella系列的30億參數模型在關鍵基準測試中顯著優於現有的完全開源同規模模型,並且與同類型的開放權重模型具有競爭力,這得益於高質量的數據混合選擇、多階段訓練管道以及在大規模訓練中使用高性能的Instinct MI300X GPU。
通過完全開源Instella模型,包括權重、訓練配置、數據集和代碼,我們旨在促進AI社區的創新和協作。我們相信透明度、可重複性和可訪問性是AI研究和開發進步的關鍵驅動力。我們邀請開發者、研究人員和AI愛好者探索Instella,為其持續改進做出貢獻,並與我們一起突破語言模型的極限。
我們將繼續在多個維度上增強模型,包括上下文長度、推理能力和多模態能力。此外,我們將擴大模型和數據集的規模,同時探索不同的架構方法。請關注有關Instella語言模型系列、其功能和能力的更多精彩博客!
額外資源
Hugging Face模型卡片
- 預訓練模型:
- Instella-3B-Stage1:amd/Instella-3B-Stage1,第一階段預訓練檢查點。
- Instella-3B:amd/Instella-3B,最終預訓練檢查點。
- 指令微調模型:
- Instella-3B-SFT:amd/Instella-3B-SFT,監督微調檢查點。
- Instella-3B-Instruct:amd/Instella-3B-Instruct,最終指令微調檢查點。
數據集
第二階段預訓練GSM8k合成數據集:amd/Instella-GSM8K-synthetic
- 該數據集由兩個分割組成:
train
和train_119K
。 - 對於Instella-3B模型的第二階段預訓練,我們使用了
train_119K
分割,它是較大的train
分割的子集。
代碼
請參考以下博客,瞭解如何在AMD GPU上使用這些技術:
- 在支持ROCm™的AMD GPU上使用PyTorch全分片數據並行(FSDP)
- 在AMD GPU上使用Flash Attention加速大語言模型
- 在支持ROCm™的AMD GPU上使用torch.compile加速PyTorch模型
- 推出首款AMD 10億參數語言模型:AMD OLMo
偏差、風險和限制
- 這些模型僅用於研究目的,不適用於需要高度事實性、安全關鍵情況、健康或醫療應用、生成虛假信息、促進有毒對話的用例。
- 模型檢查點的提供沒有任何安全保證。用戶必須根據各自的用例進行全面評估並實施安全過濾機制。
- 可能會通過提示使模型生成可能事實不準確、有害、暴力、有毒、有偏見或以其他方式令人反感的內容。即使提示並非有意產生此類輸出,也可能會生成此類內容。因此,建議用戶在使用模型時注意這一點,並謹慎和負責任地思考。
- 模型的多語言能力尚未經過測試,因此可能會誤解不同語言並生成錯誤的響應。
📄 許可證
- Instella-3B模型根據ResearchRAIL許可證用於學術和研究目的。
- 用於第二階段預訓練的amd/Instella-GSM8K-synthetic數據集是使用Qwen2.5-72B-Instruct構建的,並根據ResearchRAIL許可證用於學術和研究目的。有關更多信息,請參考許可證和通知文件。
- 有關更多信息,請參考許可證和通知文件。
引用
如果您使用了我們的Instella-3B模型,請引用以下內容:
@misc{Instella,
title = {Instella: Fully Open Language Models with Stellar Performance},
url = {https://huggingface.co/amd/Instella-3B},
author = {Jiang Liu, Jialian Wu, Xiaodong Yu, Prakamya Mishra, Sudhanshu Ranjan, Zicheng Liu, Chaitanya Manem, Yusheng Su, Pratik Prabhanjan Brahma, Gowtham Ramesh, Ximeng Sun, Ze Wang, Emad Barsoum},
month = {March},
year = {2025}
}



