我正在cuda上使用此代码训练yolov8模型:
from ultralytics import YOLO
import torch
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)
results = model.train(data="data.yaml", epochs=15, workers=0, batch=12)
results = model.val()
model.export(format="onnx")
我会得到南的所有损失
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
1/15 1.74G nan nan nan 51 640: 4%
我试过在cpu上训练一个模型,它工作得很好。当我安装cuda并开始训练它时,问题出现了。
我原以为阅读取数据时会出错什么的,但一切正常。
我认为这与内存有关,因为当我减少模型的图像大小时,它工作正常,但当我增加批处理大小时,同样减少的图像大小再次显示NaN。因此,这是图像大小、批处理大小和内存之间的交易。我不确定100%是否正确。但这是我通过实验得出的结果。但如果你对这个问题有好的答案,请分享一下。
2条答案
按热度按时间3qpi33ja1#
我也遇到过类似的问题,但是当我升级到最新版本的ultralytics时,这个问题就消失了。在ultralytics 8.0.26的环境中一切正常,然后我在8.0.30左右的环境中发现了NaN丢失的问题。创建一个ultralytics 8.0.42的新环境似乎解决了这个问题。
rekjcdws2#
我在尝试训练我的自定义数据集时遇到了同样的问题。正如这里其他人所建议的,我也尝试将ultralytics版本降级到8.0.42,但没有效果。修复它的方法是运行下面的命令:
尝试打开args文件(runs\detectrain\args.yaml),并根据那里或docs(https://docs.ultralytics.com/cfg/)中可用的内容不断更改参数,也许在某个时候你可以解决这个问题。我相信你应该尝试更改的主要参数是设备到“cpu”。
我怀疑问题可能出在这里讨论的GTX16系列(https://github.com/ultralytics/ultralytics/issues/1148)上。