
MMPose 对接 PyTorch 2.0兼容说明与六大姿态模型训练速度基准实测解读【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose本文基于 MMPose 官方笔记 PyTorch 2.0 Compatibility and Benchmarks说明 MMPose 1.0.0 起对 PyTorch 2.0 框架的兼容性解读 ViTPose、HRNet、RTMPose 共六组官方基准测试中训练速度提升幅度 显存变化两组数据的真实含义并给出在 PyTorch 2.0 环境下安装 MMPose、复现训练并自行度量速度的完整路径。读完后你可以独立完成 PyTorch 2.0 训练环境的搭建看懂基准表中每个数字的计算口径并掌握在自己的硬件上复测模型训练吞吐的方法。一、背景MMPose 1.x 与 PyTorch 2.0 的兼容关系官方笔记给出的结论是MMPose 1.0.0 已兼容 PyTorch 2.0用户在 MMPose 上可以继续使用 PyTorch 2.0 框架带来的最新特性与性能改进笔记同时指出With the integration of inductor, users can expect faster model speeds——即结合 PyTorch 2.0 引入的 Inductor 编译器组件负责模型算子融合与加速生成可以期待更快的模型运行速度。该兼容性测试与配套文档、代码重构工作由社区 PR #2136 完成笔记末尾标注了提交来源。结合仓库其他资料可以确认这条兼容声明所处的版本坐标系从 Changelog 看MMPose 1.x 自 beta 版本起就基于新的训练引擎 MMEngine 构建Built upon the new training engine MMEngine, MMPose 1.x unifies the interfaces of dataset, models, evaluation, and visualization with faster training and testing speedv1.0.0 正式版于 2023-04-06 发布。也就是说PyTorch 2.0 兼容是建立在 MMEngine 训练框架之上的训练入口、Runner、Hook 体系均为 MMEngine 风格。从 安装文档 看MMPose 的最低依赖为 Python 3.7、CUDA 9.2、PyTorch 1.8。PyTorch 2.0 高于最低要求线升级不破坏版本矩阵文档同时明确新旧版本对应关系mmdet 3.x ⇔ mmpose 1.x ⇔ mmcv 2.x因此使用 PyTorch 2.0 训练 MMPose 1.x 时应搭配 mmcv 2.x 与 mmengine避免与旧版mmcv-full仅对应 mmcv 1.x混装。运行时依赖清单见 requirements/runtime.txt核心链路为 PyTorch、torchvision、OpenCV、numpy/scipy 等框架层依赖 mmengine 与 mmcv 2.x 通过 MIM 单独安装。二、官方基准数据六个模型的训练速度与显存变化官方笔记 给出的完整基准表如下原表完整继承模型训练速度Training Speed显存MemoryViTPose-B29.6% ↑ (0.931 → 0.655)10586 → 10663ViTPose-S33.7% ↑ (0.563 → 0.373)6091 → 6170HRNet-w3212.8% ↑ (0.553 → 0.482)9849 → 10145HRNet-w4837.1% ↑ (0.437 → 0.275)7319 → 7394RTMPose-t6.3% ↑ (1.533 → 1.437)6292 → 6489RTMPose-s13.1% ↑ (1.645 → 1.430)9013 → 9208对这张表可以逐列做定量解读1. 训练速度列的两个数字是单轮训练耗时不是吞吐率。对每一行做反算均可验证百分比 (原耗时 − 新耗时) / 原耗时。例如 ViTPose-B(0.931 − 0.655) / 0.931 ≈ 29.6%HRNet-w48(0.437 − 0.275) / 0.437 ≈ 37.1%RTMPose-t(1.533 − 1.437) / 1.533 ≈ 6.3%。六行全部吻合。因此括号内是升级到 PyTorch 2.0 前后相同训练任务每个迭代耗时的对比原文未标注单位由数值量级可推断为秒/迭代↑ 百分比表示升级后训练提速的幅度。2. 提速幅度与模型结构强相关跨度从 6.3% 到 37.1%。HRNet-w48 收益最大37.1%HRNet-w32 相对较小12.8%RTMPose-t 仅 6.3%。原文档没有给出归因分析从源码结构看可以推断不同骨干网络ViT 的 Attention 算子、HRNet 的高分辨率多尺度卷积、RTMPose 基于 CSPNeXt/RepVGG 的轻量卷积结构的算子组合与融合空间不同导致编译器与内核优化带来的收益不一致。该推断仅为基于数值差异的合理猜测官方文档未下结论。3. 显存整体小幅上升或基本持平。六组数据中显存全部微增如 HRNet-w32 由 9849 增至 10145RTMPose-s 由 9013 增至 9208原文未标注单位从量级看可推断为 MB。也就是说 PyTorch 2.0 的提速是以略增显存为代价换来的对显存紧张的卡型需要留意。4. 复现前提。表中绝对数值由官方在特定硬件平台上测得原文档未记录具体 GPU 型号与 PyTorch 小版本因此不能直接按数值复现可复现的是对比方法——同一份配置、同一份数据、同一并行度分别在 PyTorch 1.x 与 2.0 环境训练比较单迭代耗时。三、基准涉及的六个模型在仓库中的位置表中模型均为 MMPose 内置算法仓库中可直接找到对应实现与配置便于读者核对测的是哪些模型RTMPose-t / RTMPose-sCOCO 人体 2D 关键点配置rtmpose-t_8xb256-420e_coco-256x192.py、rtmpose-s_8xb256-420e_coco-256x192.py同名 m/s/l 系列完整结果见 rtmpose_coco.md。以 RTMPose-s 配置为例其训练超参为AdamW 优化器lr4e-3weight_decay0.、总 420 epochmax_epochs 420其中 stage2 30 epoch、前 1000 次迭代 LinearLR 线性预热、自 210 epochmax_epochs // 2起余弦退火至base_lr * 0.05输入分辨率 256×192。复测速度时应沿用这套配置保证与基准可比。HRNet-w32 / HRNet-w48自顶向下热图方案配置td-hm_hrnet-w32_8xb64-210e_coco-256x192.py、td-hm_hrnet-w48_8xb32-210e_coco-384x288.py。同一目录下还存在大量变体DARK 解码、UDP 解码/UDP-regress、混合精度td-hm_hrnet-w32_fp16-8xb64-210e_coco-256x192.py、GridMask/CoarseDropout 增强等完整清单与精度指标见 hrnet_coco.md。ViTPose-B / ViTPose-STransformer 骨干方案模型说明页vitpose_coco.md。该文档特别提示使用 ViTPose 需要额外安装 [MMPreTrain]mim install mmpretrain1.0.0来提供 ViT 骨干这也是复测 ViTPose 训练速度时的一个额外环境前提。四、搭建 PyTorch 2.0 MMPose 训练环境以 安装文档 的最佳实践为骨架针对 PyTorch 2.0 场景的完整步骤如下第 1 步创建 conda 环境conda create --name openmmlab python3.8 -y conda activate openmmlab第 2 步安装 PyTorch 2.0 与对应 torchvision安装文档建议按 PyTorch 官方指南安装并按需核对 CUDA/cudatoolkit 匹配关系# GPU 平台指定 2.0 系列版本具体小版本以官方安装页为准 conda install pytorch2.0.1 torchvision0.15.2 -c pytorch # CPU 平台 conda install pytorch2.0.1 torchvision0.15.2 cpuonly -c pytorch注意安装文档原文提醒以上命令会自动安装最新版的 PyTorch 与对应的 cudatoolkit请检查它们是否与您的环境匹配升级前确认显卡与 CUDA 版本受支持。第 3 步使用 MIM 安装 MMEngine 与 MMCV 2.xpip install -U openmim mim install mmengine mim install mmcv2.0.1第 4 步安装 MMPose从源码安装推荐克隆仓库后在根目录执行pip install -e .可编辑模式安装作为 Python 包安装直接pip install mmpose。第 5 步可选安装检测依赖与 ViTPose 依赖若运行依赖人体检测框的 demotopdown_demo_with_mmdet.py等需要检测器mim install mmdet3.1.0若训练 ViTPose另需mim install mmpretrain1.0.0版本排错提示安装文档原文新旧版本对应关系为 mmdet 2.x ⇔ mmpose 0.x ⇔ mmcv 1.xmmdet 3.x ⇔ mmpose 1.x ⇔ mmcv 2.x遇到兼容性问题时先执行pip list | grep mm检查对应关系后升级或降级依赖。注意mmcv-full只对应旧版 mmcv 1.x需先卸载再通过mim install mmcv安装 mmcv 2.x。五、复现训练并度量单迭代速度启动训练配置以 HRNet-w32 为例RTMPose/ViTPose 替换为第三节给出的配置路径即可# 单卡训练 python tools/train.py configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w32_8xb64-210e_coco-256x192.py # 8 卡分布式训练对应配置名中的 8xb64 / 8xb256 batch 设定 bash tools/dist_train.sh 8 configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w32_8xb64-210e_coco-256x192.py训练入口分别为 tools/train.py 与 tools/dist_train.sh。MMEngine Runner 的日志会逐迭代打印time字段单迭代耗时这正是基准表中原耗时 → 新耗时所度量的指标记录稳定的time均值即可作为该模型在你硬件上的速度样本。控制变量要点保证与官方表同口径可比同一份配置同骨干、同输入分辨率、同 batch 设定避免256x192与384x288等不同分辨率混比——表中 HRNet-w320.553s 量级与 RTMPose-t1.533s 量级的耗时差异本身就反映了模型规模/分辨率的不同同一数据规模与并行卡数仅切换 PyTorch 版本1.x 与 2.0MMPose、MMCV、MMEngine 版本保持一致。辅助工具可用 tools/analysis_tools/get_flops.py 打印所选模型配置的 FLOPs用于确认对比前后模型规模未发生变化。六、小结官方结论MMPose 1.0.0 兼容 PyTorch 2.0结合 Inductor 可获得更快的模型速度兼容性测试见 PR #2136。官方实测六组主流模型训练速度提升 6.3%37.1%表中数字为单迭代耗时对比百分比按耗时降幅/原耗时反算验证成立显存小幅上升绝对收益随模型结构而异。环境前提mmpose 1.xv1.0.0 mmcv 2.x mmengine最低要求见 安装文档ViTPose 需另装 mmpretrain检测类 demo 需 mmdet 3.x。复现方式官方基准未记录硬件平台绝对数值不可直接复现按同配置、同数据、同并行度、只切换 PyTorch 版本的方法用训练日志中的单迭代耗时即可在自己的环境得到同口径对比。参考文档PyTorch 2.0 Compatibility and Benchmarks中文笔记、PyTorch 2.0 Compatibility and Benchmarks英文笔记、Changelog、安装指南。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考