ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

3条命令跑通 kohya_ss Docker 部署:从克隆到训练界面

3条命令跑通 kohya_ss Docker 部署:从克隆到训练界面 3条命令跑通 kohya_ss Docker 部署从克隆到训练界面【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss第三次在 pip install torch 的 CUDA 版本报错里打转时可以停下了kohya_ss 是 Stable Diffusion 的 LoRA 与微调训练 GUI这篇文章带你 3 分钟走通 kohya_ss Docker 部署。前提只有一个——你有 NVIDIA 显卡并且装好了 Docker。⚡ 30秒启动3条命令打开训练界面git clone --recursive https://gitcode.com/GitHub_Trending/ko/kohya_ss cd kohya_ss docker compose up -d--recursive不能省它会把仓库里的 sd-scripts 训练核心一起拉下来少了它训练命令跑不起来。镜像下载完成后浏览器手动打开 http://localhost:7860容器里没装浏览器不会自动弹出来——看到 LoRA、finetune 等选项卡的 Gradio 训练界面说明部署成功。 刚才那几行命令干了什么2个容器、2个端口、一组挂载git clone拉来主仓库和 sd-scripts 子模块后者才是真正执行训练代码的引擎。docker compose up -d拉取预构建镜像ghcr.io/bmaltais/kohya-ss-guiPython 3.11 和 PyTorch cu128 已经烤进镜像本机不用配 CUDA外加一个tensorflow/tensorflow:latest-gpu负责画指标曲线。一共起两个容器GUI 容器以--headless方式运行kohya_gui.py监听 7860TensorBoard 容器读同一个日志目录监听 6006。docker-compose.yaml 把dataset/、models/、.cache/挂进容器固定路径所以容器随时可以停掉重建数据都留在宿主机上。deploy.resources段把所有 nvidia GPU 预留给容器device_ids: [all]起来就能直接 GPU 训练。镜像本身被设计成可抛弃的代码在镜像里、数据在宿主机down再up就是更新方式。️ 数据住在哪里删了哪个目录会出事kohya_ss/ ├── dataset/ # 训练数据根目录挂载进容器 /dataset │ ├── images/ # 样本图 同名 txtGUI 只认这里 │ ├── outputs/ # 训练出的权重 ⚠️ 删了白训 │ ├── logs/ # TensorBoard 指标日志 │ └── regularization/ # 正则化训练用图 ├── models/ # 底模与待加载 LoRA ⚠️ 你的模型权重删了要重下 └── .cache/ # GUI 配置和 HuggingFace 缓存 ⚠️ 删了等于配置清零进训练数据集的实际数据长这样一张图加一个同名 .txt 标注文件都放在dataset/images/里。![kohya_ss Docker 部署训练数据集示例图](https://raw.gitcode.com/GitHub_Trending/ko/kohya_ss/raw/f44226cfccca008094f958d829c49c74a7e9289d/test/img/10_darius kawasaki person/Dariusz_Zawadzki.jpg?utm_sourcegitcode_repo_files)人物风格的数据同理一图一 txttxt 内容就是这张图的 caption![kohya_ss Docker 部署LoRA训练人物风格数据](https://raw.gitcode.com/GitHub_Trending/ko/kohya_ss/raw/f44226cfccca008094f958d829c49c74a7e9289d/test/img/10_darius kawasaki person/Dariusz_Zawadzki_2.jpg?utm_sourcegitcode_repo_files)做 masked loss 时蒙版文件是这种黑底白色剪影命名和原图保持一致GUI 为什么读的是dataset/images而不是datasetcompose 把images子目录重新映射到容器内/app/data这是界面默认展示的路径你放数据时不用想容器内路径。容器是一次性的目录才是家。 按你的情况改大多数人只动2处大多数人要改的2处TensorBoard 的 6006 端口被占在 .env 里加一行不用动 composeTENSORBOARD_PORT7006GUI 的 7860 被占、或者想把数据挪到另一块盘改 docker-compose.yaml 里对应行各一行- 7861:7860 # portsGUI 端口被占只改宿主机一侧 - /data/sd/dataset:/dataset # volumes数据挪到另一块盘数据盘建议挂 SSD训练时每个 epoch 都要读图I/O 打满机械盘会让每个 epoch 多等一倍时间。有特定硬件才改的多卡但只想用其中一张把deploy里的device_ids从[all]改成[0]。all会让两个容器都把卡占上共享机器上容易跟别人的训练抢卡。进阶玩家才碰的想换依赖版本或基础镜像入口在 Dockerfile本地构建用docker compose up -d --build首次构建约 20 分钟。 日常操作跑一遍启动、停止、日志、更新docker compose up -d—— 起两个容器日常入口docker compose down—— 停止并移除数据在挂载里停着不丢docker compose ps—— 看容器是否还活着docker compose logs -f kohya-ss-gui—— 实时追训练日志docker exec -it kohya-ss-gui bash—— 进容器翻文件docker stats kohya-ss-gui—— 看 GPU/CPU 实时占用docker compose down docker compose up -d --pull always—— 拉最新镜像完成更新️ 卡住了4个高频坑和一条解法GPU 不可用训练在 CPU 上跑成蜗牛根因NVIDIA Container Toolkit 没装或装完没重启 Docker。 解法装好 toolkit重启 Docker 服务再docker compose up -d。端口 6006 或 7860 被占用根因宿主机上别的服务占了端口。 解法TensorBoard 端口改.envGUI 端口改 compose 的ports行宿主机一侧。GUI 里没有文件选择器选不了图片文件夹根因容器默认--headless运行文件选择器被刻意去掉防止在容器内卡死界面。 解法图片放进dataset/images/在输入框里手动填路径。Linux 上写不出输出文件 / 权限报错根因容器固定以 UID 1000 运行宿主机目录归属别的用户。 解法sudo chown -R 1000:0 dataset models .cache后重启。 一页纸带走截图存好操作命令/路径备注启动服务docker compose up -d两个容器GUI TensorBoard更新版本down up -d --pull always拉最新预构建镜像训练数据dataset/images/图 同名 txt删了白准备权重产出dataset/outputs/训完的 LoRA 落这里指标页面localhost:6006端口冲突先改.env下一步把图片和同名 txt 丢进dataset/images/在 LoRA 选项卡里填路径开始第一次训练端口冲突就先改.env再启动。【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进