核心内容摘要
唤醒内心潜能:解锁“猛妇”的力量,你的无限可能
本文收录于 《全栈 Bug 调优实战版》 专栏。
专栏聚焦真实项目中的各类疑难 Bug从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解形成一套可复用、可沉淀的实战知识体系。
无论你是初入职场的开发者还是负责复杂项目的资深工程师都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论助你稳步进阶、放大技术价值 。
特别说明文中问题案例来源于真实生产环境与公开技术社区并结合多位一线资深工程师与架构师的长期实践经验经过人工筛选与AI系统化智能整理后输出。
文中的解决方案并非唯一“标准答案”而是兼顾可行性、可复现性与思路启发性的实践参考供你在实际项目中灵活运用与演进。
欢迎你关注、收藏并订阅本专栏与持续更新的技术干货同行一起让问题变资产让经验可复制技术跃迁稳步向上。
问题描述详细问题描述如下yolov5这个数据跑得特别慢咋回事这是安装yolov5时的截图yolov5数据跑得特别慢咋回事我看GPU—mem一直显示0G如何优化提高速度全文目录 问题描述 请知悉如下方案不保证一定适配你的问题✅️问题理解✅️问题解决方案方案 A把 CUDA / GPU 彻底打通最推荐速度提升通常是 530 倍A
先做“3 秒钟诊断”系统层是否识别到 NVIDIA GPUA
再做“Python 层诊断”PyTorch 是否看到 CUDAA
正确安装“GPU版 PyTorch”最关键的一步A
显式指定 YOLOv5 使用 GPU避免自动选择失败A
成功标志你对照一下就知道是否打通方案 B修复 Pillow 报错防止训练线程异常稳定性提升方案 C即便用上 GPU仍然“更快”的训练/推理加速配置锦上添花方案 D如果你根本没有 NVIDIA GPU或环境无法上 CUDA那就只能走 CPU 优化路线提升有限✅️问题延伸你截图里几个“容易误解”的点✅️问题预测你接下来很可能遇到的坑我提前帮你挡住✅️小结 结语 互动说明 文末福利技术成长加速包 Who am I? 请知悉如下方案不保证一定适配你的问题如下是针对上述问题进行专业角度剖析答疑不喜勿喷仅供参考✅️问题理解从如上两张截图里其实已经把“慢”的根因暴露得很清楚了你现在 YOLOv5 基本是在用 CPU 跑截图 1 里明确显示torch-
1.
2cu111 CPU并且detect:参数里device是空的没有选到 GPU推理耗时也很像 CPUinference
4
5ms单张 640 推理接近半秒就是典型 CPU 速度训练界面 GPU_mem 一直 0G这也基本等价于PyTorch 没有识别到 CUDA 可用 GPUtorch.cuda.is_available()为 False所以训练只能走 CPU速度自然会“特别慢”。
你还有一个附带问题Pillow 版本不兼容导致的报错截图 2 报错AttributeError: FreeTypeFont object has no attribute getsize这通常是Pillow10把getsize()移除了而 YOLOv5 v
0 的utils/plots.py还在调用它导致训练时画图线程崩掉虽不一定让训练彻底停但会带来异常/不稳定。
✅结论你慢的核心原因是没用上 GPU或系统/环境不支持 CUDA其次是Pillow 版本坑。
✅️问题解决方案方案 A把 CUDA / GPU 彻底打通最推荐速度提升通常是 530 倍先问你一个关键澄清问题不耽误你照下面步骤做 你电脑是NVIDIA 显卡吗型号是什么如 RTX 3060/4060/1650只有 NVIDIA 才能走 CUDAAMD/Intel 不能用 CUDA 跑 PyTorch GPUA
先做“3 秒钟诊断”系统层是否识别到 NVIDIA GPU在 Windows 的 cmd 里运行nvidia-smi可能出现的结果✅ 能看到显卡信息、驱动版本、CUDA Version说明驱动基本OK❌ 报“不是内部或外部命令”说明没装 NVIDIA 驱动或驱动装坏了❌ 看到但报错可能驱动损坏/版本不匹配如果你nvidia-smi都没有PyTorch 100% 不可能用 GPU。
A
再做“Python 层诊断”PyTorch 是否看到 CUDA在你的 yolov5 环境conda env里运行python -c import torch; print(cuda_available, torch.cuda.is_available()); print(torch, torch.__version__); print(cuda_version, torch.version.cuda); print(device_count, torch.cuda.device_count());你现在大概率会看到cuda_available False这就解释了为什么GPU_mem0G。
A
正确安装“GPU版 PyTorch”最关键的一步你截图里虽然显示cu111但依然跑在 CPU说明你环境里要么装的是CPU build或装混了或者系统驱动/CUDA 不可用导致 PyTorch 禁用 CUDA或者装了 CUDA 版 torch但环境里有冲突包比如装了两个 torch 版本最稳的做法先卸干净再重装pip uninstall -y torch torchvision torchaudio然后二选一推荐更省事更不容易踩坑用 conda 安装带 CUDA 的 PyTorchconda install -y pytorch torchvision torchaudio pytorch-cuda
1
8 -c pytorch -c nvidia说明pytorch-cuda 会把 CUDA runtime 一起装进环境不需要你额外安装系统 CUDA Toolkit。
如果你坚持用 YOLOv5 v
0 torch
1.
2 cu111较老组合用 pip 装对应 wheel把安装命令放 code block 里避免你复制错pip install torch
1.
2cu111 torchvision
0.
2cu111 torchaudio
0.
2 -f https://download.pytorch.org/whl/torch_stable.html装完后再次运行 A2 的 python 检查必须看到cuda_availableTruedevice_count1A
显式指定 YOLOv5 使用 GPU避免自动选择失败推理python detect.py --weights yolov5s.pt --source data/images --device 0训练python train.py --img 640 --batch 16 --epochs 100 --data data/coco
yaml --weights yolov5s.pt --device 0如果你有多张卡--device 0,1多卡要再配合 DDP这里先不展开A
成功标志你对照一下就知道是否打通训练日志里GPU_mem不再是 0G会出现类似
3G/8G速度会明显变化CPU 可能
x it/sGPU 通常能到数 it/s 十几 it/s取决于显卡和 batchnvidia-smi里能看到 python 进程占用显存、GPU 使用率上升方案 B修复 Pillow 报错防止训练线程异常稳定性提升你截图 2 的报错FreeTypeFont has no attribute getsize这是典型Pillow 10 兼容性问题。
YOLOv5 v
0 时代常用 Pillow
x。
直接在 yolov5 环境里pip install pillow10或指定稳定版本pip install pillow
9.
0✅修完后这类绘图/日志线程报错会消失训练更稳定。
方案 C即便用上 GPU仍然“更快”的训练/推理加速配置锦上添花当你 GPU 打通后再考虑这些优化不然 CPU 下意义不大训练提速增大 batch显存允许就增大GPU越吃得饱越快例如从 16 → 32 → 64看显存DataLoader workers 调大python train.py ... --workers 8Windows 上建议 4~8 起步CPU强可更高开启缓存数据集小效果明显python train.py ... --cache ram避免频繁绘图/保存过多IO 很慢少保存图、少保存中间结果尤其机械硬盘下明显推理提速FP16 半精度NVIDIA GPU 常见加速python detect.py ... --device 0 --half导出 ONNX/TensorRT极致速度这属于进阶路线导出后用 TensorRT 推理速度可再翻倍如果你需要我可以按你的显卡型号给你一套完整导出/部署命令方案 D如果你根本没有 NVIDIA GPU或环境无法上 CUDA那就只能走 CPU 优化路线提升有限如果你是 AMD/Intel 或者没有独显那么 GPU_mem0G 是正常的。
CPU 下能做的优化用小模型yolov5n.pt/yolov5s.pt降低输入尺寸--img 416或--img 320用 OpenVINO / ONNXRuntimeCPU 下会更快一些尽量用 SSD避免 IO 拖死但必须讲真话CPU 训练 YOLOv5 仍然会很慢工程上一般不建议。
✅️问题延伸你截图里几个“容易误解”的点torch-
1.
2cu111 CPU代表什么cu111表示这个 torch wheel可能带 CUDA
1
1 支持但后面显示CPU说明当前运行环境没有可用 CUDA 设备驱动/硬件/安装冲突导致torch.cuda.is_availableFalse为什么device为空YOLOv5 会自动选 GPU但前提是torch.cuda.is_available()为 True。
一旦为 False它就会把 device 当 CPU用空字符串/cpu表示。
为什么 detect 推理有 483msGPU 下 yolov5s 640 通常是几毫秒十几毫秒级看显卡483ms 明显就是 CPU 推理的数量级。
✅️问题预测你接下来很可能遇到的坑我提前帮你挡住装了 CUDA torch 但还是 cuda_availableFalse常见原因NVIDIA 驱动没装/版本太老你机器是 AMD/Intel GPU无 CUDAconda 环境里混装了多个 torchCPU/GPU用了 WSL/虚拟环境但驱动没透传GPU 有了但仍然慢常见原因batch 太小GPU 吃不饱数据加载太慢workers 太低/硬盘慢/图片太大在 Windows 上多进程 dataloader 配置不佳训练时频繁写盘保存图片/结果Pillow 报错反复出现你只要锁住 pillow10 基本就稳定了尤其 v
0 旧版 yolov5。
✅️小结你现在 YOLOv5 慢、GPU_mem0G 的根因PyTorch 没有用上 CUDA → 全程 CPU。
最优先做nvidia-smi是否正常torch.cuda.is_available()是否为 True重装 GPU 版 torch推荐 conda pytorch-cuda训练/推理显式--device 0同时修掉 Pillow 兼容性pip install pillow10 结语 互动说明希望以上分析与解决思路能为你当前的问题提供一些有效线索或直接可用的操作路径。
若你按文中步骤执行后仍未解决不必焦虑或抱怨这很常见——复杂问题往往由多重因素叠加引起欢迎你将最新报错信息、关键代码片段、环境说明等补充到评论区我会在力所能及的范围内结合大家的反馈一起帮你继续定位 如果你有更优或更通用的解法非常欢迎在评论区分享你的实践经验或改进方案你的这份补充可能正好帮到更多正在被类似问题困扰的同学正所谓「赠人玫瑰手有余香」也算是为技术社区持续注入正向循环 文末福利技术成长加速包 文中部分问题来自本人项目实践部分来自读者反馈与公开社区案例也有少量经由全网社区与智能问答平台整理而来。
若你尝试后仍没完全解决问题还请多一点理解、少一点苛责——技术问题本就复杂多变没有任何人能给出对所有场景都 100% 套用的方案。
如果你已经找到更适合自己项目现场的做法非常建议你沉淀成文档或教程这不仅是对他人的帮助更是对自己认知的再升级。
如果你还在持续查 Bug、找方案可以顺便逛逛我专门整理的 Bug 专栏《全栈 Bug 调优实战版》。
这里收录的都是在真实场景中踩过的坑希望能帮你少走弯路节省更多宝贵时间。
✍️如果这篇文章对你有一点点帮助欢迎给 bug菌 来个一键三连关注 点赞 收藏你的支持是我持续输出高质量实战内容的最大动力。
同时也欢迎关注我的硬核公众号 「猿圈奇妙屋」获取第一时间更新的技术干货、BAT 等互联网公司最新面试真题、4000G 技术 PDF 电子书、简历 / PPT 模板、技术文章 Markdown 模板等资料统统免费领取。
你能想到的绝大部分学习资料我都尽量帮你准备齐全剩下的只需要你愿意迈出那一步来拿。
Who am I?我是 bug菌热活跃于 CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等技术社区CSDN 博客之星 Top
华为云多年度十佳博主/卓越贡献者、掘金多年度人气作者 Top40掘金、InfoQ、51CTO 等平台签约及优质作者全网粉丝累计30w。
更多高质量技术内容及成长资料可查看这个合集入口 点击查看 ️硬核技术公众号「猿圈奇妙屋」期待你的加入一起进阶、一起打怪升级。
- End -