模型简介
模型特点
模型能力
使用案例
license: other license_link: LICENSE pipeline_tag: text-generation library_name: transformers
Instella✨:性能卓越的完全开源语言模型
AMD很高兴推出Instella系列模型——这是一组完全开源的先进30亿参数语言模型(LM),基于AMD Instinct™ MI300X GPU从头训练而成。Instella模型在性能上超越了现有同规模的全开源模型,并与当前顶尖的开源权重模型(如Llama-3.2-3B、Gemma-2-2B和Qwen-2.5-3B)及其指令调优版本表现相当。

通过在Instinct MI300X GPU上从头训练Instella,我们展示了AMD硬件在处理高要求大规模AI训练工作负载时的卓越能力和可扩展性,为AI硬件领域提供了可靠选择。秉承AMD对开源的一贯承诺,我们完整公开了Instella模型的所有相关资源见附加资源,包括模型权重、详细训练配置、数据集和代码,以促进AI社区的协作、复现与创新,共同推动技术进步。
核心亮点
- 推出Instella:由AMD开发的30亿参数语言模型系列,基于128块Instinct MI300X GPU从头训练。
- 显著超越现有全开源模型(图1):在相近规模下性能优势明显,同时通过与顶尖开源权重模型及其指令调优版本的性能对标,弥合了全开源与开源权重模型间的差距。
- 完全开放可获取:完整开源模型权重、训练超参数、数据集和代码,推动AI社区创新协作。
- 基于AMD ROCm软件栈支持,采用FlashAttention-2、Torch Compile和混合分片的完全分片数据并行(FSDP)等高效训练技术,实现大规模集群上的模型训练扩展。
Instella模型系列
本次发布包含以下Instella模型:
模型 | 阶段 | 训练数据(Token) | 描述 |
---|---|---|---|
Instella-3B-Stage1 | 预训练(第一阶段) | 4.065万亿 | 第一阶段预训练,建立自然语言理解基础能力。 |
Instella-3B | 预训练(第二阶段) | 575.75亿 | 第二阶段预训练,强化问题解决能力。 |
Instella-3B-SFT | 监督微调 | 89.02亿(3轮迭代) | 监督微调(SFT)赋予指令跟随能力。 |
Instella-3B-Instruct | DPO对齐 | 7.6亿 | 通过直接偏好优化(DPO)对齐人类偏好,增强对话能力。 |
总计: | 4.15万亿 |
表1:Instella模型及训练阶段概览。
Instella模型为纯文本自回归Transformer架构,参数量30亿。模型结构包含36层解码器,每层配备32个注意力头,支持最大4,096 token的上下文长度,使用OLMo分词器构建约5万token的词表。在预训练和微调阶段,我们采用FlashAttention-2、Torch Compile和bfloat16混合精度训练降低显存占用,实现计算加速与资源优化。为平衡集群内节点间内存效率与节点内通信开销,我们使用混合分片的完全分片数据并行(FSDP),将模型参数、梯度和优化器状态在节点内分片,跨节点复制。
训练流程基于开源OLMo代码库适配优化,预训练阶段使用16个节点(每节点8块)共128块Instinct MI300X GPU。模型评估采用OLMES、FastChat MT-Bench和Alpaca标准任务集。更多架构细节、训练流程/超参数及评估结果请参阅我们的博客、Hugging Face模型卡和GitHub仓库。
训练流程
Instella模型的训练包含四个阶段,逐步从基础自然语言理解能力提升至指令跟随及人类偏好对齐:
模型摘要
阶段 | 模型 | 训练Token数 | 层数 | 注意力头数 | 隐藏层维度 | MLP维度 | 上下文长度 | RoPE Theta |
---|---|---|---|---|---|---|---|---|
预训练 | Instella-3B-stage1 | 4.065万亿 | 36 | 32 | 2560 | 13824 | 4096 | 10,000 |
预训练 | Instella-3B | 575.75亿 | 36 | 32 | 2560 | 13824 | 4096 | 10,000 |
监督微调 | Instella-3B-SFT | 89.02亿(3轮) | 36 | 32 | 2560 | 13824 | 4096 | 10,000 |
SFT+DPO | Instella-3B-instruct | 7.6亿 | 36 | 32 | 2560 | 13824 | 4096 | 10,000 |
超参数配置
阶段 | 优化器 | 峰值学习率 | 学习率调度器 | Alpha F | 预热步数 | 权重衰减 | 归一化&偏置衰减 | 嵌入层衰减 | 批次大小(Token) | 训练轮数 |
---|---|---|---|---|---|---|---|---|---|---|
预训练第一阶段 | AdamW(0.9,0.95) | 4.0e-4 | 余弦预热 | 0.1 | 2000 | 0.1 | 是 | 是 | 400万 | 1 |
预训练第二阶段 | AdamW(0.9,0.95) | 4.0e-5 | 余弦预热 | 0.0 | 0 | 0.1 | 是 | 是 | 400万 | 1 |
监督微调 | AdamW(0.9,0.95) | 1.0e-5 | 线性预热 | 0.001 | 500 | 0.1 | 是 | 是 | 50万 | 3 |
DPO对齐 | AdamW(0.9,0.95) | 5.0e-7 | 线性 | -- | 10% | 0.1 | -- | -- | 25万 | 1 |
快速开始
安装指南
首先根据操作系统安装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": "开源AI研究有哪些优势?"}]
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命令行与模型交互:
pip install trl
trl chat --model_name_or_path amd/Instella-3B-Instruct --trust_remote_code --max_new_tokens 1024
# <root>:
# 9.8和9.11哪个更大?
# <amd/Instella-3B-Instruct>:
# 9.8比9.11大0.69个单位(9.8 - 9.11 = 0.69),这表明9.8比9.11大0.69。