GitHub-Vach数字人形象——windows部署项目部署记录

Hujiazeng/Vach: Real time streaming talking head (github.com)

参考教程

annaconda安装、conda配置镜像、conda安装、配置虚拟环境

【实时流式AI数字人技术分享 (环境部署篇)】——这个up留了好几手,实际是想让人找他代安装

一步步教学在 Windows 下面安装 pytorch3d 来部署 xuniren 这个项目 - 坤坤 - 博客园 (cnblogs.com)——最重要的教程,但是项目不同

MinGW-w64的安装详细步骤(c/c++的编译器gcc、g++的windows版,win10、win11真实可用)_windows安装c++编译器-CSDN博客并配置环境变量——重要的编译工具

VS2019的安装和使用(附2019和2022官方链接,附安装包)-CSDN博客——安装使用的编译环境Visual Studio2019/2022——官网——配置环境变量找不到 cl.exe 解决办法-CSDN博客(这里也有需要下载哪个文件)

安装cudatoolkit:CUDA Toolkit - Free Tools and Training | NVIDIA Developer——可以单独安装,也可以找本地的

CUDA12.1与11.8共存的主要问题 - 知乎 (zhihu.com)nvcc --version和nvidia-smi显示的CUDA Version不一致问题——重要的不是安装了什么,而是现在调用了什么

pytorch安装:一个最新版本、另一个找老版本——对应即可

pytorch3d安装教程:教程1教程2——各有优势——可以使用的pytorch3d的存在的对应版本查看

NeRF环境配置

Numpy的版本查看、降级(自定版本下载)_numpy官网上下载已经过期的版本-CSDN博客——numpy版本不兼容

C1189报错,需要改cuda的源代码。fatal error C1189: #error: -- unsupported Microsoft Visual Studio version!_fatal error c1189: #error: -- unsupported microsof-CSDN博客

简介

此项目为最简单的数字人形象,无LLM和ChatTTS接口,但是非常适于入门学习。

大体流程

配置环境-下载导入模型-运行

环境配置部分

软件下载

git

这玩意是个 工具,很好用,下载完了配置环境变量即可。git clone!!!!!!!!

conda

下载annaconda,并配置环境变量(如果在安装过程中选择了配置环境变量则会自动配置)。教程

VS

VS2019的安装和使用(附2019和2022官方链接,附安装包)-CSDN博客

安装VS下载工具,然后下载下图的MSVC组件和SDK组件,win10和win11相应下载即可,并将下载后存在的cl.exe、

需要配置的环境变量Path 不是Path

安装VS后还可能遇到C报错问题,如C1189,有个印象,到时候回来看即可

可以参照此文章。更改 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include\crt\host_config.h wen'j文件中的‘_MSC_VER >=’后边的值,根据自己x下载的VS版本改成不会报错的即可。

zhi'j直接改成1700 2000即可,不会报错。

MinGW

直接下载文件然后配置环境变量即可,也可以下载installer。

环境变量配置(不是path)

ninja

可能会需要吧ninja的环境变量加入,但是如果没有提示就不管了。下载后加入环境变量(不是path)即可。github位置:Release v1.12.1 · ninja-build/ninja (github.com)。此部分在下文编译安装NeRF时会提到。

CUDA

cuda安装可能会有多种,且现nvidia安装游戏驱动时可能会安装一个版本。当然也可以去直接下载cudatoolkit并配置环境变量。可能会有游戏驱动和自己下载的cuda同时存在的情况,这时你想用哪个,就把相应的版本放到环境变量(Path)里并把它上移到前边,系统就会提前调用。

nvcc --version  #会调用的cuda
nvidia-smi  #游戏驱动一起下载的cuda

以上命令可以用来jian'y检验是否安装成功。

以下为环境变量

其中有一个cub home,这个可以有也可以没有,是cuda V 11.3之前需要的东西。可以在github的右侧Releases下载。NVIDIA/cub: [ARCHIVED] Cooperative primitives for CUDA C++. See https://github.com/NVIDIA/ccclbing并配置变量。

如果以上软件和环境变量都弄好了,恭喜你,走完70%了,接下来就是在终端里操作了。

你已经下载好了VS 2022并配置好环境变量,能在“开始”内搜索到“x64 Native Tools command Prompt for VS 2022”这个终端了,这是一个编译器(说白了就是用来安装python原本安装不了的C++的一些库的)用这个编译器就能安装了NTR右键!管理员运行!

