尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

魔塔奇遇—我的第一次在线模型训练,在磕磕绊绊中求索

魔塔奇遇—我的第一次在线模型训练,在磕磕绊绊中求索 作为一个常年泡在 C/Qt/嵌入式板端的老码农云端 GPU 训练对我来说一直有点神秘。直到这次做 RV1126B 菜品识别本地 WSL 被禁、Colab 在国内又不稳定我才硬着头皮第一次走进了魔搭ModelScope的免费 PAI-DSW 算力。一、为什么必须上云训练项目是菜品识别最终要部署在 Luckfox AuraRV1126B GC2093这块板子上。板端那点资源根本没法训练神经网络所以训练必须放到云端。一开始考虑过几个方案本机 WSL被公司策略禁用pass。Google Colab需要 Google Drive国内网络断断续续数据集上传和权重下载都很痛苦pass。AutoDL按量付费价格不贵但用户先得注册、充值、选镜像对小白不友好。魔搭 ModelScope 阿里云 PAI-DSW免费 GPU A1024GB每月有免费计算时额度国内网络友好对第一次接触云端训练的人来说最友好。最终选了魔搭免费 GPU。这篇文章记录我从一个“云端训练小白”到磕磕绊绊跑完 YOLOv5n 的全过程。二、环境与配置在 ModelScope 新建实例时我选了项目配置GPUA1024GB 显存镜像ubuntu22.04-cuda12.1.0-py310-torch2.3.0Python3.10rknn-toolkit2 2.3.2 不支持 3.11工作目录/mnt/workspace数据集CC-FOOD-100实际 156 类约 3350 张有效标注图注意PAI-DSW 的工作目录是/mnt/workspace它是 NAS 持久化存储实例停止后数据不会丢/root是容器本地目录实例释放后会被清空。YOLOv5n batch 32 640×640 对 A10 来说非常轻松显存只占用 4~6GB。三、踩坑实录坑点 1JupyterLab 入口在哪第一次进去时我习惯性地点了一个看着像“开发环境”的按钮结果进的是WebIDE / Python Console不是我们要的 Terminal。真正的入口在实例列表页上点JupyterLab打开后是白色主题左侧文件栏顶部菜单File → New → Terminal才是黑窗口命令行。坑点 21.2GB 数据集上传慢JupyterLab 左侧直接拖拽上传速度取决于本地上行带宽。我这边 1.2GB 传了十几分钟。这里有一个血的教训上传期间不能关浏览器或刷新页面否则进度条会清零得从头再来。坑点 3脚本跑不通——路径问题我原来的脚本里写的是cd ~自动去找/root/food_dataset。结果 PAI-DSW 默认工作目录是/mnt/workspace脚本直接报错找不到数据集。后来把脚本改成自动检测当前平台工作目录/mnt/workspace或$HOME问题才解决。坑点 4yolov5 克隆失败训练用的是airockchip/yolov5Rockchip 官方适配版最终要导出--rknpu。第一次从 Gitee 克隆超时fallback 到 GitHub 也慢。后来给脚本加了--depth 1浅克隆并且自动清理不完整的.git目录重试才稳定下来。坑点 5字体下载失败——最折腾的一集训练启动后YOLOv5 会尝试从ultralytics.com下载 Arial 字体因为菜名是中文但实例无法解析该域名直接gaierror崩溃。这个坑来回折腾了好几回精确字符串匹配 patch失败云端 yolov5 版本和官方版本稍有差异字符串对不上。正则匹配 patch我在聊天窗口复制命令后$$里的反斜杠被当成 markdown 转义吃掉了实际执行变成了def check_font$[^)]*$:\n正则错配还是失败。最终方案改用chr(10)切行 def check_font in line判断零反斜杠终于稳定 patch 成功。这个经历让我深刻认识到给新手用户的多行命令里尽量别用反斜杠复制粘贴十次能丢九次。四、训练命令与参数python train.py \ --weights yolov5n.pt \ --data /mnt/workspace/food_dataset/food.yaml \ --epochs 100 \ --batch-size 32 \ --img 640 \ --noautoanchor \ --name food \ --device 0为什么加--noautoanchor因为板端后处理的 anchor 是写死的 YOLOv5 默认值。如果训练时重新聚类 anchor导出的模型在板端跑时框会错位。所以必须禁用自动 anchor 聚类。训练在 A10 上大概跑了几十分钟最终保存到runs/train/food4/因为前面名字冲突自动加了后缀。从终端输出的每类 P/R 看主流菜品效果不错长尾类样本极少自然偏低符合预期。五、训练后导出 ONNX 与转 RKNN训练完成只是万里长征第一步。要放到 RV1126B 上跑还需要# 1. 导出 Rockchip 适配的 ONNX python export.py --rknpu --weights runs/train/food4/weights/best.pt --img 640 # 2. 安装 rknn-toolkit2Python 3.10 只能用 2.3.2 pip install numpy1.26.4 onnx1.13.1 rknn-toolkit22.3.2 # 3. 转成板端 RKNN 模型 python food_convert.py food_yolov5n.onnx rv1126b i8 food_yolov5n.rknn calib_30.txt最终产物food_yolov5n.rknn板端 NPU 模型food_classes.txt156 类标签把这两个文件下载回本地发给板端同事做OBJ_CLASS_NUM 80 → 156的重编译和标签替换RV1126B 就能识别菜品了。六、写在最后第一次云端训练最大的敌人不是神经网络而是环境、路径、网络和复制粘贴。习惯了“本机即一切”的嵌入式思维后上云确实需要一个适应过程。但云端训练的好处也很明显A10 24GB 显存随开随用不用自己买显卡按运行时间计费停止实例后不扣时长国内平台网络稳定数据集上传 pip 安装都快。磕磕绊绊但模型总算跑出来了。下一步就是把它塞进 RV1126B让屏幕真正“认出”一道道菜。参考资料airockchip/yolov5: https://gitee.com/airockchip/yolov5ModelScope 魔搭社区ModelScoperknn-toolkit2 用户手册
返回列表