| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 6 个月前 | ||
| 4 个月前 | ||
| 8 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 6 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 7 个月前 |
在昇腾Atlas A2环境上适配VGGT模型的推理
本样例基于VGGT开源模型完成其在NPU上的推理适配,并提供其在相机位姿估计、点云重建、深度估计三个任务上的精度评测脚本。详细内容可至精度评测章节查看。
此外,本样例基于VGGT模型在NPU进行了性能优化,目前VGGT模型在25张图片输入下,推理时间下降至1.12秒。详细内容可至性能优化章节查看。
执行样例
CANN环境准备
-
本样例的执行依赖CANN开发套件包(cann-toolkit)与CANN二进制算子包(cann-kernels),目前使用CANN软件版本为
CANN.8.5.0。 请从CANN软件包下载地址下载Ascend-cann-toolkit_${version}_linux-${arch}.run与Ascend-cann-${chip_type}-ops_linux-${arch}.run软件包,并参考CANN安装文档进行安装。 -
本样例依赖的torch以及torch_npu版本为2.7.1。 请从Ascend Extension for PyTorch插件下载torch与torch_npu安装包,本样例依赖的torch与torch_npu版本分别为2.7.1和2.7.1.post2。
conda create -n vggt python==3.11.13 conda activate vggt pip3 install torch==2.7.1 pip3 install torch_npu==2.7.1.post2
网络模型代码准备
- 本仓库依赖VGGT的开源仓库代码。
- 进入VGGT的官方仓库,下载VGGT模型网络结构代码:
git clone https://github.com/facebookresearch/vggt.git - 下载本仓库代码:
git clone https://gitcode.com/cann/cann-recipes-spatial-intelligence.git - 将VGGT仓库的网络模型文件以非覆盖模式复制到本项目目录下。
cp vggt/visual_utils.py cann-recipes-spatial-intelligence/models/vggt/ cp -r vggt/examples cann-recipes-spatial-intelligence/models/vggt/ cp -rn vggt/vggt/dependency cann-recipes-spatial-intelligence/models/vggt/vggt/dependency cp -rn vggt/vggt/heads cann-recipes-spatial-intelligence/models/vggt/vggt/ cp -rn vggt/vggt/layers cann-recipes-spatial-intelligence/models/vggt/vggt/ cp -rn vggt/vggt/utils cann-recipes-spatial-intelligence/models/vggt/vggt/ - 安装Python依赖:
cd cann-recipes-spatial-intelligence/models/vggt/ pip3 install -r requirements.txt - VGGT 模型权重下载:VGGT model checkpoint,并将权重文件
model.pt复制到ckpt目录下。 - 模型权重与模型结构在文件目录中罗列如下:
VGGT +--- examples +--- demo_infer.py +--- eval +--- ckpt +--- model.pt +--- quant +--- vggt +--- dependency +--- heads +--- layers +--- models +--- utils +--- sp
快速启动
本样例准备了单卡和多卡环境下的推理样例脚本。 执行脚本前,请参考Ascend社区中的CANN安装软件教程,配置环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
推理bf16模型脚本单卡运行:
python demo_infer.py --ckpt "ckpt/model.pt"
推理bf16模型脚本多卡运行:
bash infer_test.sh
多卡推理的参数说明:
torchrun --nproc_per_node=1 demo_infer.py \
--ckpt ${model_base} \
--images_path examples/kitchen/images \
--enable_sp \
--ulysses_degree 1 \
--ring_degree 1
--nproc_per_node:torchrun参数,每个节点启动的进程数,需要等于使用的NPU卡数--ckpt:模型checkpoint文件路径--images_path:输入图像序列所在目录--enable_sp:是否启用序列并行,默认值: False,前提条件为nproc_per_node > 1--ulysses_degree:Ulysses并行度,约束ulysses_degree × ring_degree = nproc_per_node;num_attention_heads 必须能被 ulysses_degree 整除--ring_degree:Ring并行度,约束ulysses_degree × ring_degree = nproc_per_node
推理int8模型,需要先生成int8模型(当前实现中,只将VGGT模型中K=4096的Linear层进行了8bit量化):
python demo_infer.py --ckpt "ckpt/model.pt" --buildW8A8
in8模型会生成在当前路径,再使用该int8模型进行推理:
python demo_infer.py --ckpt VGGT_model_W8A8.pt --enableW8A8
Citation
@inproceedings{wang2025vggt,
title={VGGT: Visual Geometry Grounded Transformer},
author={Wang, Jianyuan and Chen, Minghao and Karaev, Nikita and Vedaldi, Andrea and Rupprecht, Christian and Novotny, David},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
year={2025}
}