虚拟环境创建及配置-主打的就是一个版本对应。

在安装过程中需要安装什么第三方库就安装即可。

当然可以先安装requirements.txt的库。即到requirements.txt所在文件夹内运行(在一个镜像内读取并下载requirements.txt内的第三方库):

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

创建虚拟环境

在终端内输入以下创建虚拟环境,在“ ”内为你的环境名称,我的叫torch3d1,在AImodel文件夹里,所以如此显示。python版本选择此项目支持的,有时新版本不支持,例如本项目需要下载pytorch3d,其支持的python版本就那些,所以需要提前看看这个pytorch3d支持哪些版本(anaconda.org)

例如我的cuda安装的是11.8,所以以此为出发点,找到cuda对应的版本(虽然是linux但是可以编译安装,不用在意)。发现这个pytorch最多支持pyt211(即2.11版,你可以先去看看下边pytorch的安装)所以就找对应的,我的cuda版本是11.8(cu118)所以就找对应的,发现python版本可以装3.10/3.11我之前有3.10,所以在此我就安装的3.10。此时可以记住相应的pytorch版本,后续会用。

在此处根据pytorch3d版本选择好了,后续目标就很明确。

conda create -n “这里输入你的虚拟环境名称” python=3.10

激活虚拟环境

conda activate XXXXXXX(你上边创建时候的虚拟环境名称)

现在你就有了一个虚拟环境,可以在这个虚拟环境随便造,弄坏了大不了直接删掉就行。

下载项目

看看自己的文件目录在哪儿。

进入自己的工作目录,下边的代码是终端的简单操作,cd就是进入文件夹,可以先输入文件夹名称的字母然后按Tab就能快速选择。

cd D:\AImodel\
D: 
#tips : cd ..为进入上一文件夹

现在git下来这个叫Vach的项目,下载的位置就是上边你进入的位置。如果结构不好看,可以在pycharm里看结构,但是操作一定要在“x64 Native Tools command Prompt for VS 2022”里操作。

git clone https://github.com/Hujiazeng/Vach.git

下载好了以后,就可以开始安装其他拓展/库了。

安装其他拓展/库

rerequirements

下边的requirements是我后续总结的,加上了最后额外需要的库。

requirements.txt

其中numpy需要装1.26.4版本。(要2.0.0以下)

pip install -U numpy==1.26.4

pytorch

PyTorch官网

首先就是pytorch了,虽然安装是先要安装pytorch,但是现在pytorch3d的选择相对少一些,所以只能下载现有pytorch3d支持的pytorch版本,所以我们就像上边创建环境时的python版本一样,先去看看现在pytorch3d有那些支持的pytroch版本。如果你在上边选择python时已经选好了,那就下载对应的pytorch即可。我在上边选好了,就是对应版本,我需要下载旧版本,因为新版本的pytorch没有相应的pytorch3d支持,但是我也会展示下载新版本的方法,不想看可以跳过。

新版本下载:去官网,下载你的系统、安装方式(一个不行换另一个,我用的Pip)、语言、cuda版本对应的选项,最后复制下边的command,在终端输入运行即可。例如我的:我想下载稳定版、我是win系统、conda我试过下不下来我就用的pip、我用的python语言、我cuda版本是11.8(用上边下载时候的nvcc -version命令看自己的运行的版本),就进行了如此选择。

重点来了,旧版本(支持的版本)的下载。如果你想下载之前的版本(你的cuda是老的)就点

去找对应的版本,但一定要一一对应。例如我选择的pytorch3d为下图:

则我需要找到cuda v11.8、python、win系统的 2.10版本的pytorch。如下图红框。

我试了试conda下载不下来,还是用的pip哈哈哈,不过都一样。

等待下载下来即可。并可通过以下代码查看是否安装成功,且是否在使用GPU版本的pytorch:

使用方法:创建一个.py文件,在终端里输入

python "文件名".py即可,我的叫pyttest.py,我就运行python pyttest.py(当然你得在这个文件所在的文件夹内运行)。

import torch
print(torch.cuda.is_available())
def main():
    print("当前使用的 PyTorch 版本:", torch.__version__)

if __name__ == "__main__":
    main()
if torch.cuda.is_available():
    device = torch.device("cuda")
    print("Using GPU:", torch.cuda.get_device_name(0))
else:
    device = torch.device("cpu")
    print("Using CPU")

