Next Trainer v2.9.1 Anima LoRA 标准模式界面
NEXT TRAINER / v2.9.1 / 教程作者:年糕特工队

Next
Trainer

下一代LORA训练器

安装
数据集参数测试
ANIMA LORA训练教学展示案例 Anima LoRA 
使用环境 Windows 本地部署
02
About Next Trainer

什么是Next Trainer?

Next Trainer 基于开源框架,把 LORA 训练所需的各个步骤整合到同一套 GUI 中。打标、参数设置、训练进度都可以在一个界面里完成,不需要手写命令。

Next Trainer 本身不是底模,也不替你判断数据质量。它把 Anima LoRA 的下载、数据、参数、训练和监控收进同一个入口。
Next Trainer · Home
Next Trainer 主界面与训练工具入口
01
可视化

打标、参数、训练进度都有可视化界面。

02
便捷化

提供快速安装包与训练预设参数。

03
可复现

支持保存与导出参数。

观前提醒:本文档介绍 Next Trainer 的部署与使用,适合零基础入门阅读。
使用 AI 绘图发布图片至互联网时,请遵守当地的法律法规。
03
Roadmap

LORA训练全流程

通常来说,训练一个LORA需要下面这些步骤。

本教程只走 Anima LoRA 标准模式。Fast 与全量微调会说明区别,但不混用参数。
01

设定目标

想清楚自己的训练目标,是画风,人物,或者说是一个概念。

02

安装环境

解压Next Trainer便携包,下载需要的模型文件。

03

准备训练集图片

筛出清楚、互补的训练图。

04

添加训练标签

添加正确的训练提示词

05

设置训练参数

加载角色预设,只改必要项。

06

开始训练

盯步数、显存、Loss 与样图。

07

测试

ComfyUI,对比选出最佳。

起步目标先出结果


推荐参数默认参数


判断标准LORA基本还原训练集


Chapter 01 / Define

第一章:设定目标


起点一个明确、可行的训练目标
本章概括什么是 LoRA、它能做到什么程度
本章产出训练目标与触发词


05
LoRA · Core Idea

什么是LORA?

LoRA 可以给模型补充它原本没有或很弱的能力,比如让它学会一个完全不认识的角色。与全量训练相比,LoRA 消耗的资源很少,普通显卡也可以完成。

LoRA(Low-Rank Adaptation)是参数高效微调(PEFT)方法的一种。训练时冻结底模,在目标层旁边加入可训练的低秩分支;推理时再把这条分支叠加回底模。
BASE / FREEZE

冻结 Anima 模型

保留 DiT、Qwen3、VAE 原有的作画、文字理解和图像转换能力,LoRA 只改动其中很小一部分。

ADAPT / TRAIN

训练 LoRA

从图片和提示词中学习角色、画风或概念。本教程的角色预设主要训练 Anima 的 DiT 分支。

CALL / INFERENCE

按需挂载

使用时挂回同体系底模并写上触发词,通过加载权重控制新特征的强弱。

LORA的作用

给底模补能力

补充底模原本不稳定的角色、画风或概念,同时保留动作、构图和背景的可控性。

LORA的优势

轻量、独立

与全量微调相比,可训练参数和文件体积都小得多。

LORA的边界

它不是独立模型

无法补充模型原本不具备的知识;不同 LoRA 之间也可能互相冲突。

LoRA 无法取代底模,底模仍然是必需的。
06
Define the Target

训练目标:学什么、保留什么、不绑定什么

训练不是把一堆“看起来不错”的图直接交给模型。先定义目标,之后的每张图、每个标签和每次测试都围绕它来做。
角色概念单角色

学习稳定的脸、发型与固有特征,同时保留动作、镜头、服装和背景的可控性。

实体 / 产品

形状与结构

需要正面、侧面、背面、远近和细节图;不要让同一桌面或手势反复出现。

画风

视觉语言

需要覆盖不同主体和构图,让模型学习笔触、配色和质感,而不是记住某个角色。

1
训练目标示例:训练角色 mynova,保留脸与发型,服装和场景可以更换。
2
不该绑定的东西例如固定校服、白背景、同一姿势;后面选图和打标时要专门拆开这些干扰。
3
只选一个主任务第一次训练不要把角色、画风和多个概念混在一起,否则出问题时会无法定位原因。
贯穿全程的判断标准 这张图有没有提供新的角度、动作、表情或环境信息?

没有新增信息的重复图只会加重已有规律,LoRA 学不到新内容。

07
Acceptance First

检查收集的图像

训练前不定好测试提示词,训练后就只能凭“好像更像了”来判断。提示词固定下来,不同 Epoch 之间唯一的变量就是训练进度。
A

正面特写

检查脸、发型、眼睛与标志性细节。

B

全身像

检查比例、服装切换和不同动作。

C

复杂背景

检查角色是否会强行带出训练背景。

合格结果像目标,也听提示词

身份特征稳定,同时站、坐、近景、远景和环境都能变化。只会复刻训练图不算成功。

固定变量

Prompt、Seed、尺寸、采样设置

比较 Epoch 时全部固定,比较权重时只改权重,这样结果差异才有明确的来源。

触发词

mynova

后面所有 Caption 都把它放在最前,部署测试也使用同一个拼写。

LoRA 不能单独出图。它只保存相对底模的新增影响,部署时仍然需要同体系的底模
Chapter 02 / Install

第二章:安装环境,下载模型



写好的训练目标、触发词和三条测试提示词

查硬件 → 解压 → 启动 → 下载三件套

 GUI、监控页


09
Requirements

训练所需的推荐配置

训练时,模型、图片的中间结果和学习数据需要同时放进显存,装不下就会 OOM。省显存功能只是把一部分工作转移给内存和磁盘。
GPU · 负责计算NVIDIA CUDA

训练需要反复进行大量矩阵运算,CPU 无法以相近速度替代。推荐使用4070以及以上的算力。

显存 · 决定能否装下12GB 起步

1024 图像会产生大量中间结果。显存不足会直接 OOM,多等一会儿并不能解决。

内存 · 接住卸载内容建议 32GB

block swap 会把部分模型临时移到内存,内存太小会频繁交换甚至卡死。

磁盘 · 保存模型与缓存建议 SSD

