How can I solve “avr_loss=nan”?

用户在使用 Kohya_ss GUI v25.0.3 训练 LoRA 标准模型时,遇到了训练过程中 avr_loss=nan 的问题。用户已经排除了 full_fp16 、混合精度设置等因素,并确认使用不同图片和字幕时训练正常,因此怀疑问题出在特定的训练图片或对应的 caption 文本上。

How can I solve "avr_loss=nan"?

How can I solve “avr_loss=nan”?

快速结论:该报错通常出现在 Kohya SD Scripts 训练 LoRA 时,由于数据集图片尺寸过大或图片内容与字幕不匹配导致 loss 爆炸为 NaN。优先排查图片尺寸是否超过模型支持范围,以及检查字幕文本中是否存在无意义或错误标记。

问题场景

用户在使用 Kohya_ss GUI v25.0.3 训练 LoRA 标准模型时,遇到了训练过程中 avr_loss=nan 的问题。用户已经排除了 full_fp16、混合精度设置等因素,并确认使用不同图片和字幕时训练正常,因此怀疑问题出在特定的训练图片或对应的 caption 文本上。

报错原文

avr_loss=nan

此报错会出现在训练日志和 TensorBoard 的 loss 曲线图中,通常伴随 loss 值突然变为 NaN 并停止训练。

原因分析

可能原因包括:

  • 图片尺寸不兼容:用户确认将图片尺寸从 1024×1024 改为 512×512 后问题解决,说明过大的图片尺寸(1024×1024)可能导致模型在特定层产生数值不稳定,进而引发 loss 为 NaN。
  • 字幕文本问题:虽然用户提供的 caption 看起来正常(kurara, 1girl, solo, dress, bow, ribbon, upper body, indoors...),但仍然可能存在无法被 tokenizer 正确解析的罕见字符或格式错误。
  • 优化器或学习率设置不当:虽然用户未提供完整训练参数,但过高的学习率或AdamW等优化器参数不当也可能是潜在原因(该 Issue 中未明确验证,属于推测)。

环境排查

  • Python 版本:3.10.9
  • PyTorch 版本:2.5.0+cu124
  • CUDA 版本:12.4 cuDNN 90100
  • GPU:NVIDIA GeForce RTX 4080(VRAM 16375MB, Arch 8.9)
  • Kohya_ss GUI 版本:v25.0.3
  • 图片配置:1024×1024 PNG 格式,24位深度,平均 900KB,共42张
  • 训练配置:未勾选 full_fp16,混合精度设置为 bf16,保存精度设置为 bf16

解决步骤

  1. 缩小图片尺寸(可优先尝试)

    将训练图片尺寸统一调整为 512×512 或更小的尺寸(如 256×256)。用户已验证将图片改为 512×512 后训练可正常进行。

  2. 检查字幕文本

    确保所有 caption 文件(如 01.txt)不包含特殊符号、空行或不可见字符。建议用纯文本编辑器打开检查,并删除所有非英语、非逗号分隔的标记。

  3. 降低学习率

    如果步骤1无效,尝试将学习率降低一个数量级(例如从 1e-4 降至 1e-5),以避免数值溢出。

  4. 关闭混合精度或切换精度模式

    尝试将混合精度从 bf16 改为 fp16 或直接关闭(设置为 no),查看 loss 是否恢复正常。虽然用户已经测试过 bf16,但不同硬件对 bf16 的支持可能存在差异。

  5. 增加梯度裁剪

    在训练参数中设置梯度裁剪值(如 max_grad_norm=1.0),防止梯度爆炸导致 loss=NaN。

验证方法

启动训练后,观察 TensorBoard 或日志中的 avr_loss 值。如果训练第一个 epoch 时 loss 显示为正常数值(而非 NaN),且之后继续稳定下降或变化,则表明问题已解决。同时确认训练可以运行到预设的 total_epochs(如80个epoch)而不中断。

参考来源

kohya-ss/sd-scripts #2137

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 8706

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注