pytorch3d

按照正常流程,pytorch下载完了才要看pytorch3d,但是之前我们已经确定了pytorch3d的版本,所以直接安装即可。

我是在conda里下载的(这个就能下载哈哈哈)下载之前要对应之前找的pytorch3d的信息,这个下载就是直接安装,不是用安装包编译安装(即运行setup.py)但是要把它搞到对的路径上。将以下几个版本信息对应好,直接在代码里改即可。

conda install https://anaconda.org/pytorch3d/pytorch3d/0.7.5/download/linux-64/pytorch3d-0.7.5-py310_cu118_pyt210.tar.bz2

安装完成如下图:

但是这个安装,会安装到环境的Lib里 ,我们要把它放到环境的Lib的python里,才能在python里使用。

你需要找到你虚拟环境的文件夹位置。

我的路径是这个

在里边找到以下路径其中会有安装的两个文件夹

把这两个文件夹复制到这里即可。

然后再终端里输入pip list,看看有没有pytorch3d这个包,也可以顺便看看有没有torch这个包。

显示这个就表示可以了。

编译安装NeRF拓展(freqencoder、raymarching、gridencoder、shencoder)

安装前可能遇到一些问题:

首先是不能从pkg_resources导入packaging,是由于setuptools的版本太新了,要降低版本。

python -m pip install setuptools==69.5.1

先让自己的终端处于以下两个状态(终端运行):

set DISTUTILS_USE_SDK=1
set PYTORCH3D_NO_NINJA=1

这四个都类似,找到他们,修改参数、运行setup程序即可。

位置在\Vach\talkers\er_nerf内,分别进入freqencoder、raymarching、gridencoder、shencoder四个文件夹,运行setup.py 即

python setup.py install

如果直接运行setup会出现此报错,

原因是这个setup里先调用的是C++14,我们把这个注释掉。同时将最后的Bulid(编译安装相关的命令)加上新的参数:.with_options(use_ninja=False)即可。此处就是之前提到的ninja是否安装的问题。如下图:

安装完成后如下图:不同文件安装就是不同名称而已,都是0.0.0。

下载并导入模型

模型使用此项目提供的奥巴马模型。下载地址

下载后解压放到相应文件夹即可,文件夹路径:

\Vach\talkers\er_nerf\data

保证和此结构一致

其中下载的模型文件夹的名称要命名为obama,如果你想换成自己的模型,后续进行变量名称修改即可。

运行

现在虽然到了运行部分,但是还可能遇到问题。最常见的是一些python第三方库的安装。

不过运行就完事!!!!安装啥包都会提醒。

如果提示numpy版本要小于2.0.0,则安装一个老的就行。代码如下。

pip install -U numpy==1.26.4

hai还可能进不去huggingface,可以关梯子试试,或者整个镜像

set HF_ENDPOINT=https://hf-mirror.com

https://blog.csdn.net/s1156605343/article/details/104730637

结语

本次部署最大的坑是,我同时两个项目穿插部署,其中freqencoder、raymarching、gridencoder、shencoder虽然叫的一样,但是其中的参数类型和数量都存在不同,所以要根据每个项目作者会自己更改,虽然我们也可以更改源代码,但是为了避免不必要的麻烦,还是老实安装对应的即可。下图为两个项目源代码的不同。导致参数不同。

如下为需要的参数类型:基于错误信息,你需要检查grid_encode_forward的调用,确保参数满足以下要求:

第1到第4个参数是torch.Tensor类型。

第5到第9个参数是int类型。

第10个参数是float类型。

第11个参数是Optional[torch.Tensor],意味着它可以是torch.Tensor类型或者None。

第12个参数是int类型。

第13个参数是bool类型。

第14个参数是int类型。

如下为相应的打印的参数类型:inputs <class 'torch.Tensor'>
embeddings <class 'torch.nn.parameter.Parameter'>
offsets <class 'torch.Tensor'>
outputs <class 'torch.Tensor'>
B <class 'int'>
D <class 'int'>
C <class 'int'>
L <class 'int'>
S <class 'numpy.float64'>
H <class 'int'>
dy_dx <class 'NoneType'>
gridtype <class 'int'>
align_corners <class 'bool'>


GitHub-Vach数字人形象——windows部署项目部署记录
http://192.144.219.54/:8080//archives/Vach-deploy
作者
CavyW
发布于
2024年06月20日
更新于
2024年06月27日
许可协议