三件套、依赖、缓存和多轮 LoRA 会持续占用空间,机械硬盘会拖慢读取与卸载。

10GB 级显存

标准 LoRA 的实验下限

通常需要配合缓存与 blocks_to_swap=16,每计算一段就要和内存交换,速度明显下降。

12–16GB 显存

不错但是可以更好的选择

batch 2、梯度检查点和图片缓存落盘通常可以工作,先用参考配置跑通完整流程。

8GB 级显存

极限实验路线

通常还需要 cache text encoder + LoKr + swap 24,速度很慢,不建议作为标准 LoRA 的首轮方案。

精度需要和显卡匹配:RTX 30 / Ampere 及更新的显卡,PyTorch 检测支持时用 bf16;RTX 20 / Turing 在 GUI 中将 mixed_precision 改为 fp16。不要只看显存大小。
开训前先看任务管理器 → 性能 → GPU,关注“专用 GPU 内存”。关闭游戏、出图工具和占显存的浏览器页面;留出余量,避免模型加载完却在第一步 OOM。
10
Install · 01

完整解压到固定目录

从项目 Releases 下载当前版本 7z。不要直接在压缩包预览里运行,也不要只拖出一个 bat。
SD-Trainer-v2.9.1/
  ├─ run_gui.bat ← 日常启动
  ├─ Download-Anima-Model.bat
  ├─ python_embeded/ ← 内置 Python
  ├─ SD-Trainer/ ← 程序本体
  ├─ sd-models/
  ├─ train/
  ├─ output/
  └─ tagger-models/
1
完整解压训练中不要移动根目录,否则保存的路径会失效。
2
路径尽量短且不使非英文路径例如 D:\AI\SD-Trainer,可以减少脚本和第三方库的路径兼容问题。
3
确认关键目录都在python_embededSD-Trainer 缺一不可。
4
安全软件拦截时先看文件来源只对可信的官方整合包放行,不要随意关闭系统防护。
便携包更省事:Python、依赖版本和启动脚本都固定在项目目录内,不会和电脑上其它 Python 环境互相干扰。
11
Install · 02

启动服务

双击根目录 run_gui.bat。首次启动需要联网补齐约 3GB 依赖,终端窗口必须保持打开。
[setup] Verifying embedded dependencies
[portable] Ensuring data dirs
[tagger] Ensuring WD14 cache
INFO Server started
  http://127.0.0.1:28000
INFO Train monitor
  http://127.0.0.1:6008
1
http://127.0.0.1:28000   参数与工具

Anima 参数、数据集打标、标签编辑都在这里。

2
http://127.0.0.1:6008   训练监控

看 GPU、步数、Loss、样图和实时日志。

3
终端是服务本体

关掉它,两个网页都会停止工作。

127.0.0.1:28000/lora/sd3.html
Next Trainer Anima LoRA 当前启动页
12
Install · 03

下载 Anima 三件套:DiT、Qwen3、VAE

确认没有训练任务在运行后,双击 Download-Anima-Model.bat。脚本会从 ModelScope 下载并放到正确目录。
01 · DiT

anima-base-v1.0.safetensors

负责在 latent 中一步步还原画面,是 LoRA 主要挂载和学习的对象。

02 · Text Encoder

qwen_3_06b_base.safetensors

把 caption / prompt 转换成模型能理解的语义条件。

03 · VAE

qwen_image_vae.safetensors

在像素图与压缩后的 latent 表示之间转换。

Save to: SD-Trainer\sd-models\anima\
[1/3] Downloading anima-base-v1.0.safetensors ... Done
[2/3] Downloading qwen_3_06b_base.safetensors ... Done
[3/3] Downloading qwen_image_vae.safetensors ... Done
不要在下载中途关闭窗口。脚本只按“文件是否存在”来跳过;如果中断后文件为 0KB、大小异常或无法加载,先删除该文件再重新运行下载。
13
Model Pipeline

模型组件

三者分别负责“作画与学习、读懂文字、压缩与还原图片”。每个组件缺一不可。

理解这条链路,就能明白为什么模型路径填错会在训练最开始直接报错。
TEXT

Caption 说明目标

触发词指向角色,其它词说明服装、动作和背景。

QWEN3

文本编码器

把标签转换成 DiT 可用的文字条件。

VAE

压缩图片

保留构图和细节线索,减少直接处理像素的成本。

DIT

DIT 块

从不同程度的噪声中,尝试还原与文字相符的图像。

LORA

最终训练产生的权重

只保存这次训练新增的变化,不复制完整 Anima。

缓存 Latent

少重复跑 VAE

先把图片编码结果存盘,后续 epoch 直接复用。

缓存 Text Output

少重复跑 Qwen3

省显存和时间,但 caption 不能每轮随意变化。

LoRA 权重

只记录差异

输出依赖这条完整链路,不能脱离 Anima 单独使用。

14
Anima Input

一张图和一条标签怎样进入训练?

图片分支与文本分支是并行的:VAE 不读取 caption,Qwen3 也不看像素。两条表示在 DiT 内通过条件注意力汇合。
PIXEL INPUT训练图片角色外观、构图和真实细节都来自这里
QWEN IMAGE VAEVAE编码将人类可视的图像编码为DIT训练时的LATENT
压缩后的画面特征LATENT体积更小,潜空间变量
TEXT INPUT同名 Caption触发词 + 画面中可变化的属性
TOKENIZER + QWEN3编码语义0.6B 文本模型理解标签与短句
编码后的文字含义让 DiT 知道这张图里哪些是角色,哪些是可替换条件
MERGEDiT
+ LoRA
把LATENT、噪声难度和文字含义放在一起练习。
cache_latents

图片只编码一次

首次运行 VAE,后续轮次直接读取结果,减少等待和显存占用。

cache_text_encoder_outputs

文字只理解一次

首次运行 Qwen3,之后 caption 必须保持不变,否则缓存会与文字不一致。

不改变学习目标

只省重复计算

缓存只影响速度、显存和磁盘,不会让模型学到更多内容。

15
Install · Check

确认一切就绪

网页能打开只说明 GUI 服务正常;三份模型都存在,才具备启动 Anima 训练的条件。
SD-Trainer/
  └─ sd-models/
     └─ anima/
        ├─ anima-base-v1.0.safetensors
        ├─ qwen_3_06b_base.safetensors
        └─ qwen_image_vae.safetensors
