模型简介
模型特点
模型能力
使用案例
🚀 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}
}



