Model Migration Skill 是面向昇腾 NPU 的模型代码迁移技能,作用是将开源模型仓库克隆到本地并应用 NPU 适配补丁,使其具备在昇腾 NPU 上训练的条件。
用途与调用时机 当用户需要把开源模型迁移到昇腾 NPU、需要克隆模型仓库、需要应用 DrivingSDK 补丁,或咨询如何为 NPU 训练准备模型代码时,调用该技能。
信息收集 使用前需要向用户确认四项信息:模型名称(例如 BEVFormer)、服务器上的工作目录路径、数据集路径(若已准备)、预训练权重路径(若已有)。技能说明指出,DrivingSDK 仓库地址为 https://gitcode.com/Ascend/DrivingSDK,其中包含所需的补丁文件和训练脚本。
工作流程
- 在 DrivingSDK 的 model_examples 目录下克隆仓库。要求必须在 DrivingSDK/model_examples/<model_name>/ 目录内克隆,而不是在外部新建目录。以 BEVFormer 为例,先进入 <DrivingSDK_path>/model_examples/BEVFormer,再执行 git clone https://github.com/fundamentalvision/BEVFormer.git,会在当前目录下创建 BEVFormer 子目录。
- 将补丁文件复制到克隆的模型目录,例如 cp bev_former_config.patch BEVFormer/。
- 进入模型目录并切换到指定 commit:git checkout 66b65f3a1f58caf0507cb2a971b9c0e7f842376c。
- 应用 NPU 补丁:git apply --reject --whitespace=fix bev_former_config.patch。
- 建立数据集与权重链接:创建 data 与 ckpts 目录,分别用软链接指向数据集(nuscenes、can_bus)和预训练权重(r101_dcn_fcos3d_pretrain.pth)。
- 返回上级目录执行训练脚本,例如 bash test/train_performance_8p_base_fp32.sh --batch-size=1 --num-npu=8。
支持的模型 目前仅列出 BEVFormer:仓库地址 https://github.com/fundamentalvision/BEVFormer.git,指定 commit 66b65f3a1f58caf0507cb2a971b9c0e7f842376c,补丁文件 bev_former_config.patch;所需数据集为处理后的 nuscenes 与 can_bus,所需权重为 r101_dcn_fcos3d_pretrain.pth。
网络策略 若服务器可访问 GitHub,直接在服务器上 git clone;若网络超时,配置代理(export http_proxy=http://proxy:port)或将仓库克隆到本地后用 scp 传输到服务器。所有克隆均应使用 GitHub 官方链接,不使用镜像站点;网络超时优先配置代理。
验证与排查 迁移后可通过 ls -la 检查目录结构、用 git status 确认补丁已应用、检查 data/ 与 ckpts/ 下的软链接进行验证。补丁应用失败时,检查是否切换到正确 commit、查看 .rej 文件手动合并、确认补丁对应正确的模型版本;数据集或权重找不到时,核实路径与文件名是否匹配配置,并向用户索取正确路径。更多参考见 DrivingSDK/model_examples/ 及对应模型的 README。