网页能打开127.0.0.1:28000 显示 v2.9.1。
监控能打开127.0.0.1:6008 可访问。
三份模型都存在文件不能是 0 KB,也不能是浏览器未下完的临时文件。
默认打标模型已就绪tagger-models/wd14 在新版便携包中已内置。
根目录的 sd-modelsoutputlogs 通常是指向 SD-Trainer 内对应目录的链接,两边看到的是同一份数据。
缺少 xformers 时可以运行根目录的 install_xformers.bat。便携包不要手动安装 flash-attn;标准模式下 attn_mode 留空即可自动检测。
16
Interface

认准训练入口:Anima LoRA 标准模式

默认页是 Anima LoRA → 标准模式,网址 /lora/sd3.html。本教程后续所有参数都以此页为准。
127.0.0.1:28000/lora/sd3.html
Anima LoRA 标准模式三栏界面 123
1
左栏:导航

标准 / Fast 模式、打标、标签编辑与监控入口。

2
中栏:参数表单

从上到下按模型、数据、保存、训练、网络、缓存排列。

3
右栏:最终配置

按钮下方是实际提交的配置预览,开训前在这里复核。

Fast 模式需要单独安装 runtime,仅支持标准 LoRA;Finetune 更新完整 DiT,显存需求更高。第一次训练两者都不选。
Chapter 03 / Dataset

第三章:把图片整理成训练集


上一章内容通过自检的训练环境和认准的训练入口
本章要做收图 → 筛图 → 保留比例 → 建目录
本章产出train/mychar/5_mychar 里的合格图片


18
Workflow

训练集处理流程

不要急着填参数。数据质量决定上限,参数只能决定“怎么学”,无法把错误样本变正确。
01 · 收集

围绕一个目标

一套角色、服装或风格,不混入第二个无关主体。

02 · 筛选

剔除坏样本

删除模糊、重复、水印和严重崩坏图。

03 · 整理

保留比例

不拉伸,交给 bucket 处理不同横竖构图。

04 · 打标

先自动后人工

WD14 先自动打标,再人工修正。

05 · 触发词

统一且独有

每张触发词都用同一拼写,放在最前。

06 · 目录

设置重复次数

5_mychar 之类的数字前缀控制采样。

07 · 抽查

检查标签是否准确

随机打开至少 10 组,确认一一对应。

08 · 备份

保存训练集

保留一份原始数据,方便重新打标或对比。

推荐命名:原始素材 dataset_raw,整理后的训练集 train/mychar/5_mychar。这样自动工具不会碰到唯一一份原图。
19
Dataset Principle

选图原则:角色要一致,场景要变化

理想训练集不是“每张都一样”,而是目标概念稳定、其它因素充分变化。
应当保持一致IDENTITY

脸型、核心发型、标志性配件、主服装或你真正想学的风格规律。

角度

正 / 侧 / 背

景别

近 / 中 / 全

环境

简 / 复杂

为什么需要变化

让模型学会“解耦”

角色在不同背景、姿势、光线下反复出现,模型才有依据判断这些变化不属于角色身份。

反例

30 张都站在白墙前

LoRA 很可能把白墙、正面站姿和固定构图一起绑定到触发词。

最简单的判断方法

同一个角色,出现在不同场景里

身份在多张图里反复成立,背景与动作不断变化,模型才有依据把两者分开。

20
Image Curation

如何清洗图像?

第一次可以从约 20–40 张清晰图起步。数量不是硬门槛,关键是图之间有有效差异,而不是重复凑数。
保留

主体清楚

脸、发型和关键配件有足够像素,遮挡不过度。

保留

构图有变化

头像、半身、全身都有,不全是同一机位。

保留

表情与动作不同

让触发词不被固定表情和姿势绑死。

谨慎

服装变化

只练一套服装就保持一致;想只练角色本体则应增加服装变化并准确标注。

删除

几乎重复

连拍或只改一点的图会让某个构图被过度采样。

删除

模糊与崩坏

训练会把错误也当作目标特征学进去。

删除

水印与大字

固定文字容易成为触发词的伴生图案。

删除

主体过小

目标只占画面很小区域时,有效身份信号太弱。

拿不准时问自己:这张图是否增加了新的角度、动作或环境信息?如果没有,它只是重复已有内容,不会带来新知识。
21
Resolution & Bucket

保留原始比例,交给 Bucket 分组

Anima 推荐 1024 级训练。GUI 的 ARB bucket 会把相近宽高比的图片分组,再按 64 像素步长调整尺寸。
PORTRAIT576×1024

竖图进竖向 bucket;最大边不超过预设 1024。

SQUARE1024×1024

正方图进方形 bucket。

LANDSCAPE1024×576

横图进横向 bucket;最大边不超过预设 1024。

Bucket 做了什么

减少裁切与形变

相似比例放进同一批次,既让张量尺寸一致,又尽量保留原构图。它不是提高画质的算法。

保留原始宽高比不要把人物拉宽或压扁。
主体周围留合理空间过度贴边会把构图偏差学进去。
明显小图谨慎使用放大到 1024 只增加像素,不会凭空产生细节。
开启 enable_bucket角色预设已经设置好。
分辨率越高,显存增长越快。首轮保持预设的 1024,1024,不要为了“更清晰”随意升到 1536 或 2048。
22
Folders & Steps

建好带数字前缀的训练目录

GUI 的“训练数据集路径”选父目录 train/mychar,图片本身放在带数字前缀的子目录。
train/
  └─ mychar/ ← train_data_dir 选这里
     └─ 5_mychar/ ← 每个 epoch 重复 5 次
        ├─ 001.png
        ├─ 001.txt
        ├─ 002.jpg
        └─ 002.txt
数字前缀真正控制什么让同一批图被多看几遍

5_mychar 表示每轮重复读取 5 次。它会加强现有内容,也会一起放大坏手、错标签和固定背景。

30 张图片

提供 30 份信息

增加图片数量比重复凑数更有价值。

重复 5 次

只是反复强调

不会凭空产生新的角度或细节。

看监控页

确认 total steps

首轮约 1000–3000 步即可开始比较。

