【免费下载链接】HyLo-Llama-6MLA22GDN-8K-SFT
HyLo-Llama-6MLA22GDN-8K-SFT 是 AMD 开源的混合架构长上下文大模型:它把 Llama-3.2-3B-Instruct "改造"成 6 层 MLA + 22 层 Gated DeltaNet 的混合结构,KV cache 只占基础模型的 2.0%,并在 8,192 tokens(8K)上下文下保持精度。本文完整拆解它的两阶段训练配方:第一阶段用 Enhanced-ILD 把新增层"对齐"回基础模型,第二阶段用 Llama-3.1-8B-Instruct 做教师模型,完成 8K 长上下文蒸馏 SFT。📌
一、这个模型做了什么?先看懂 HyLo 混合架构
传统做法是"从零预训练一个混合模型",代价极高。HyLo 的思路是upcycling(升级再造):拿一个现成的 Transformer,把每一层改造成两种类型之一:
| 层类型 | 数量 | 工作方式 | KV cache 贡献 |
|---|---|---|---|
| MLA 层(Multi-head Latent Attention) | 6 层 | 保留注意力,但只缓存低秩潜变量(kv_lora_rank=128),不再缓存完整的 K/V | 少量 |
| Gated DeltaNet 层 | 22 层 | 线性注意力块,维护固定大小的循环状态 | 零 |
两层类型加起来,总 KV cache 被压到基础模型的2.0%——这就是长上下文推理省显存的关键。
⚠️ 注意:层的摆放不是固定间隔,而是按"基础模型在哪一层最不能丢完整注意力"来安排。MLA 层位于索引[0, 5, 10, 16, 21, 26],完整布局记录在 hybrid_config.json 中;而 config.json 只是保留基础模型配置供参考。
模型速览
| 项目 | 值 |
|---|---|
| 基础模型 | Llama-3.2-3B-Instruct(28 层) |
| 蒸馏教师 | Llama-3.1-8B-Instruct |
| 层结构 | 6 MLA + 22 Gated DeltaNet |
| 参数量 | 4.27B |
| KV cache | 基础模型的 2.0% |
| 训练上下文 | 8,192 tokens(YaRN factor 4.0,从 2,048 扩展) |
| 训练配方 | Enhanced-ILD → 长上下文蒸馏 SFT |
二、两阶段训练配方全拆解 🧪
这是全文的核心。整个配方可以概括为:先用"逐层对齐"救活新结构,再用"教师蒸馏"拉长上下文。
2.1 第一阶段:Enhanced-ILD —— 先把"新零件"对齐
结构改造之后,MLA 和 Gated DeltaNet 这些"新零件"是重新初始化的,它们的内部表示和基础模型完全对不上——如果直接开训,损失会大得无法收敛。
Enhanced-ILD(隐式逐层蒸馏)做的事情是:逐层(layer-wise)让新初始化的 MLA / 线性块去逼近基础模型对应位置的内部表示,相当于给模型做一次"接骨手术",让它在新结构下先恢复基础模型的"手感"。
| 超参数 | 第一阶段取值 |
|---|---|
| 上下文长度 | 2,048(基础窗口,不拉长) |
| 学习率 | 2e-4 |
| 数据 | 只用 SFT 混合数据的20% |
💡 细节用意:第一阶段刻意用短上下文 + 高学习率 + 少数据,目标是快速对齐表示,而不是学任务本身。
2.2 第二阶段:8K 长上下文蒸馏 SFT —— 教师模型全程带飞
结构对齐之后,进入真正的目标训练:在8,192 tokens上下文长度下,端到端地用教师模型 Llama-3.1-8B-Instruct 做蒸馏。
损失函数是纯蒸馏:KL 散度度量学生与教师下一 token 分布的差异,kl_weight = 1.0、ce_weight = 0.0——即完全不直接对文本标签算交叉熵,学生"跟教师走"。
| 超参数 | 第二阶段取值 |
|---|---|
| 上下文长度 | 8,192 tokens |
| 学习率 | 4e-5(比第一阶段低 5 倍,进入精调) |
| 数据 | 完整 SFT 混合 |
| 全局 batch | 16 条序列 |
| 训练轮数 | 1 epoch |
| 调度 | cosine,warmup 比例 0.01 |
| 精度 | bfloat16 混合精度 |
| 硬件 | 8× AMD Instinct MI300X,FSDP |
🔥 一个工程亮点:蒸馏时用了融合 KL kernel,避免把完整 logit 张量显式落显存,在 8K 长序列 + 大词表(128K)场景下省下了大量显存——长上下文蒸馏的常见痛点被直接绕开。
2.3 训练数据混合
第二阶段使用了 5 个公开数据集的混合(AMD 在训练前做了子集筛选、按 chat 模板重排、并针对评测集做了去污染处理):
| 数据集 | 许可证 |
|---|---|
| JunxiongWang/sftdatasetv3 | apache-2.0 |
| nvidia/OpenMathInstruct-2 | cc-by-4.0 |
| open-thoughts/OpenThoughts-114k | apache-2.0 |
| open-r1/OpenR1-Math-220k | apache-2.0 |
| nvidia/ChatQA2-Long-SFT-data | cc-by-nc-2.0 |
数学/推理类数据占大头,这也解释了它 GSM8K 68.1 的数学成绩;长文本数据则来自 ChatQA2-Long,为 8K 上下文能力打底。
三、训练之后:成绩如何?📊
评测取自主论文 Table 3(0-shot,lm-evaluation-harness),核心数字如下:
常识推理(平均分 59.0)
| 任务 | 分数 |
|---|---|
| ARC-Challenge | 45.4 |
| HellaSwag | 69.3 |
| PIQA | 76.6 |
| WinoGrande | 67.6 |
| …(共 7 项) | 平均 59.0 |
长上下文 RULER(13 项任务平均)
| 上下文 | 8K | 16K | 32K | 64K |
|---|---|---|---|---|
| 分数 | 71.2 | 45.0 | 27.1 | 14.1 |
这张表其实是最重要的"避坑指南":8K 是训练长度,表现最佳;一旦超出 8K,分数断崖式下跌(16K 只剩 45.0)。官方明确说明 8K 与 64K 是两个独立发布的模型,需要更长上下文请用同门 64K 版本。
数学方面,GSM8K 得分68.1。
⚠️ 一个容易踩的坑:config.json 里max_position_embeddings是 131,072,但那是继承自基础模型的字段,不代表支持长度。部署时务必显式设--max-model-len 8192,否则推理框架会按 131K 分配 KV cache。
四、本地跑起来:最短路径 🚀
- 下载模型(约 17GB 的 float32 权重,建议按 bfloat16 加载):
git clone https://gitcode.com/hf_mirrors/amd/HyLo-Llama-6MLA22GDN-8K-SFT安装 AMD 混合模型推理代码:混合层类型不在
transformers里,AutoModelForCausalLM无法直接加载,需要先安装 AMD 官方的 Hybrid-Models 仓库(进入其HyLo目录按说明配置环境)。最小推理示例:
import torch from transformers import AutoTokenizer from hybrid.hybrid_wrapper import HybridModelWrapper ckpt = "amd/HyLo-Llama-6MLA22GDN-8K-SFT" model = HybridModelWrapper.from_pretrained(ckpt, torch_dtype=torch.bfloat16).cuda() tokenizer = AutoTokenizer.from_pretrained(ckpt) ids = tokenizer.apply_chat_template( [{"role": "user", "content": "用五点总结上面的文档"}], add_generation_prompt=True, return_tensors="pt").cuda() out = model.generate(ids, max_new_tokens=256, do_sample=True, temperature=0.6, top_p=0.9) print(tokenizer.decode(out[0], skip_special_tokens=True))五、新手避坑清单 ✅
| 坑 | 正确做法 |
|---|---|
| 权重是 float32(训练直接写出的) | 用torch_dtype=torch.bfloat16加载,评测数字就是按此精度测的,float32 白白翻倍显存 |
| prompt 超过 8,192 tokens | 保持输入在 8K 以内;超出部分质量不保证 |
| 用 Llama 3.2 基础模型的 chat 模板 | 必须用本仓库自带的 chat_template.jinja(Llama 3 风格 header 格式,与基础模型不完全相同),special_tokens_map.json 中 EOS 为<\|eot_id\|> |
| 当作生产模型直接用 | 这是研究用途产物(LICENSE 为 AMD 研究专用 RAIL-MS 许可,部分训练数据非商用),未做安全对齐,请勿直接面向用户暴露 |
| 忽略"需要教师模型"这一前提 | 复现该配方本身就要一个 8B 教师模型,这也是配方成本的一部分 |
六、关键文件索引
| 文件 | 说明 |
|---|---|
| README.md | 完整文档:架构、训练配方、评测与用法 |
| hybrid_config.json | 混合布局权威配置:MLA 层索引、MLA 维度、GDN 头数、YaRN 参数 |
| config.json | 基础模型配置(仅参考,max_position_embeddings非支持长度) |
| chat_template.jinja | 训练所用对话模板,部署时必须使用 |
| model.safetensors | float32 权重文件 |
| LICENSE | AMD 研究专用许可(RAIL-MS) |
一句话总结:HyLo-Llama-6MLA22GDN-8K-SFT 的训练配方就是"手术 + 跟练"两步——Enhanced-ILD 逐层对齐新结构(2K 上下文、高学习率),随后 8K 长上下文下用 8B 教师做纯 KL 蒸馏 SFT(低学习率、全量数据、1 epoch),最终以 2.0% 的 KV cache 拿到 RULER 8K 71.2 的长上下文成绩。这套"先对齐、后拉长"的两阶段思路,对任何想改造混合架构模型的朋友都是可以直接参考的模板。🎯
【免费下载链接】HyLo-Llama-6MLA22GDN-8K-SFT
相关推荐
训练配方拆解:Enhanced-ILD与Qwen3-8B蒸馏两阶段如何炼成HyLo-Qwen-14MLA14M2-8K-SFT
训练配方拆解:Enhanced ILD与Qwen3 8B蒸馏两阶段如何炼成HyLo Qwen 14MLA14M2 8K SFT HyLo Qwen 14MLA1
HyLo-Llama-4MLA12GDN-64K-SFT训练原理揭秘:Enhanced-ILD+64K蒸馏两阶段如何赋予模型长上下文能力
HyLo Llama 4MLA12GDN 64K SFT训练原理揭秘:Enhanced ILD+64K蒸馏两阶段如何赋予模型长上下文能力 HyLo Llama
LLaDA2.0 Diffusion LLM 基于 SGLang 框架在昇腾 NPU 的推理适配指南(cann-recipes-infer)
LLaDA2.0 Diffusion LLM 基于 SGLang 框架在昇腾 NPU 的推理适配指南(cann recipes infer) 导读 本文档基于
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考