如何在AMD Strix Halo上微调大语言模型
本指南详细介绍了在AMD Strix Halo APU(gfx1151)上对大语言模型进行全微调和LoRA微调的步骤,绕过了官方ROCm支持的限制,使用HuggingFace Trainer直接训练。
文章情报
要点
- Strix Halo APU拥有128GB统一内存,可轻松容纳大模型。
- Swift和Unsloth框架不兼容,需使用HuggingFace Trainer。
- 环境配置需安装特定ROCm夜间构建版本并卸载torchao和bitsandbytes。
- 提供了全微调和LoRA微调的完整脚本及监控方法。
为什么重要
这条新闻值得关注,因为Strix Halo APU拥有128GB统一内存,可轻松容纳大模型。
技术影响
可能影响模型选型、推理成本、产品能力和评测基准。
本指南详细介绍了如何在AMD Strix Halo APU(gfx1151)上对大型语言模型进行全微调(SFT)和LoRA微调。Strix Halo是AMD的APU架构,搭载于AI MAX 395/395+处理器,拥有128GB统一内存,CPU和GPU共享同一内存池,无显存/内存边界。这使得原本需要多GPU A100设置的大模型(如12B参数模型)可以轻松运行,但内存带宽较低(约256 GB/s),需注意权衡。
AMD的ROCm生态系统官方支持矩阵有限,而Strix Halo仅在2025年底获得实验性支持。许多常用库(如bitsandbytes、Flash Attention、torchao)不兼容,分布式操作也未完全实现。因此,本指南绕开了Swift和Unsloth等框架,直接使用HuggingFace Trainer进行单GPU训练。
环境配置
首先,安装AMD HIP SDK/ROCm运行时。Windows用户需从AMD官网下载HIP SDK 7.1.1并安装最新Adrenalin驱动。Linux用户(Ubuntu 24.04)需添加ROCm仓库并安装amdgpu-install。完成后验证GPU检测。
其次,创建Conda环境并安装PyTorch。必须使用AMD为gfx1151提供的专用夜间构建版本,避免使用标准pip源。安装后卸载torchao和bitsandbytes,因为它们在此架构上会崩溃。同时避免安装torchvision,以免触发依赖问题。
训练脚本
本指南提供了全微调和LoRA微调的Python脚本。全微调脚本使用Trainer类,数据集格式为JSON,包含conversations键的多轮对话。训练时仅对助手的回复计算损失(train-on-responses-only),用户和系统提示被屏蔽。LoRA微调则使用PEFT库,仅训练低秩适配器。
训练过程中可通过查看日志中的loss值监控进展。如果loss不下降,可能是学习率或warmup步数设置不当。训练完成后,模型和分词器会保存到指定目录。
后处理与故障排除
训练后的模型需修补分词器配置(tokenizer_config.json),移除生成提示中的条件思考块。常见问题包括:CPU训练(通常由pip覆盖导致)、loss为0(数据格式化错误)、输出出现块(chat template未修补)。
本指南基于2026年5月的状态编写,随着ROCm对gfx1151支持的成熟,一些变通方法可能不再需要。