数据少时可用 5–10 次重复让信号足够明显;数据越多,重复越应降低。所有轮次都不像时先查图片和标签,不要只加重复。
不要把图片直接散放在父目录。程序可能自动创建数字前缀目录并移动文件,提前整理更可控。
Chapter 04 / Caption
告诉模型每张图里有什么

第四章:给每张图配上准确的标签

图片只告诉模型“画面长什么样”,标签还要告诉它“哪些属于角色、哪些可以换”。这一章先自动打标,再人工校对。

上一章内容放进训练目录的合格图片
本章要做定写法 → WD14 打标 → 人工校对 → 配对检查
本章产出每张图旁边一份准确的同名 txt


24
Supervision

标签决定模型把特征归给谁?

图片告诉模型“长什么样”,caption 告诉模型“哪些变化应该由文字解释”。两者共同决定每一次参数更新的方向。
训练怎样理解一张图 图片和标注会作为一组一起进入训练

每一组都是对模型的一次纠正:图里是白衬衫,文字也写了 white shirt,模型就更容易把衣服归到这个词,而不是算进角色触发词。

重复与 Caption 不是一回事 repeats 决定这组样本出现几次
标注决定每次在教什么

重复只是让同一条信息被多次强调;错标签则会把模型持续推向错误理解。所以先修标签,再讨论训练量。

正确的标注

变化项被明确写出

衣服、动作、景别、背景随图片变化,生成时更容易单独控制。

漏标 / 重复

偶然关系被强化

所有图同一白墙且从不标背景,模型没有反例证明“角色可以离开白墙”。

错标 / 多拼写

监督被污染或拆散

不存在的特征造成梯度噪声;同一触发词多种写法会把召回能力分散。

可控目标: mynova, white shirt, upper body, outdoors → 换衣服或背景时,只替换对应词,不必放弃角色身份。
25
Caption Principle

常见的标签写法:触发词在前,可变属性写全

触发词负责召回目标;其它标签负责把姿势、服装、背景等变化从目标概念里拆出来。
mynova, 1girl, solo, smile, upper body, white shirt, outdoors
1
触发词要独有

不要用 girlanime 这类底模早已认识的常用词。

2
每张都保持同一拼写

mynovamy_nova 会被当作不同文本。

3
变化项应准确写出

不同衣服、动作、背景写进 caption,生成时才更容易控制。

长期不写的共同特征

更容易被触发词吸收

例如每张都是蓝眼,但 caption 从不写 blue eyes,LoRA 更可能把蓝眼视作角色默认身份。

明确写出的特征

更容易变成可控条件

如果服装会变,就应分别写 white shirt、dress、jacket,让角色与服装解耦。

标注没有唯一的标准答案。先确定要学“角色本体”还是“角色 + 固定服装”,再决定省略哪些共同特征。
26
Tagger

用 WD14 批量生成标签底稿

入口:工具与调试 → 数据集打标。选择实际放图片的 5_mychar 子目录。
127.0.0.1:28000/tagger.html
Next Trainer v2.9.1 数据集打标界面 123
1
模型用默认 WD14

wd14-convnextv2-v2 已内置,第一次无需额外下载。

2
目录选到图片这一层

若选父目录,必须开启“递归搜索子文件夹”。

3
点启动,看两条进度

完成后,每张图片旁边应出现同名 .txt

为什么还需要人工检查:Tagger 只根据图像置信度猜测标签,不知道你想训练什么,也不知道哪个词是触发词。
27
Tagger Parameters

设置打标参数,先拿 10 张试跑

最需要小心的是冲突策略:默认 copy 会覆盖旧 txt。已有标签时必须先备份。
interrogator_model识别模型
默认 WD14 v2 已内置,适合动漫标签。
WD14
download_endpoint下载源
只有换其它模型且下载失败时,才改镜像。
默认
path图片目录
选择 5_mychar,不是它的父目录。
必填
threshold通用阈值
低于阈值的词会被丢弃。调低则标签多而杂,调高则标签少而漏。
0.35
character_threshold角色阈值
主要给 CL Tagger 用,普通 WD14 保持默认。
0.60
additional_tags附加词
可填统一触发词;若已有人工触发词,避免重复。
可选
输出开关
评级 / AI 标签
普通角色 LoRA 关闭,避免学入无关来源信息。
下划线转空格
开启,long_hair → long hair
括号转义
开启,避免括号被当成权重语法。
递归搜索
直接选图片子目录时关闭。
冲突选项行为建议
ignore保留旧 txt已有精修标签
copy覆盖旧 txt首次打标
prepend合并并去重理解结果后再用
抽查 10 张:明显特征经常漏标可降到 0.30,错词太多可升到 0.40。阈值控制的是“多保留”与“少错词”之间的取舍,不是准确率本身。
28
Caption Editor

逐张校对:删错词、补漏标、统一触发词

入口:工具与调试 → 经典标签编辑。选 5_mychar 子目录后逐张核对。
127.0.0.1:28000/dataset-editor.html
Next Trainer 数据集标签编辑界面
1
先删除确定错误的词

错角色、错发色、画面中不存在的物体优先处理。

2
批量加入统一触发词

放在第一个位置,拼写完全一致。

3
保留真实可变属性

姿势、景别、服装、背景按图片实际内容写。

4
清掉无意义噪声

与图像无关的标签删除。

提示词标注的关键就在于准确性,错标的危险性远远大于漏标。所以应该尽可能详细的检查所有标注内容,确保没有错标的情况。
标签编辑器会直接改文件。批量删除或替换前,先复制一份训练集备份。
29
v2.9.1 Caption Rule

最后检查:每张图都有同名 txt

界面虽显示 prefer_json_caption,但当前 vendored Anima 训练后端实际按 caption 扩展名读取文本文件。不要只准备 JSON。
可靠主线001.png001.txt

图片和标签同名;caption_extension = ".txt"

mynova, 1girl, solo, blue hair, smile, upper body, outdoors
内置 WD14 与标签编辑器也都围绕 txt 工作。对第一次训练,这条链路最简单、最容易检查。
界面字段

prefer_json_caption

当前版本不要把它理解成“有 JSON 就一定会按结构化字段训练”。即使开关保持默认,也要确保每张图旁边存在可读 txt。

参考配置

shuffle_caption 开启

每轮打乱标签顺序,keep_tokens = 1 保住句首触发词;配合 caption_dropout 0.02、tag_dropout 0.05 做轻度正则。文本编码器缓存因此保持关闭。

