部署YOLOv8至GPU时遭遇OSError 22错误,请求技术支持
YOLOv8 GPU训练报错解决指南
问题详情
使用Ultralytics官网提供的YOLOv8训练代码:
import torch from ultralytics import YOLO model = YOLO('yolov8n.yaml') # build a new model from YAML model = YOLO('yolov8n.pt') # load a pretrained model (recommended for training) model = YOLO('yolov8n.yaml').load('yolov8n.pt') model.train(data='coco128.yaml', epochs=100, imgsz=640) # Train the model
运行环境:
- Ultralytics YOLOv8.0.90
- Python 3.8.2
- torch 1.12.0+cu113
- CUDA:0(NVIDIA GeForce RTX 3060,12288MiB)
GPU训练时持续报错,CPU训练可正常运行(耗时3小时),报错信息如下:
train: Scanning E:\python_learning\datasets\coco128\labels\train2017.cache... 126 images, 2 backgrounds, 0 corrupt: 100%|██████████| 128/128 [00:00<?, ?it/s] Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Program Files\Python38\lib\multiprocessing\spawn.py", line 116, in spawn_main exitcode = _main(fd, parent_sentinel) File "C:\Program Files\Python38\lib\multiprocessing\spawn.py", line 125, in _main prepare(preparation_data) File "C:\Program Files\Python38\lib\multiprocessing\spawn.py", line 236, in prepare _fixup_main_from_path(data['init_main_from_path']) File "C:\Program Files\Python38\lib\multiprocessing\spawn.py", line 287, in _fixup_main_from_path main_content = runpy.run_path(main_path, File "C:\Program Files\Python38\lib\runpy.py", line 262, in run_path code, fname = _get_code_from_file(run_name, path_name) File "C:\Program Files\Python38\lib\runpy.py", line 232, in _get_code_from_file with io.open_code(fname) as f: OSError: [Errno 22] Invalid argument: 'E:\\python_learning\\venv\\<input>'
报错原因
核心问题是多进程训练无法识别交互式环境的脚本路径:GPU训练默认启用多进程加速,但如果在Python交互式shell、Jupyter Notebook等环境中运行代码,系统找不到实际的脚本文件路径(报错中的<input>就是证据),导致进程初始化失败。CPU训练默认单进程,因此不受影响。
解决方案
使用独立脚本文件运行
将训练代码保存为train.py文件,通过命令行执行:python train.py这是最可靠的解决方式,多进程能正确识别脚本路径。
禁用多进程训练
如果必须在交互式环境运行,在model.train()中添加workers=0参数,强制单进程:model.train(data='coco128.yaml', epochs=100, imgsz=640, workers=0)注意:禁用多进程会降低GPU训练速度。
升级YOLOv8版本
旧版本(如8.0.90)存在多进程路径兼容问题,升级到最新版本:pip install ultralytics --upgrade验证数据集路径
确认coco128.yaml中的数据集路径配置正确,避免使用特殊字符,路径可统一使用正斜杠/:train: E:/python_learning/datasets/coco128/images/train2017/ val: E:/python_learning/datasets/coco128/images/val2017/
内容的提问来源于stack exchange,提问作者Mark47
相关产品推荐
相关产品推荐

