在 AMD 云平台上微调 Gemma 4 做「AI 梦境日志」,我替你把 ROCm 这些坑踩完了(附完整流程)

在 AMD 云平台上微调 Gemma 4 做「AI 梦境日志」,我替你把 ROCm 这些坑踩完了(附完整流程) 话题标签#AMDev#Datawhale#ROCm#LoRA#Gemma4#大模型微调为什么我要写这篇过去一周我在 AMD ROCm 云平台上用 Jupyter 跑通了一个完整项目基于 Gemma 4 E4B-itLoRA 微调出一个 「AI 梦境日志」 生成器——输入一句中文开头模型续写一段超现实、梦境般的文字还带 Gradio Web 界面。训练能跑完但中间 Kernel 自动重启、transformers 版本报错、save_pretrained 触发 OOM……每一个坑都足够劝退新手。正好 Datawhale AI KOC 计划 · ROCm 方向 正在招募「最早把开放算力用起来、又愿意分享的人」。我把完整实录写下来你照着做能少踩 80% 的坑。一、Datawhale AI KOC 计划是什么AI 正在以极快速度改变工作方式。从「听说过 AI」到「真正用好 AI」中间差的不只是工具更是 真实的应用经验。AI KOCKey Opinion Consumer就是这群人既懂 AI 技能、愿意分享、能带动更多人真正用起来。Datawhale 作为 AI 开源学习社区联合 AMD 发起 AI KOC 支持计划 · ROCm 方向ROCm AMD 自主研发 · 开源共建的 GPU 计算软件栈这一轮专注 开放 GPU 算力生态。AMD 提供 算力、周边及生态资源Datawhale 提供 流量、社区与成长机会。 一句话找到并成就那些最早把 ROCm 用起来、又愿意分享的人——成为这条新路线上最早的「点灯人」。你能获得什么来自权益Datawhale流量扶持、社区曝光、学习资源AMD算力支持、周边、生态资源二、ROCm 是什么和 CUDA 有什么区别一句话版很多人第一次上 AMD 云会懵代码里写的是torch.cudaGPU 显示的却是 AMD RadeonCUDAROCm厂商NVIDIAAMD定位闭源 GPU 计算生态开源 GPU 计算软件栈PyTorch 调用torch.cuda同样用torch.cuda统一接口生态最成熟快速崛起越来越多模型可跑⚠️ 重点在 ROCm 环境下看到torch.cuda.is_available() True是正常的不代表你在用 NVIDIA。我这次用的设备信息device name: AMD Radeon Graphicstorch: 2.9.1git (ROCm 预装)transformers: 5.12.1三、项目介绍AI 梦境日志3.1 做什么不是做情绪分类、不是做问答而是输入「深夜的地铁里坐我对面的人没有脸。」输出模型续写一段超现实、梦境感的中文文本。3.2 技术栈组件选择原因基座模型google/gemma-4-E4B-it魔搭下载无需 HF Token微调方式LoRApefttrl.SFTTrainer单卡可训数据450 条硬编码超现实种子文本无需联网下数据集推理高温采样 三档梦境强度light / medium / deep部署Gradio Web 界面一键体验3.3 训练规模真实数据数据集train 360 / val 45 / test 45LoRA 可训练参数50,499,584约 0.63% 总参数训练3 epoch135 steps约 6 分钟training_loss2.34输出目录./dream_model/四、AMD 云平台跑通全流程注册 → 开机 → 第一个模型Step 1环境依赖别乱装ROCm 云平台通常 预装好 PyTorch。第一件事不要装 torchvision / vllm容易破坏现有 torch。# 正确做法只装必要包pip install transformers5.5.0 huggingface_hub1.5.0 \modelscope accelerate datasets trl peft gradio \-i https://mirrors.cloud.tencent.com/pypi/simple/Gemma 4 硬要求transformers 5.5.0低于此版本会直接报错。Step 2魔搭下载模型国内友好from modelscope import snapshot_downloadMODELSCOPE_MODEL_ID google/gemma-4-E4B-itLOCAL_MODEL_DIR snapshot_download(MODELSCOPE_MODEL_ID, cache_dir./models)首次需在魔搭网页 接受 Gemma 许可协议。Step 3加载模型from transformers import AutoTokenizer, AutoModelForCausalLMimport torchtokenizer AutoTokenizer.from_pretrained(LOCAL_MODEL_DIR, trust_remote_codeTrue)model AutoModelForCausalLM.from_pretrained(LOCAL_MODEL_DIR,torch_dtypetorch.bfloat16,device_mapauto,)Step 4LoRA 微调核心配置DREAM_DROPOUT 0.3 # 高 dropout增强「梦境随机性」DREAM_TEMPERATURE 1.2 # 推理高温采样per_device_train_batch_size 2gradient_accumulation_steps 4num_train_epochs 3save_steps 25 # 训练过程自动存 checkpointStep 5Gradio 一键体验# 输入梦境开头 → 选择强度 → 生成续写demo.launch(server_name0.0.0.0, shareFalse)五、踩坑实录这篇价值最高的部分坑 1torchvision::nms导致 transformers 导入失败现象RuntimeError: operator torchvision::nms does not exist原因纯文本任务不需要torchvision但环境里残留了与 ROCm 版 torch 版本不匹配的 torchvision。解决uv pip uninstall torchvision # 注意旧版 uv 不要加 -ypip uninstall -y torchvision之后 不要再装 torchvision。坑 2Gemma 4 必须 transformers 5.5现象AttributeError: list object has no attribute keys原因Gemma 4 是多模态架构旧版 transformers 无法解析 config。解决pip install transformers5.5.0 huggingface_hub1.5.0升级后若已 import 过旧包需清缓存或 Restart Kernel再重新 import。坑 3训练完保存模型Kernel 自动重启最搞心态现象§14 执行save_pretrained或跑 §15 评估时Jupyter 静默重启trainer变量全丢。原因训练结束后trainer仍占用 optimizer 状态往往是模型权重的 23 倍显存再序列化或批量generate()直接 OOM系统杀进程。我的解决方案已在 Notebook 里改好§13 训练结束立刻从checkpoint-*拷贝 adapter文件复制不重新序列化保存 tokenizerdel trainer释放显存§14 改为可选只做磁盘检查零 GPU 操作§15 评估降载EVAL_LIMIT 5 # 先评 5 条稳定后再改 30EVAL_MAX_TOKENS 128 # 缩短生成长度Kernel 已重启 不必重训§1 → §2 → §7 → §8 → §9 → §15从./dream_model/checkpoint-*自动加载 LoRA。 教训在 ROCm 单卡上「训练成功 ≠ 流程结束」显存管理要和训练一样认真。坑 4uv pip uninstall -y报错旧版 uv 不支持-y参数去掉即可uv pip uninstall torchvision六、生成效果展示七、完整 Notebook 结构一览章节内容§1安装依赖ROCm 专用注意事项§2.5热修复 transformers / huggingface_hub§4魔搭下载 Gemma 4§5–§6梦境数据集 prompt-completion 构造§7加载 tokenizer 基座模型§8–§9generate_dream() 质量评估§11–§13LoRA 配置 SFTTrainer 训练§14保存状态检查§15微调后评估§20Gradio 梦境生成器未来会上线Github可以期待一下~Githubyibohere八、总结问题我的答案AMD 云能微调 Gemma 4 吗能LoRA 单卡约 6 分钟ROCm 和 CUDA 代码差别大吗PyTorch 层几乎一样环境依赖是最大坑最值得分享的 ROCm 经验别乱装包 训练后立刻释放显存怎么加入 KOC写文章 → 提交链接 → 等审核开放算力生态正在起来。CUDA 不是唯一选择ROCm 已经能跑真实项目了。