改过 txt 的处理:参考配置下文本缓存关闭,改完直接重训即可;如果之前跑过开启文本缓存的训练,先删除图片旁的 *_anima_te.npz 再重新开始。
不要同时开启: cache_text_encoder_outputsshuffle_caption / caption_tag_dropout_rate。参考配置选择后者、关闭缓存;后端会校验并拒绝不一致组合。
Chapter 05 / Configure

第五章:训练参数


上一章内容配对完成的图片和标签
本章要做加载预设 → 填路径 → 定步数 → 固定容量
本章产出一份下载保存的 TOML 配置


31
Rectified Flow

训练时模型在练什么?

系统会把训练图扰乱到不同程度,再让 DiT 练习下一步该怎样修正。这样推理时面对纯噪声,它才知道如何一步步生成画面。
接近原图 · 简单题

轮廓和细节仍很明显,模型主要练习小幅修正。

图像混着噪声 · 中等题

部分结构被遮住,模型要结合 Caption 判断该保留什么。

接近纯噪声 · 难题

可见线索很少,更依赖文字含义和已经学到的整体规律。

为什么要练不同难度 只练简单题,会修细节却不会从噪声搭出完整画面

训练随机抽取不同扰乱程度,让模型既学整体结构,也学局部细节,而不是只会复刻清晰训练图。

专用参数控制什么 时间步设置决定三种难度各练多少次

sigmoid / 1.0 / uniform 是参考配置使用的组合。随意改动只会偏向某类难度,并不等于更清晰。

32
Objective

先搞懂:Loss 能说明什么,不能说明什么

Loss 下降说明训练目标正在被更好拟合;它不直接衡量审美、身份相似度或提示词可控性。
TRAINING LOSSOPTIMIZATION STEPS →
快速下降 · 学到主要规律 平台期 · 视觉仍需验证
Loss 实际在记录什么 模型先猜一次“下一步怎么修”,程序再和已知答案比较

差得多,Loss 较高;猜得更接近,Loss 通常下降。它只评估这道训练题,不知道图片是否好看、角色是否像。loss的短期波动是正常现象;但是一直稳步下降的loss也有可能欠拟合。

Loss 下降

目标正在拟合

只证明方向预测更准,不证明已经是最佳 epoch。

Loss 平台

先看固定样图

数值不再下降,可能只是当前数据能教的内容已接近上限。

突然升高或 NaN

需要查错

检查坏图、精度、学习率和日志;正常波动不需要立刻停训。

33
Preset First

第一步:加载角色预设

点击右栏“加载训练预设”,选择 Anima LoRA - 角色通用。预设先铺好底子,再按后面的参数页逐项核对参考值。
标准模式
本教程主线。支持 LoRA / LoKr / T-LoRA 等完整参数,直接使用项目内 Anima 后端。
Fast 模式
要单独安装 runtime,数据还会经过 resized 预处理;第一次不选。
Finetune
更新完整 DiT,约 24GB 级显存;输出和训练逻辑都不是 LoRA。
FIRST RUNCharacter Preset

适合单角色、服装和道具等常规概念。

1
打开 Anima LoRA → 标准模式确认左侧高亮位置正确。
2
点击“加载训练预设”选择角色通用。
3
再填写三模型和数据路径避免加载预设时覆盖刚填写的值。
4
确认 DiT 学习率按预设起步参考配置为 3e-5(CAME 优化器);第一轮按参考值跑通,后续只做单变量对比。
5
保存一份 TOML下载配置文件,便于复现和对比实验。
34
Parameters · Model

填好三条模型路径

选择按钮比手敲路径稳妥。默认相对路径正确时可直接保留。
lora_type适配器类型
第一次训练选标准 LoRA。LoKr、LoHa 等其它类型使用不同的网络结构,兼容性也不同。
lora
pretrained_model_name_or_pathAnima DiT
Anima 主模型权重,负责去噪与画面生成。
anima-base-v1.0
vaeQwen Image VAE
负责把训练图压缩为 latent;缺失时无法编码数据集。
qwen_image_vae
qwen3文本模型
把 txt caption 编码成语义条件。
qwen_3_06b
llm_adapter_path额外 LLM Adapter
填写后会覆盖主模型内置的 Adapter。没有明确配套文件就留空。
留空
t5_tokenizer_pathT5 tokenizer
留空时使用内置的 configs/t5_old,无需另外下载。
留空
resume恢复训练状态
用于恢复训练,只接受 save_state 保存的状态目录,普通 LoRA 文件不适用。
新训留空
35
Parameters · Anima

Anima 专用参数:首轮按参考配置核对

这组参数决定模型多练哪种噪声难度,以及计算怎样占用显存。它们不是清晰度按钮;首轮按参考值填写,结果才有可比较的基线。

文本与时间步

FLOW
qwen3_max_token_length
限制 Caption 最长可读多少内容;调大不会让短标签理解得更好,只会增加处理负担。
512
t5_max_token_length
配套 tokenizer 的长度上限,普通标签用不满,保持预设即可。
512
timestep_sampling
决定训练中各种噪声难度被抽到的频率;sigmoid 配套的 sigmoid_scale 保持 1.0。
sigmoid
discrete_flow_shift
进一步调整难题与简单题的比例,随意改动会偏向某一端。
1.0
weighting_scheme
决定不同难度下的误差各占多大权重;uniform 表示各阶段平均计分。
uniform

注意力与 VAE

MEMORY
attn_mode
同一注意力计算有多种实现,留空时程序按显卡环境自动选择,通常最稳定。
留空
split_attn
把一次大的注意力计算拆成几段执行,峰值显存更低,但速度更慢。
关闭
vae_chunk_size
VAE 编码时分块处理,仅在 VAE 阶段 OOM 时填写,无报错保持留空。
留空
vae_disable_cache
开启后禁用 Qwen-Image VAE 的内部特征缓存,可降低 VAE 阶段显存但速度变慢;仅在 VAE OOM 时尝试。注意与 cache_latents 区分。
关闭
unsloth_offload_checkpointing
把中间结果转移到内存以降低显存,代价是速度更慢,且不能与 block swap 同时开启。
关闭
36
Parameters · Data & Save

填数据路径,给输出起个带版本的名字

