设定目标
想清楚自己的训练目标,是画风,人物,或者说是一个概念。
下一代LORA训练器
Next Trainer 基于开源框架,把 LORA 训练所需的各个步骤整合到同一套 GUI 中。打标、参数设置、训练进度都可以在一个界面里完成,不需要手写命令。
打标、参数、训练进度都有可视化界面。
提供快速安装包与训练预设参数。
支持保存与导出参数。
通常来说,训练一个LORA需要下面这些步骤。
想清楚自己的训练目标,是画风,人物,或者说是一个概念。
解压Next Trainer便携包,下载需要的模型文件。
筛出清楚、互补的训练图。
添加正确的训练提示词
加载角色预设,只改必要项。
盯步数、显存、Loss 与样图。
ComfyUI,对比选出最佳。
LoRA 可以给模型补充它原本没有或很弱的能力,比如让它学会一个完全不认识的角色。与全量训练相比,LoRA 消耗的资源很少,普通显卡也可以完成。
保留 DiT、Qwen3、VAE 原有的作画、文字理解和图像转换能力,LoRA 只改动其中很小一部分。
从图片和提示词中学习角色、画风或概念。本教程的角色预设主要训练 Anima 的 DiT 分支。
使用时挂回同体系底模并写上触发词,通过加载权重控制新特征的强弱。
补充底模原本不稳定的角色、画风或概念,同时保留动作、构图和背景的可控性。
与全量微调相比,可训练参数和文件体积都小得多。
无法补充模型原本不具备的知识;不同 LoRA 之间也可能互相冲突。
学习稳定的脸、发型与固有特征,同时保留动作、镜头、服装和背景的可控性。
需要正面、侧面、背面、远近和细节图;不要让同一桌面或手势反复出现。
需要覆盖不同主体和构图,让模型学习笔触、配色和质感,而不是记住某个角色。
mynova,保留脸与发型,服装和场景可以更换。没有新增信息的重复图只会加重已有规律,LoRA 学不到新内容。
检查脸、发型、眼睛与标志性细节。
检查比例、服装切换和不同动作。
检查角色是否会强行带出训练背景。
身份特征稳定,同时站、坐、近景、远景和环境都能变化。只会复刻训练图不算成功。
比较 Epoch 时全部固定,比较权重时只改权重,这样结果差异才有明确的来源。
后面所有 Caption 都把它放在最前,部署测试也使用同一个拼写。
训练需要反复进行大量矩阵运算,CPU 无法以相近速度替代。推荐使用4070以及以上的算力。
1024 图像会产生大量中间结果。显存不足会直接 OOM,多等一会儿并不能解决。
block swap 会把部分模型临时移到内存,内存太小会频繁交换甚至卡死。
三件套、依赖、缓存和多轮 LoRA 会持续占用空间,机械硬盘会拖慢读取与卸载。
通常需要配合缓存与 blocks_to_swap=16,每计算一段就要和内存交换,速度明显下降。
batch 2、梯度检查点和图片缓存落盘通常可以工作,先用参考配置跑通完整流程。
通常还需要 cache text encoder + LoKr + swap 24,速度很慢,不建议作为标准 LoRA 的首轮方案。
bf16;RTX 20 / Turing 在 GUI 中将 mixed_precision 改为 fp16。不要只看显存大小。D:\AI\SD-Trainer,可以减少脚本和第三方库的路径兼容问题。python_embeded 与 SD-Trainer 缺一不可。run_gui.bat。首次启动需要联网补齐约 3GB 依赖,终端窗口必须保持打开。Anima 参数、数据集打标、标签编辑都在这里。
看 GPU、步数、Loss、样图和实时日志。
关掉它,两个网页都会停止工作。
Download-Anima-Model.bat。脚本会从 ModelScope 下载并放到正确目录。负责在 latent 中一步步还原画面,是 LoRA 主要挂载和学习的对象。
把 caption / prompt 转换成模型能理解的语义条件。
在像素图与压缩后的 latent 表示之间转换。
三者分别负责“作画与学习、读懂文字、压缩与还原图片”。每个组件缺一不可。
触发词指向角色,其它词说明服装、动作和背景。
把标签转换成 DiT 可用的文字条件。
保留构图和细节线索,减少直接处理像素的成本。
从不同程度的噪声中,尝试还原与文字相符的图像。
只保存这次训练新增的变化,不复制完整 Anima。
先把图片编码结果存盘,后续 epoch 直接复用。
省显存和时间,但 caption 不能每轮随意变化。
输出依赖这条完整链路,不能脱离 Anima 单独使用。
首次运行 VAE,后续轮次直接读取结果,减少等待和显存占用。
首次运行 Qwen3,之后 caption 必须保持不变,否则缓存会与文字不一致。
缓存只影响速度、显存和磁盘,不会让模型学到更多内容。
127.0.0.1:28000 显示 v2.9.1。127.0.0.1:6008 可访问。tagger-models/wd14 在新版便携包中已内置。sd-models、output、logs 通常是指向 SD-Trainer 内对应目录的链接,两边看到的是同一份数据。install_xformers.bat。便携包不要手动安装 flash-attn;标准模式下 attn_mode 留空即可自动检测。/lora/sd3.html。本教程后续所有参数都以此页为准。标准 / Fast 模式、打标、标签编辑与监控入口。
从上到下按模型、数据、保存、训练、网络、缓存排列。
按钮下方是实际提交的配置预览,开训前在这里复核。
一套角色、服装或风格,不混入第二个无关主体。
删除模糊、重复、水印和严重崩坏图。
不拉伸,交给 bucket 处理不同横竖构图。
WD14 先自动打标,再人工修正。
每张触发词都用同一拼写,放在最前。
用 5_mychar 之类的数字前缀控制采样。
随机打开至少 10 组,确认一一对应。
保留一份原始数据,方便重新打标或对比。
dataset_raw,整理后的训练集 train/mychar/5_mychar。这样自动工具不会碰到唯一一份原图。脸型、核心发型、标志性配件、主服装或你真正想学的风格规律。
角色在不同背景、姿势、光线下反复出现,模型才有依据判断这些变化不属于角色身份。
LoRA 很可能把白墙、正面站姿和固定构图一起绑定到触发词。
身份在多张图里反复成立,背景与动作不断变化,模型才有依据把两者分开。
脸、发型和关键配件有足够像素,遮挡不过度。
头像、半身、全身都有,不全是同一机位。
让触发词不被固定表情和姿势绑死。
只练一套服装就保持一致;想只练角色本体则应增加服装变化并准确标注。
连拍或只改一点的图会让某个构图被过度采样。
训练会把错误也当作目标特征学进去。
固定文字容易成为触发词的伴生图案。
目标只占画面很小区域时,有效身份信号太弱。
竖图进竖向 bucket;最大边不超过预设 1024。
正方图进方形 bucket。
横图进横向 bucket;最大边不超过预设 1024。
相似比例放进同一批次,既让张量尺寸一致,又尽量保留原构图。它不是提高画质的算法。
1024,1024,不要为了“更清晰”随意升到 1536 或 2048。train/mychar,图片本身放在带数字前缀的子目录。5_mychar 表示每轮重复读取 5 次。它会加强现有内容,也会一起放大坏手、错标签和固定背景。
增加图片数量比重复凑数更有价值。
不会凭空产生新的角度或细节。
首轮约 1000–3000 步即可开始比较。
图片只告诉模型“画面长什么样”,标签还要告诉它“哪些属于角色、哪些可以换”。这一章先自动打标,再人工校对。
每一组都是对模型的一次纠正:图里是白衬衫,文字也写了 white shirt,模型就更容易把衣服归到这个词,而不是算进角色触发词。
重复只是让同一条信息被多次强调;错标签则会把模型持续推向错误理解。所以先修标签,再讨论训练量。
衣服、动作、景别、背景随图片变化,生成时更容易单独控制。
所有图同一白墙且从不标背景,模型没有反例证明“角色可以离开白墙”。
不存在的特征造成梯度噪声;同一触发词多种写法会把召回能力分散。
不要用 girl、anime 这类底模早已认识的常用词。
mynova 与 my_nova 会被当作不同文本。
不同衣服、动作、背景写进 caption,生成时才更容易控制。
例如每张都是蓝眼,但 caption 从不写 blue eyes,LoRA 更可能把蓝眼视作角色默认身份。
如果服装会变,就应分别写 white shirt、dress、jacket,让角色与服装解耦。
5_mychar 子目录。wd14-convnextv2-v2 已内置,第一次无需额外下载。
若选父目录,必须开启“递归搜索子文件夹”。
完成后,每张图片旁边应出现同名 .txt。
copy 会覆盖旧 txt。已有标签时必须先备份。interrogator_model识别模型download_endpoint下载源path图片目录5_mychar,不是它的父目录。threshold通用阈值character_threshold角色阈值additional_tags附加词long_hair → long hair。| 冲突选项 | 行为 | 建议 |
|---|---|---|
ignore | 保留旧 txt | 已有精修标签 |
copy | 覆盖旧 txt | 首次打标 |
prepend | 合并并去重 | 理解结果后再用 |
5_mychar 子目录后逐张核对。错角色、错发色、画面中不存在的物体优先处理。
放在第一个位置,拼写完全一致。
姿势、景别、服装、背景按图片实际内容写。
与图像无关的标签删除。
prefer_json_caption,但当前 vendored Anima 训练后端实际按 caption 扩展名读取文本文件。不要只准备 JSON。图片和标签同名;caption_extension = ".txt"。
当前版本不要把它理解成“有 JSON 就一定会按结构化字段训练”。即使开关保持默认,也要确保每张图旁边存在可读 txt。
每轮打乱标签顺序,keep_tokens = 1 保住句首触发词;配合 caption_dropout 0.02、tag_dropout 0.05 做轻度正则。文本编码器缓存因此保持关闭。
*_anima_te.npz 再重新开始。cache_text_encoder_outputs 与 shuffle_caption / caption_tag_dropout_rate。参考配置选择后者、关闭缓存;后端会校验并拒绝不一致组合。轮廓和细节仍很明显,模型主要练习小幅修正。
部分结构被遮住,模型要结合 Caption 判断该保留什么。
可见线索很少,更依赖文字含义和已经学到的整体规律。
训练随机抽取不同扰乱程度,让模型既学整体结构,也学局部细节,而不是只会复刻清晰训练图。
sigmoid / 1.0 / uniform 是参考配置使用的组合。随意改动只会偏向某类难度,并不等于更清晰。
差得多,Loss 较高;猜得更接近,Loss 通常下降。它只评估这道训练题,不知道图片是否好看、角色是否像。loss的短期波动是正常现象;但是一直稳步下降的loss也有可能欠拟合。
只证明方向预测更准,不证明已经是最佳 epoch。
数值不再下降,可能只是当前数据能教的内容已接近上限。
检查坏图、精度、学习率和日志;正常波动不需要立刻停训。
适合单角色、服装和道具等常规概念。
lora_type适配器类型pretrained_model_name_or_pathAnima DiTvaeQwen Image VAEqwen3文本模型llm_adapter_path额外 LLM Adaptert5_tokenizer_pathT5 tokenizerconfigs/t5_old,无需另外下载。resume恢复训练状态save_state 保存的状态目录,普通 LoRA 文件不适用。qwen3_max_token_lengtht5_max_token_lengthtimestep_samplingsigmoid 配套的 sigmoid_scale 保持 1.0。discrete_flow_shiftweighting_schemeuniform 表示各阶段平均计分。attn_modesplit_attnvae_chunk_sizevae_disable_cachecache_latents 区分。unsloth_offload_checkpointingtrain_data_dir5_mychar 的父目录,程序才能读取数字前缀并应用重复次数。reg_data_dirprior_loss_weightresolutionenable_bucketbucket range / stepoutput_namemynova_v01,避免覆盖旧实验或挑错 epoch。output_dirsave_model_assave_precisionsave_every_n_epochssave_statemax_train_epochs最大轮数train_batch_size单步图片数gradient_checkpointing梯度检查点gradient_accumulation_steps梯度累加network_train_unet_only只训练 DiTnetwork_train_text_encoder_only只训文本编码器例如 30 张图、重复 5 次、训练 32 轮、batch 2,监控页通常会显示约 2400 步。以页面实际数字为准。
更新会更综合,但每个小批仍占一次显存,所以它不能替代 batch 1。
3e-5。learning_rate总学习率unet_lrDiT 学习率text_encoder_lr文本学习率lr_scheduler学习率曲线cosine_with_restarts 让学习率按余弦曲线衰减后重启,共 2 个周期(lr_scheduler_num_cycles = 2)。lr_warmup_steps预热optimizer_type优化器两者共同决定训练量,但无法互相简单抵消;力度翻倍可能直接破坏稳定性。
L1 / L2 / Huber 改变误差的计分方式,与清晰度无关。
min_snr_gamma、Prodigy、EmoSens 与自定义 optimizer args 都是有前置调参逻辑的选项。首轮留空,不要同时换优化器和学习率。network_weightsnetwork_dimnetwork_alphanetwork_dropoutdim_from_weightsscale_weight_normstrain_normpissa_initnetwork_args_customenable_base_weightmixed_precision混合精度cache_latents缓存图片特征cache_latents_to_disk图片缓存落盘cache_text_encoder_outputs缓存文字理解结果cache_*_to_disk文字缓存落盘max_data_loader_n_workers数据加载进程batch 2 + checkpoint + 图片缓存落盘。
把部分 DiT block 放到 CPU,速度下降。
可能还要关闭 shuffle_caption、改开文字缓存;速度很慢,不保证首轮成功。
每次计算前后都要搬运,数值越大越省显存,也越慢。只有 OOM 时才逐步增加。
fp8_base 与 fp8_base_unet 即使勾选也会在启动时警告并强制关闭;full_fp16、full_bf16 也保持关闭。noise_offset、multires iterations / discount 会改变噪声分布,与锐化无关。
color / flip / random crop 可能改变身份颜色、方向或裁掉关键特征。
logging_dir=./logs;W&B 需要账号与 API key,首轮不用。
参考配置使用的固定值,便于复现训练顺序;换成任意固定值都可以,但它不能让结果跨硬件逐位一致。
Anima 不走传统 CLIP 主线,保持界面默认即可,它不负责调节角色相似度。
直接用 TOML 覆盖表单值。只有清楚最终配置时再粘贴。
ddp_timeout 与 bucket view 只在多卡 DDP 场景处理。
anima_profile_window、NaN 检查、RoPE mismatch 等用于定位后端问题,普通训练保持“显示调试选项”关闭。enable_previewpositive_promptsnegative_promptssample_at_firstsample_every_n_epochssample_width / heightsample_cfgsample_seedsample_stepssampler / scheduler5_mychar。各轮都不像、身份不稳定;先确认标签与路径,再考虑增加训练量。
换动作、镜头、背景时仍像目标,但不会总复刻训练图。
低权重也强行出现固定姿势、服装或背景,应选更早 epoch。
较早轮次可能还没学会,较晚轮次可能开始死记。编号只表示先后,不代表质量,所以不能盲选最后一轮。
权重越高,角色特征越强,也越可能压制动作和背景控制。建议从 0.7、0.85、1.0 三档实测。
触发词召回弱、身份不稳;先排除标签或路径错误。
身份成立,同时动作、服装、构图与背景仍能改变。
低权重也强行复刻训练姿势、服装或背景。
固定预览和多场景实测后选定。
同一 DiT、Qwen3、VAE,并写入触发词。
从噪声开始,反复使用训练学到的修正方向。
latent 重新变成最终像素图。
逐项选择 DiT、Qwen3 与 VAE。
使用含 mynova 的同一 Prompt;只是不挂 LoRA,记录底模原本能力。
权重先设 0.85;Prompt、Seed、尺寸和采样设置全部不变。
其它值全部不动,只观察角色特征和控制能力。
模型目录、工作流版本、三个组件选择或显存有问题,与 LoRA 质量无关。
确认加载的是 Anima LoRA、文件完整,并换一个已保存 Epoch 交叉验证。
比较身份特征是否出现,同时检查动作、镜头和背景是否仍听 Prompt。
统一使用权重 0.85,分别生成头像、全身和复杂背景。排除叫不出身份或已经黏住构图的版本。
脸、发型和标志细节稳定。
比例成立,动作与服装可换。
不会强行带出训练环境。
固定最佳 Epoch 和同一套三场景,只改加载权重。记录最像、最可控以及最容易过强的档位。
sd-trainer-log.txt。记录第一条真正的 ERROR。models/loras,或列表尚未刷新。