ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

kohya_ss:从 docker compose up 到第一个 LoRA 的 AI 模型训练实践

kohya_ss:从 docker compose up 到第一个 LoRA 的 AI 模型训练实践

kohya_ss:从 docker compose up 到第一个 LoRA 的 AI 模型训练实践

【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss

kohya_ss 是一个图形化的 AI 模型训练工具。一条 docker compose 命令即可拉起支持 SD 1.5、SDXL、SD3、Flux.1 等模型的训练环境,覆盖 LoRA、Dreambooth、全量微调等用法。本文按从部署到跑通第一次训练的完整流程来讲。

它能做的三件事

训练一个风格 LoRA

把一批统一风格的图放进训练集,kohya_ss 会把这个风格学成几十 MB 大小的 LoRA 文件。之后在任何兼容底模里加载它,就能生成同风格的新图。这是最常见的用法,消费级显卡上一次训练通常不到一小时。

个性化某个特定主体

给同一角色 10~30 张照片,它可以学到这张脸和标志性细节,生成时用触发词就能呼出这个人。仓库自带一份测试数据集和配套的数据集配置,放在 test/ 目录下,可以先用它跑通一次完整训练来验证环境,成本很低。

微调不同的模型架构

除了 LoRA,还有全量微调(finetuning)和 Textual Inversion。底模覆盖 SD 1.5/2.x、SDXL、SD3、Flux.1、Lumina Image 2.0、Anima、HunyuanImage-2.1。当你要提升底模在某一类图上的整体表现,或给模型词汇表加入全新概念时,这两种方式比 LoRA 更合适。

一条命令跑通 kohya_ss 部署

开始前确认三件事:

  • 已安装 Docker 并处于运行状态(Windows 使用 WSL2 后端)
  • NVIDIA GPU 驱动正常,nvidia-smi能看到显卡,且已安装 NVIDIA Container Toolkit
  • 预留约 20GB 磁盘空间,存放模型与缓存

然后在项目根目录执行:

git clone --recursive https://gitcode.com/GitHub_Trending/ko/kohya_ss cd kohya_ss docker compose up -d

--recursive不能省,训练脚本是子模块,漏掉会跑不起来。docker-compose.yaml 里定义了两个容器:kohya-ss-gui 提供训练界面(7860 端口),tensorboard 提供训练曲线(默认 6006 端口)。浏览器不会自动打开,手动访问 http://localhost:7860 ,看到带 LoRA、微调等页签的 kohya_ss 界面,就算部署成功。

数据方面把文件都放进dataset/目录:图片放dataset/images,训练日志和产出分别落在dataset/logs、dataset/outputs。compose 文件会把它们挂进容器,容器随时可以销毁重建,数据始终留在宿主机。

完整跑一次 LoRA 训练

以训练一个风格 LoRA 为例,过程分四步。

准备数据

在dataset/images/下建一个专门文件夹,放入 20~50 张同风格图片,每张图旁边放同名.txt文件,写一行描述。再写一个 TOML 格式的数据集配置:指明图片文件夹(image_dir)、一个自造的触发词(class_tokens,例如 [V] fantasystyle)、重复次数(num_repeats)和说明文件后缀。仓库里的 test/config/dataset.toml 就是一个可用示例,照它的格式写即可。

![kohya_ss AI 模型训练数据的单张图片示例,需配同名 .txt 描述](https://raw.gitcode.com/GitHub_Trending/ko/kohya_ss/raw/f44226cfccca008094f958d829c49c74a7e9289d/test/img/10_darius kawasaki person/Dariusz_Zawadzki_4.jpg?utm_source=gitcode_repo_files)

选一组 LoRA 训练参数

原则:rank(network_dim)决定网络容量,从 16 起步;看到过拟合(样本图和训练图长得太像)就调低 rank 与学习率,欠拟合再往上加。学习率和优化器的组合因底模而异,不建议硬记,presets/lora/目录里有一批按 SD 1.5、SDXL 分开整理好的预设 JSON,选一份就是稳妥的起点。分辨率按底模走:SD 1.5 用 512,SDXL 用 1024。

启动训练

在 GUI 的 LoRA 页签填入底模路径、数据集配置文件路径、网络参数和输出位置。注意容器内没有文件选择器,路径需要手动输入;dataset 目录在容器内挂载为/dataset,所以填容器内路径。启动后,训练过程中 GUI 会定期生成一批样本图。

查看结果

先看样本图:风格对、且没有过拟合到只剩一种死样,基本就可以停了。再打开 http://localhost:6006 的 TensorBoard 看损失曲线,下降后趋平即可。训练出的 LoRA 文件位于宿主机dataset/outputs/,可直接拿到 ComfyUI 或 WebUI 里使用。

常见坑与提速办法

页面打不开或训练报 GPU 错误,说明容器没识别到显卡。先确认nvidia-smi正常、NVIDIA Container Toolkit 已安装,再docker compose down && docker compose up -d重建,用docker compose logs kohya-ss-gui看具体报错。

训练中途 OOM(CUDA out of memory),先降分辨率,再减 batch_size;还不够就开启梯度检查点,用计算换显存。

7860 或 6006 端口被占用,改 docker-compose.yaml 里端口映射的左侧数字即可,TensorBoard 端口也可以用.env里的 TENSORBOARD_PORT 覆盖。

第一次训练慢、之后明显变快,是因为首次需要把所有图编码成 latent;开启 latent 缓存(cache_latents)会把它写入磁盘,第二次训练直接跳过这一步。

小贴士:

  • presets/lora/下的预设 JSON 是现成参数组;自己调好的参数也可以存成预设放到presets/lora/user_presets/
  • 升级镜像用docker compose down && docker compose up -d --pull always,数据都在宿主机目录里,不会丢

从第一次训练开始

建议先用 test/ 下的示例数据跑通一次完整训练,确认环境端到端没问题,再换成自己的数据。参数先用预设起步,看到样本图之后再动 rank 和学习率。第一次的目标是产出一个能用的 LoRA,而不是把每个参数都调到最优。

【免费下载链接】kohya_ss项目地址: https://gitcode.com/GitHub_Trending/ko/kohya_ss

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

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