路径填错会直接失败;保存名写清实验信息,后面比较 epoch 时不会混淆。

数据集

INPUT
train_data_dir
选择包含 5_mychar 的父目录,程序才能读取数字前缀并应用重复次数。
必填
reg_data_dir
正则化图用于提醒模型保留通用类别能力,也可能稀释角色特征;普通角色首轮不用。
留空
prior_loss_weight
控制正则化图的影响权重;未提供正则化目录时该数值不起作用。
1.0
resolution
决定训练内部画面规模,也直接影响显存;它不会把低清原图变清晰。
1024,1024
enable_bucket
按宽高比分组,减少裁切与变形。
开启
bucket range / step
参考配置最小 512、最大 2048、步长 64,覆盖常见素材比例,首轮无需修改。
512–2048 / 64

保存

OUTPUT
output_name
建议含目标和版本,如 mynova_v01,避免覆盖旧实验或挑错 epoch。
必改
output_dir
默认写入项目 output 目录。
./output
save_model_as
输出文件的封装格式,不影响训练质量;safetensors 安全且兼容常见推理工具。
safetensors
save_precision
保存文件的数值精度,主要影响体积与兼容性;RTX20/Turing 计算改用 fp16 时可同步保存为 fp16。
bf16 / fp16
save_every_n_epochs
每轮保存一个候选文件,便于避开过拟合轮次;磁盘紧张时再调大间隔。
1
save_state
额外保存优化器等续训状态,文件很大,首轮关闭。
关闭
37
Parameters · Schedule

估算训练步数:图片数 × 重复 × 轮数

Epoch 只表示“整套数据看完一遍”。图片数和 repeats 不同,同样 10 轮的训练量会差很多,所以最终看监控页的 total steps。
max_train_epochs最大轮数
数据最多被完整训练的遍数。参考配置为 32 轮;轮数过多会把固定背景和姿势也记住。
32
train_batch_size单步图片数
每一步同时处理的图片数越多,显存峰值越高;参考配置用 2,1024 分辨率下 12GB 级显存仍可承受。
2
gradient_checkpointing梯度检查点
减少保留的中间结果,需要时重新计算;省显存但训练更慢。
开启
gradient_accumulation_steps梯度累加
累积几次小批量后再统一更新;与 batch 2 配合,等效批量为 4。
2
network_train_unet_only只训练 DiT
Anima 角色 LoRA 只更新 DiT 上的适配器,保持开启。
开启
network_train_text_encoder_only只训文本编码器
与主线相反,保持关闭。
关闭
首轮怎样定量先看 total steps

例如 30 张图、重复 5 次、训练 32 轮、batch 2,监控页通常会显示约 2400 步。以页面实际数字为准。

梯度累加的作用

多看几小批,再统一更新

更新会更综合,但每个小批仍占一次显存,所以它不能替代 batch 1。

步数只代表训练量,不代表质量。数据高度重复时,2000 步也可能很快过拟合;数据多样时,同样的步数包含更多信息。
38
Parameters · LR

学习率

学习率是每次纠正模型的力度。过高会很早锁死颜色与姿势,过低则训练结束仍无法还原角色。参考配置使用 CAME 优化器,学习率固定为 3e-5
learning_rate总学习率
CAME 按此值稳定运行,全程不做自适应改动;实际数值以日志中的 LR 为准。
3e-5
unet_lrDiT 学习率
与 learning_rate 保持一致,同为 3e-5;首轮不要只改其中一个。
3e-5
text_encoder_lr文本学习率
主线不训练 Qwen3,设 0 或随预设保持关闭。
0
lr_scheduler学习率曲线
cosine_with_restarts 让学习率按余弦曲线衰减后重启,共 2 个周期(lr_scheduler_num_cycles = 2)。
cosine_with_restarts
lr_warmup_steps预热
开头 100 步从小力度逐渐升到设定值,避免随机初始化的 LoRA 被一开始的大更新冲乱。
100
optimizer_type优化器
决定每一步梯度如何更新参数;参考配置使用 CAME(pytorch_optimizer.CAME),3e-5 的经验建立在它之上。
CAME
两个共同旋钮每次改多大、总共改几次

两者共同决定训练量,但无法互相简单抵消;力度翻倍可能直接破坏稳定性。

loss_type

保持 l2

L1 / L2 / Huber 改变误差的计分方式,与清晰度无关。

min_snr_gamma、Prodigy、EmoSens 与自定义 optimizer args 都是有前置调参逻辑的选项。首轮留空,不要同时换优化器和学习率。
39
Parameters · Network

网络容量:rank 32 / alpha 24

rank 可以理解为 LoRA 用来记录变化的“槽位数”。槽位越多越能记下复杂细节,但也越容易把水印、坏手和背景噪声一起记住。

LoRA 主线

CAPACITY
network_weights
从已有 LoRA 权重继续训练;新训练留空。
留空
network_dim
决定 LoRA 可记录的变化数量;参考配置用 32,为服装、发型纹理等细节留出余量。
32
network_alpha
控制整体发挥强度;alpha / dim = 24 / 32 = 0.75,输出强度略收敛。
24
network_dropout
训练时随机隐藏部分参数以减少死记;参考配置使用 0.05。
0.05
dim_from_weights
续训时从权重文件推断 rank;新训练关闭。
关闭

高级网络选项

LEAVE DEFAULT
scale_weight_norms
限制权重范数,仅在数值异常发散时考虑设为 1。
留空
train_norm
额外训练 Norm 层,改动范围更大,首轮保持关闭。
关闭
pissa_init
实验性初始化方法,开启后会出现额外的分解与导出选项。
关闭
network_args_custom
直接向底层网络模块传参,需要理解源码后再填写。
留空
enable_base_weight
模型差异训练相关功能,首轮角色 LoRA 用不到,保持关闭。
关闭
40
Parameters · VRAM

显存不够?按这个顺序降压

