Instella✨: 全面开放的卓越性能语言模型
AMD高兴地宣布推出Instella系列模型——这是一套基于AMD Instinct™ MI300X GPU从头训练的、完全开源的先进30亿参数语言模型家族。Instella模型性能超越现有同规模全开源模型,在与Llama-3.2-3B、Gemma-2-2B及Qwen-2.5-3B等前沿开源权重模型(包括其指令微调版本)的对比中展现出极具竞争力的表现。
图1:预训练模型与指令微调模型的 Pareto 前沿——预训练词元数量与平均性能的关系曲线
通过在Instinct MI300X GPU上从头开始训练Instella,我们彰显了自身硬件在处理高要求大规模AI训练工作负载时的能力与扩展性,为AI硬件领域提供了可行的替代方案。秉承AMD对开源生态的承诺,我们将在此公开Instella模型相关所有成果,包括模型权重、详细训练配置、数据集及代码,以此推动AI社区开展协作、复现与创新,从而加速技术进步。
要点概览
- 发布Instella模型系列:由AMD开发的30亿参数语言模型,基于128块Instinct MI300X GPU从头训练完成。
- 性能全面超越同规模开源模型(图1所示),在与顶尖开源权重模型的对比中展现出竞争力,弥合了完全开源模型与开源权重模型之间的性能差距。
- 完全开放共享:包括模型权重、训练超参数、数据集和代码在内的全套资源开源,推动AI社区创新协作。
- 采用AMD ROCm软件栈支持,结合FlashAttention-2高效注意力机制、Torch Compile编译优化及混合分片的全共享数据并行(FSDP)等先进技术,实现大规模集群的高效模型训练。
Instella模型系列
本次发布包含以下模型:
Model | Stage | Training Data (Tokens) | Description |
---|---|---|---|
Instella-3B-Stage1 | Pre-training (Stage 1) | 4.065 Trillion | 第一阶段预训练以掌握自然语言的熟练运用。 |
Instella-3B | Pre-training (Stage 2) | 57.575 Billion | 第二阶段预训练进一步提升解决问题的能力。 |
Instella-3B-SFT | SFT | 8.902 Billion (x3 epochs) | 监督式微调(SFT)以实现指令跟随能力。 |
Instella-3B-Instruct | DPO | 760 Million | 对齐人类偏好并通过直接偏好优化(DPO)强化聊天能力。 |
Total: | 4.15 Trillion |
表1:Instella模型与训练阶段
Instella模型为纯文本、自回归型基于Transformer架构的语言模型,参数规模达30亿。该模型采用36层解码器结构,每层配备32个注意力头,支持最大4096个标记的序列长度,使用OLMo分词器构建约5万标记的词汇表。在预训练与微调阶段,我们采用FlashAttention-2注意力优化、Torch编译技术及bfloat16混合精度训练来降低内存占用,从而实现计算加速与资源最优配置。为平衡集群节点间内存效率与节点内通信开销,我们应用混合分片的全共享数据并行策略(FSDP),将模型参数、梯度和优化器状态在节点内分片,同时在节点间复制。
训练流程基于开源的OLMo代码库,针对我们的硬件与模型架构进行了适配优化。预训练阶段共使用128块Instinct MI300X GPU,分布于16个节点(每节点8块GPU)。模型与基线测试通过OLMES基准、FastChat MT-Bench和Alpaca评估完成。更多架构细节、训练流程/超参数及评估结果请参阅我们的技术博客、Hugging Face模型页及GitHub代码库。
训练流程
Instella模型的训练包含四个阶段,每个阶段逐步提升模型能力——从基础的自然语言理解到指令遵循,最终实现对人类偏好的对齐。
模型概要
Stage | Model | Training Tokens | Layers | Attention Heads | Model Hidden Size | MLP Hidden Size | Context Length | RoPE Theta |
---|---|---|---|---|---|---|---|---|
Pre-training | Instella-3B-stage1 | 4.065T | 36 | 32 | 2560 | 13824 | 4096 | 10,000 |
Pre-training | 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 |
Hyparparameter
Stage | Optimizer | Peak LR | LR Scheduler | Alpha F | Warmup (steps) | Weight Decay | Decay Norm & Bias | Decay Embedding | Batch Size (Tokens) | Epochs |
---|---|---|---|---|---|---|---|---|---|---|
Pretraining Stage 1 | AdamW(0.9,0.95) | 4.0e-4 | cosine_with_warmup | 0.1 | 2000 | 0.1 | True | True | 4M | 1 |
Pretraining Stage 2 | AdamW(0.9,0.95) | 4.0e-5 | cosine_with_warmup | 0.0 | 0 | 0.1 | True | True | 4M | 1 |
SFT | AdamW(0.9,0.95) | 1.0e-5 | linear_with_warmup | 0.001 | 500 | 0.1 | True | True | 0.5M | 3 |
DPO | AdamW(0.9,0.95) | 5.0e-7 | linear | – | 10% | 0.1 | – | – | 0.25M | 1 |
入门指南
安装步骤
首先,根据您操作系统的特定说明安装PyTorch。对于AMD显卡用户,也可以选择使用rocm/pytorch的Docker镜像开始。
若要从源代码安装(推荐用于训练/微调),请运行:
git clone https://github.com/AMD-AIG-AIMA/Instella.git
cd Instella
# install Flash-Attention on MI300X
GPU_ARCH=gfx942 MAX_JOBS=$(nproc) pip install git+https://github.com/Dao-AILab/flash-attention.git -v
# install other dependencies
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.
结果
预训练
表示次优性能。 下划线 表2:预训练模型在标准基准测试中的性能。加粗表示最佳性能,Models | Size | Training Tokens | Avg | ARC Challenge | ARC Easy | BoolQ | Hellaswag | PiQA | SciQ | Winnograde | OpenBookQA | MMLU | BBH (3-shot) | GSM8k (8-shot) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Open Weight Models | ||||||||||||||
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 |
Fully Open Models | ||||||||||||||
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%(
+5.69% [ARC挑战赛]、+5.61% [ARC简易版]、+29.72% [GSM8k]
),平均超越Gemma-2-2B模型⬆️7.25%(+13.38% [ARC挑战赛]、+11.23% [ARC简易版]、+4.5% [Hellaswag]、+7.6% [OpenBookQA]、+5.03% [MMLU]、+32.45% [GSM8k]
),且在多数基准测试中与Qwen-2.5-3B表现相当。 - 采用多样化高质量数据进行的多阶段预训练显著增强了Instella-3B的能力,使其成为同规模语言模型中具有竞争力的开源替代方案。
指令调优结果
表示次优性能。 下划线 表2:指令模型在标准基准测试中的表现。加粗表示最佳性能,Models | Size | Training Tokens | Avg | MMLU | TruthfulQA | BBH | GPQA | GSM8K | Minerva MATH | IFEval | AlpacaEval 2 | MT-Bench |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Open Weight Models | ||||||||||||
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 |
Fully Open Models | ||||||||||||
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缩小了与领先开源权重模型的性能差距。 其表现与现有最先进开源权重指令模型持平或略胜一筹,例如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等多轮QA任务)中表现优异,同时在知识检索和数学基准测试中与现有最先进开源权重模型相比极具竞争力,而其训练数据量显著更少。
训练数据
[!注意]
有关训练数据集的更多信息(包括适用的许可条款和使用限制)可在链接的源位置查阅。
结论
Instella系列模型的发布标志着开源人工智能发展迈出了重要一步,同时展现了AMD硬件在大规模语言模型训练中的强大能力。Instella家族的30亿参数模型在关键基准测试中显著优于当前同规模的全开源模型,并与同类开源权重模型性能相当。我们将这一成果归功于高质量的数据混合选择、多阶段训练流程以及采用高性能Instinct MI300X GPU进行大规模训练。
通过完全开源Instella模型(包括权重、训练配置、数据集和代码),我们旨在推动人工智能社区内的创新与合作。我们相信透明度、可复现性和可访问性是人工智能研发进步的关键驱动力。诚邀开发者、研究人员和AI爱好者探索Instella模型,共同推动其持续改进,与我们携手拓展语言模型的潜力边界。
我们将持续从上下文长度、推理能力和多模态支持等多个维度增强模型性能,同时扩大模型与数据集的规模,并探索多样化架构方案。敬请关注后续关于Instella语言模型家族特性与能力的精彩博客!
其他资源
Hugging Face Model Cards
- Pre-trained models:
- Instella-3B-Stage1: amd/Instella-3B-Stage1, First stage pre-training checkpoint.
- Instella-3B: amd/Instella-3B, Final pre-training checkpoint.
- Instruction-tuned models:
- Instella-3B-SFT: amd/Instella-3B-SFT, Supervised fine-tuned checkpoint.
- Instella-3B-Instruct: amd/Instella-3B-Instruct, Final Instruction-tuned checkpoint.
数据集
第二阶段预训练GSM8k合成数据集:amd/Instella-GSM8K-synthetic
- 该数据集包含两个拆分:
train
和train_119K
- 在Instella-3B模型的第二阶段预训练中,我们使用了
train_119K
拆分,这是更大规模train
拆分的一个子集
Code
Please refer to the following blogs to get started with using these techniques on AMD GPUs:
- PyTorch Fully Sharded Data Parallel (FSDP) on AMD GPUs with ROCm™
- Accelerating Large Language Models with Flash Attention on AMD GPUs
- Accelerate PyTorch Models using torch.compile on AMD GPUs with ROCm™
- Introducing the First AMD 1B Language Models: AMD OLMo
偏差、风险和限制
- 发布的模型仅供研究之用,不适用于要求高度真实性的用例、安全关键情况、健康或医疗应用、生成虚假信息、促进有毒对话。
- 模型检查点仅供访问,不做任何安全承诺。用户必须根据各自的使用情况进行全面评估并实施安全过滤机制。
- 可能会促使模型生成与事实不符、有害、暴力、有毒、有偏见或其他令人反感的内容。这些内容也可能由无意生成此类输出的提示生成。因此,请用户注意这一点,并在使用模型时保持谨慎和负责任的态度。
- 模型的多语言能力尚未经过测试,因此可能会误解不同语言并产生错误的回复。