从 0 到 1 跑通 kohya_ss:AMD ROCm 训练环境实战手册
【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss
在 AMD 显卡机器上配置 kohya_ss 训练环境,最容易卡在 PyTorch 构建的选择上:装错 CUDA 版 wheel,环境就要推倒重来。项目官方提供了 ROCm 依赖通道,本文按四个阶段把环境搭好,并确认第一次训练能落地。
kohya_ss 训练环境定位:适用边界与硬性前置条件
kohya_ss 是基于 Gradio 的扩散模型训练前端,把底层训练脚本的优化器、学习率、分桶分辨率等参数封装成图形界面,你不需要手写完整的训练命令行。它的边界也要说清:项目面向训练侧,不做模型下载与版本管理,也不提供 WebUI 式的在线生图,训练产物的评测需要配合其他工具完成。
对 AMD 用户而言,ROCm 在这里不是社区补丁,而是与 CUDA 并列的官方安装路径:安装脚本会根据rocminfo是否存在自动切换依赖清单,你不用自己拼 wheel 索引地址。ROCm 依赖清单 requirements_linux_rocm.txt 中已锁定torch==2.7.1+rocm6.3与tensorflow-rocm,Python 3.10 与 3.11 都有对应条目。
开始之前确认三个硬性前置条件:
- Linux 系统(Ubuntu/Debian 系验证最充分),ROCm 6.3+ 已安装且
rocminfo可执行 - Python 3.10 或 3.11,ROCm 清单未覆盖 3.12
- 独立显卡,显存 12GB 起(SDXL 的 LoRA 训练是常见目标)
环境搭建与首次启动 ROCm 训练链路
ROCm 运行时准备与验证
GUI 里每个训练任务最终都跑在 PyTorch 的 HIP 后端上,所以先确认系统层 ROCm 可用,否则 Python 侧装再多包也没有意义。用发行版源装 ROCm 基础工具:
sudo apt update sudo apt install -y rocm-smi运行rocminfo应列出你的显卡与 gfx 架构,rocm-smi能看到显存总量与占用。若输出里找不到 GPU,先修驱动与内核模块,不要继续下一阶段。
拉取代码并安装 ROCm 依赖
把仓库拉到本地后交给setup.sh创建 venv、安装依赖并写入 accelerate 配置,它内部按平台选择依赖清单,避免手动 pip 装错构建:
git clone https://gitcode.com/GitHub_Trending/ko/kohya_ss cd kohya_ssbash setup.sh --use-rocmROCm 分支下脚本会先升级 pip(PyTorch ROCm 的 wheel 体积大,旧版 pip 容易中断),再按清单批量安装。正常结束会打印Setup finished! Run ./gui.sh to start.,且项目根目录下已生成venv/。
⚠️ 注意:若机器同时装过 NVIDIA 驱动,脚本可能优先命中 CUDA 分支。务必显式传
--use-rocm,装完后确认torch.version.hip非空,否则拿到的是 CUDA 版 PyTorch。
PyTorch ROCm 环境自检
装完依赖做一次显式自检,确认 Python 侧真正连上了 AMD GPU,而不只是装了包:
source venv/bin/activate python -c "import torch; print(torch.__version__, torch.cuda.is_available(), torch.version.hip)"预期输出形如2.7.1+rocm6.3 True 6.3.4:版本带+rocm后缀、可用性为True、HIP 版本号非空。三者缺一不可,任何一项异常都说明构建选错,回到上一阶段重装。
首次启动 kohya_ss GUI 并定位训练页
自检通过后直接启动,启动脚本会激活 venv 并按平台复核依赖清单,然后拉起主界面:
bash gui.sh浏览器打开启动日志中打印的本地地址(默认 127.0.0.1:7860),进入 LoRA 页确认模型路径与数据集目录可填写、"Accelerate Launch" 区域正常渲染,即算跑通首链路。
⚠️ 注意:
gui.sh会检查LD_LIBRARY_PATH,未设置时打印黄色警告;WSL2 环境下不补/usr/lib/wsl/lib/可能导致 HIP 运行库加载失败。
核心能力速览:LoRA、DreamBooth 与 masked loss
LoRA 训练是 AMD 平台最常跑的入口。典型场景:准备几十张同风格图片,每张配同名.txt标注;仓库示例 test/img/10_darius kawasaki person/ 就是这种"图像+标注"成对结构。LoRA 页里把 network rank 设为 16、学习率落在 4e-7 量级(SDXL 基准)、最大分辨率给到 1024,即可发起一次完整训练。
DreamBooth(finetune)面向单角色或单主体的全量微调,参数在 finetune 页。它比 LoRA 更慢、显存占用更高,适合主体需要高度还原且能接受完整权重产出的场景。
⚠️ 注意:SDXL 分辨率到 1024 后显存需求明显上升,12GB 显存建议 batch 从 1 起步并开启 gradient checkpointing。
masked loss是数据侧的进阶项:给训练图配一张前景掩码(黑白图,白色为要学习的区域),损失只在掩码内计算,适合背景杂乱、只想提取主体特征的数据集。test/masked_loss/ 下存放了成对的掩码示例:
| 训练模式 | 适用数据量 | 显存压力 | 产物 |
|---|---|---|---|
| LoRA | 10~100 张 | 低 | 轻量 LoRA 权重 |
| DreamBooth | 20 张以上 | 高 | 完整 ckpt/safetensors |
| 加 masked loss | 视背景杂乱度 | 与主模式相同 | 同左,收敛更聚焦主体 |
参数不必全部手填:配置模板 config example.toml 里train_data_dir、optimizer、gradient_checkpointing等字段带默认值与注释,是可以照抄的对照底稿。
排错与调优速查
显存吃紧时按顺序处理:先开 gradient checkpointing 换显存,再把 batch 压到 1 配梯度累积,最后才降分辨率;多卡训练在 "Accelerate Launch" 区域设置gpu_ids与num_processes。
| 问题现象 | 可能原因 | 排查命令或操作 |
|---|---|---|
rocminfo列不出 GPU | ROCm 驱动或内核模块未装好 | 运行rocm-smi,查 dmesg 中 amdgpu 记录 |
| PyTorch 变成 CUDA 构建 | setup 未识别 ROCm 走了 CUDA 分支 | 重跑bash setup.sh --use-rocm,核对torch.version.hip |
| 训练中途 OOM | 分辨率或 batch 过高 | 开 gradient checkpointing,下调 max_resolution |
gui.sh提示 venv 缺失 | 跳过 setup 直接启动 | 先完成bash setup.sh --use-rocm |
| HIP 运行库加载失败 | LD_LIBRARY_PATH未设置 | 按 gui.sh 警告补充后重启 |
资源索引
- 中文训练说明:docs/train_README-zh.md,界面字段与参数含义一一对应
- SDXL LoRA 基准配置:docs/LoRA/top_level.md,含优化器与学习率参考值
- 现成训练预设:presets/lora/ 下按场景整理好的参数 JSON
- 数据集 TOML 示例:test/config/ 覆盖多分辨率与 masked loss 写法
到这里,ROCm 环境从依赖到首个训练任务的链路都已落地,后续工作集中在参数与数据集调优本身。
【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考