显存里主要装模型和训练中间结果。精度让数字占得更小,缓存减少重复计算,swap 把内容搬到内存;它们影响能否运行与速度,不会自动提高画质。
mixed_precision混合精度
用更紧凑的数字格式计算,明显节省显存;RTX 30 系及更新优先 bf16。
bf16
cache_latents缓存图片特征
VAE 只编码一次图片,后续轮次直接复用,更快且少占显存。
开启
cache_latents_to_disk图片缓存落盘
缓存写入磁盘而不是常驻内存,代价是增加 SSD 读取。
开启
cache_text_encoder_outputs缓存文字理解结果
参考配置关闭:shuffle_caption 每轮打乱标签顺序,文本逐轮变化,编码结果无法复用。
关闭
cache_*_to_disk文字缓存落盘
文字缓存关闭后随之关闭;图片缓存落盘不受影响,保持开启。
关闭
max_data_loader_n_workers数据加载进程
参考配置为 0,由主进程加载,Windows 下最稳定;persistent workers 保持关闭。
0
约 12GB+

先跑参考配置

batch 2 + checkpoint + 图片缓存落盘。

约 10GB

swap 16

把部分 DiT block 放到 CPU,速度下降。

约 8GB · 极限

swap 24 + LoKr

可能还要关闭 shuffle_caption、改开文字缓存;速度很慢,不保证首轮成功。

blocks_to_swap

把部分 DiT 暂放到内存

每次计算前后都要搬运,数值越大越省显存,也越慢。只有 OOM 时才逐步增加。

Anima 不支持 FP8: fp8_basefp8_base_unet 即使勾选也会在启动时警告并强制关闭;full_fp16full_bf16 也保持关闭。
Chapter 06 / Train

第六章:开始训练


上一章内容可复现的 TOML 配置
本章要做确认高级项默认 → 固定预览 → 提交 → 盯监控
本章产出output 目录里的多个候选 Epoch


42
Advanced Defaults

高级参数保持默认

高级参数并非没有价值,但同时改动会让结果无法定位原因。先用干净的基线跑通,再针对明确的问题处理。
噪声设置

全部留空

noise_offset、multires iterations / discount 会改变噪声分布,与锐化无关。

数据增强

全部关闭

color / flip / random crop 可能改变身份颜色、方向或裁掉关键特征。

日志

TensorBoard

logging_dir=./logs;W&B 需要账号与 API key,首轮不用。

随机种子

seed = 3139060772

参考配置使用的固定值,便于复现训练顺序;换成任意固定值都可以,但它不能让结果跨硬件逐位一致。

clip_skip

不要拿 SD 参数套用

Anima 不走传统 CLIP 主线,保持界面默认即可,它不负责调节角色相似度。

ui_custom_params

危险覆盖

直接用 TOML 覆盖表单值。只有清楚最终配置时再粘贴。

分布式训练

单卡留空

ddp_timeout 与 bucket view 只在多卡 DDP 场景处理。

调试选项 anima_profile_window、NaN 检查、RoPE mismatch 等用于定位后端问题,普通训练保持“显示调试选项”关闭。
43
Preview

把第一章写好的测试提示词填进预览

固定 prompt、seed、尺寸和采样设置,每轮样图才有可比性。否则画面变化可能只是随机差异,无法判断 LoRA 是否真的进步。

提示词

CONTROL
enable_preview
定期让当前 LoRA 出图,直接观察它学到了什么;代价是额外时间和显存峰值。
开启
positive_prompts
必须包含触发词,否则测试的是底模能力,不是角色是否被 LoRA 召回。
含 mynova
negative_prompts
保持固定,用于排除明显低质与不需要内容。
固定
sample_at_first
训练前先出一张底模图,后续变化才有明确的比较起点。
开启
sample_every_n_epochs
每 4 轮出一张样图;模型每轮都保存,看到好图时前后轮次的文件都在。
4

采样参数

ANIMA
sample_width / height
与训练目标一致,便于观察细节。
1024
sample_cfg
Anima 官方建议区间 4–5。
4.5
sample_seed
固定随机起点,让每轮的画面变化主要来自训练进度,而不是不同的噪声。
42
sample_steps
建议 30–50;40 是稳定对比点。
40
sampler / scheduler
Anima 内置 Rectified Flow 预览。
euler / simple
44
Submit

最后一分钟检查,然后点“开始训练”

右栏“开始训练”只是提交子进程。路径问题和显存问题可能在模型加载后才暴露。
model_train_type = "anima-lora"
lora_type = "lora"
train_data_dir = "./train/mychar"
resolution = "1024,1024"
output_name = "mynova_v01"
optimizer_type = "pytorch_optimizer.CAME"
unet_lr = 3e-5
network_dim = 32
network_alpha = 24
mixed_precision = "bf16" # RTX20/Turing 改 fp16
全部重置
保存参数
读取参数
下载配置文件
导入配置文件
加载训练预设
开始训练
终止训练
三模型路径都存在DiT、Qwen3、VAE 文件大小正常。
数据路径选父目录下一级能看到 5_mychar
图片与 txt 一一对应抽查至少 10 组,触发词一致。
总步数与保存间隔合理首轮约 1000–3000 步,每轮保存。
下载 TOML 留档把配置名和数据版本写进实验记录。
点击后不要反复再点。一次只能运行一个训练任务;需要停训时先看日志是否真的卡死。
45
Monitor & Quality

盯监控:确认训练真的在跑

“训练中”可能仍在加载或缓存。只有 step 持续增加,才说明参数真的在更新;Loss 用来确认过程正常,最终质量仍看固定样图。
状态 = 训练中说明任务没有退出,但还要继续看 step
step / epoch 持续增加这是模型权重正在更新的直接证据
GPU 显存有占用说明计算已进入显卡;缓存阶段负载会波动
Loss / LR / it/s 更新过程有输出,日志末尾同时没有 ERROR
127.0.0.1:6008 · Train Monitor
Next Trainer 训练监控页
学得太少

触发词还原不出目标

各轮都不像、身份不稳定;先确认标签与路径,再考虑增加训练量。

合适区间

身份稳定,仍可变化

换动作、镜头、背景时仍像目标,但不会总复刻训练图。

过拟合

越来越像训练原图

低权重也强行出现固定姿势、服装或背景,应选更早 epoch。

Chapter 07 / Deploy

第七章:部署到 ComfyUI,选出最佳一轮


上一章内容多个候选 Epoch 文件
本章要做放文件 → 跑基线 → 比 Epoch → 定权重
本章产出定稿的 LoRA、推荐权重和测试记录


47
From Checkpoint to Image

多个 Epoch 该选哪一个?

