最近在部署SyncTalk虚拟数字人项目时,需要安装很多依赖项。在执行到以下命令时,安装PyTorch3D失败,输出如下信息:
(synctalk) C:\SyncTalk>pip install --no-index --no-cache-dir pytorch3d -f https://dl.fbaipublicfiles.com/pytorch3d/packaging/wheels/py38_cu113_pyt1121/download.html
Looking in indexes: https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple, https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
ERROR: Could not find a version that satisfies the requirement pytorch3d (from versions: none)
ERROR: No matching distribution found for pytorch3d
为解决这一问题,我决定克隆facebookresearch/pytorch3d官方仓库源码,自行通过本地编译的方式进行安装。
SyncTalk虚拟数字人项目依赖的PyTorch版本是1.12.1,CUDA版本是11.3,PyTorch3D版本是0.7.2。
编译PyTorch3D除了依赖CUDA之外,还需要依赖CUB和Visual Studio 2017或Visual Studio 2019。
根据CUB官方建议,CUDA 11.3对应的CUB版本是1.11.0,对照表地址:
https://github.com/NVIDIA/cub
。
我从CUB官方仓库下载了1.11.0版本压缩包:
https://github.com/NVIDIA/cub/archive/refs/tags/1.11.0.zip
,将其解压到任意路径,例如:
C:\Program Files\cub-1.11.0
。然后配置CUB_HOME系统环境变量,填写该路径,不需要额外添加到PATH系统环境变量。
另外,我还配置了CUDA_HOME系统环境变量,指向CUDA Toolkits 11.3的安装路径:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3
,并向系统环境变量PATH追加了
%CUDA_HOME%\bin;%CUDA_HOME%\libnvvp;
。
需要再次强调的是,这里配的是系统环境变量,不是用户环境变量。系统全局范围生效,而不是当前用户生效。
至于Visual Studio 2017或Visual Studio 2019,我电脑只安装了Visual Studio 2022。而VS官方下载页已经不开放VS2019及更早版本的下载,即便是登录Microsoft账号跳转到订阅服务页面,普通订阅也获取不到可用的下载地址。
经过一番搜索,发现这几个永久下载链接还没失效,大家可以下载收藏:
Visual Studio生成工具安装后,需要重启电脑。
解决了前置依赖条件和编译环境后,打开
x64 Native Tools Command Prompt for VS 2017
或
x64 Native Tools Command Prompt for VS 2019
,执行以下命令,开始克隆PyTorch3D 0.7.2版本,同时进行编译和安装:
(synctalk) C:\SyncTalk>set DISTUTILS_USE_SDK=1
pip install "git+https://github.com/facebookresearch/pytorch3d.git@v0.7.2"
编译并且安装成功后,我们验证一下是否可用:
(synctalk) C:\SyncTalk>python -c "import torch; import pytorch3d; print('PyTorch version:', torch.__version__); print('PyTorch3D version:', pytorch3d.__version__)"
PyTorch version: 1.12.1+cu113
PyTorch3D version: 0.7.2
PS:
CUDA Toolkits 11.3
的下载地址为:
https://developer.nvidia.com/cuda-11.3.0-download-archive
如果要编译和安装PyTorch3D最新稳定版,可以把
@v0.7.2
改为
@stable
。