训练结束得到的是一组训练量不同的 LoRA,没有唯一的“正确文件”。先选出能泛化的一轮,再决定加载权重。
为什么每轮都值得保留 每个 Epoch 都是不同训练量下的一个版本

较早轮次可能还没学会,较晚轮次可能开始死记。编号只表示先后,不代表质量,所以不能盲选最后一轮。

为什么部署时还能调权重 LoRA 是挂在底模上的可调影响,不是独立模型

权重越高,角色特征越强,也越可能压制动作和背景控制。建议从 0.7、0.85、1.0 三档实测。

较早 Epoch

可能欠拟合

触发词召回弱、身份不稳;先排除标签或路径错误。

最佳区间

稳定且可控

身份成立,同时动作、服装、构图与背景仍能改变。

较晚 Epoch

可能过拟合

低权重也强行复刻训练姿势、服装或背景。

SELECT

最佳 safetensors

固定预览和多场景实测后选定。

ATTACH

Anima + 选中 LoRA

同一 DiT、Qwen3、VAE,并写入触发词。

GENERATE

逐步生成画面

从噪声开始,反复使用训练学到的修正方向。

DECODE

VAE 解码出图

latent 重新变成最终像素图。

48
Deploy · Files

把四类文件放进 ComfyUI 对应目录

“复制进目录”只表示 ComfyUI 能看见文件。真正出图时,工作流还必须分别选择同一套 DiT、Qwen3、VAE,并挂载训练得到的 LoRA。
ComfyUI/models/
  ├─ diffusion_models/
  │  └─ anima-base-v1.0.safetensors
  ├─ text_encoders/
  │  └─ qwen_3_06b_base.safetensors
  ├─ vae/
  │  └─ qwen_image_vae.safetensors
  └─ loras/
     └─ mynova_v01-000008.safetensors
1
准备近期且支持 Anima 的 ComfyUI旧内核可能没有对应模型加载能力;第三方节点名称会变化,以组件作用为准。
2
可直接复用训练时的三件套不需要另找一套“推理版”底模,文件完整且版本匹配即可。
3
复制一个候选 Epoch先选中间轮次做首测;确定最佳版本后再清理和归档。
4
刷新模型列表或重启 ComfyUI四个下拉框都能找到对应文件,才算文件部署完成。
最小工作流:先确认无LORA情况下能独立出图,再挂 LoRA。
不要用传统整合 Checkpoint 节点硬套。Anima 采用拆分组件的方式加载;LoRA 也必须与 Anima 体系匹配。
49
Deploy · First Image

先生成一张不挂 LoRA 的图像

先确认底模链路能独立出图,后续差异才能归因到 LoRA。两次生成固定 Prompt、Seed、尺寸和采样设置,只改变是否加载 LoRA。
LOAD

导入最小 Anima 工作流

逐项选择 DiT、Qwen3 与 VAE。

BASE

先生成无 LoRA 对比图像

使用含 mynova 的同一 Prompt;只是不挂 LoRA,记录底模原本能力。

ATTACH

只增加候选 LoRA

权重先设 0.85;Prompt、Seed、尺寸和采样设置全部不变。

COMPARE

第二次生成

其它值全部不动,只观察角色特征和控制能力。

底模也失败

先查部署链路

模型目录、工作流版本、三个组件选择或显存有问题,与 LoRA 质量无关。

只挂 LoRA 才失败

检查文件与体系

确认加载的是 Anima LoRA、文件完整,并换一个已保存 Epoch 交叉验证。

两张都能生成

进入质量判断

比较身份特征是否出现,同时检查动作、镜头和背景是否仍听 Prompt。

50
Deploy · Selection

两轮对比:锁定最佳 Epoch 和权重

Epoch 决定“训练到了哪一轮”,加载权重决定“本次叠加多强”。不要同时乱换两者:先固定 0.85 比 Epoch,再固定最佳 Epoch 比权重。
第一轮筛选 · Epoch早 / 中 / 晚各选一个

统一使用权重 0.85,分别生成头像、全身和复杂背景。排除叫不出身份或已经黏住构图的版本。

01

头像

脸、发型和标志细节稳定。

02

全身

比例成立,动作与服装可换。

03

复杂背景

不会强行带出训练环境。

第二轮定档 · 权重0.70 / 0.85 / 1.00

固定最佳 Epoch 和同一套三场景,只改加载权重。记录最像、最可控以及最容易过强的档位。

身份不足
判断
先提高权重;仍不稳定再换稍晚 Epoch。
姿势黏住
判断
先降低权重;仍无法控制再换更早 Epoch。
三场景都稳
完成
归档 LoRA、TOML、触发词、底模版本和推荐权重。
最终结果不只是一个 safetensors。同时保存它依赖什么、怎么调用、用哪个权重、在哪些场景验证过,以后才能复现。
51
Troubleshooting

出错了?按这张表排查

先看训练监控实时日志末尾,再看根目录 sd-trainer-log.txt。记录第一条真正的 ERROR。
网页打不开
原因
终端被关、依赖安装失败或端口变化。
处理
重跑 run_gui.bat,以终端实际网址为准。
模型加载时报错
原因
DiT / Qwen3 / VAE 缺失、未下完整或路径填错。
处理
重新运行模型下载脚本,逐项用选择器确认。
找不到训练图片
原因
选到了 5_mychar 子目录或没有数字前缀结构。
处理
训练页改选父目录;确认图片与 txt 同名。
CUDA Out of Memory
原因
显存不足、其它程序占用或预览峰值。
处理
batch 1、图片缓存落盘、checkpoint,再逐步增加 blocks_to_swap。
Loss NaN / 立刻失败
原因
精度组合、坏图、激进学习率或高级网络设置。
处理
先按显卡选择 bf16 或 fp16,保留角色预设起始值,检查坏图并关闭 full precision。
能出图但不听控制
原因
数据过于重复、标签没拆开变量或训练过量。
处理
选更早 epoch;下一版补多样图并重新整理 caption。
ComfyUI 找不到 LoRA
原因
文件没放进 models/loras,或列表尚未刷新。
处理
核对目录与扩展名,刷新模型列表或重启 ComfyUI。
触发词没有效果
原因
拼写不一致、权重过低、选错 Epoch 或 LoRA 未接入模型链。
处理
固定基线逐项核对触发词、加载器、权重和候选文件。