最近有一个录课的需要,我不想浪费人力,只想用技术解决。需求很简单,就是用别人现成的录课视频中的形象和声线,再结合我提供的讲稿去生成一个新的录课视频。我觉得应该有现成的技术了,我想要免费大批量生产。最近看到这个EchoMimicV2项目,就想着在学校A100上部署来试一下。因为弄深度学习环境不是特别熟,很多坑肯定是没踩够,所以还是折腾了两天,记录一下免得忘了。因为机器环境比较特殊,对其他人来说就不一定有用了。
主要参考链接:EchoMimicV2:阿里推出的开源数字人项目,能生成完整数字人半身动画-CSDN博客(有缺)
【AI数字人教程】一幅图生成数字人,阿里EchoMimicV2两种部署方式教程-CSDN博客
首先官方的部署过程确实很简单,创建一个Python 3.10环境然后安装相关的库就完了。问题在于现有的cuda是11.8的,看官方的命令应该是装12.4版本。于是问了一下AI能不能用,AI都说最好装匹配cuda版本的库包。
过程有点忘了,我还是记录几个重要的点
一、首先xformers-0.0.28.post3装不上,明明仓库有,但pip就说没有,百思不得其解。 经过后来才知道是因为pytorch仓库里面编译好的whl 版本是带manylinux_2_的,而这个版本支持的版本是manylinux2014的,所以就没识别出来。 就离的于是第一次找了个0.0.27.post2+cu118 装了一下ta它会需要torch-2.4.0来安装(卸载已经装上不对的)。
二、 onnxruntime-gpu==1.20.1 安装过程中同样报了pypi仓库里没有,不解。最后一样是因为Linux平台不支持,而老版本的只支持到1.16.3。 如果强行安装1.20.1, 需要c++17编译什么的,还是装不上。没有root 的我也懒得折腾,所以就只能把requirements的依赖版本改成1.16.3。 百度了一下说1.16.3 能支持到cuda 12.1 ,应该是没问题的。
三、torch2.5.1 配 xformers-0.0.27.post2+cu118 能把界面启动起来,
但
但点“生成视频”还是有错。想来想去不知道咋办,另外看到在安装过程出现过nvidia-cublas-cu11 和 nvidia-cublas-cu12 这类依赖两个版本都下载下来了,感觉也不靠谱。所以最终还是决定试一下全部降版本。那么就是版本对应的问题,先确定了一下xformers与cuda的关系,xformers 0.0.26:支持CUDA 11.8。然后用xformers版本确定torch的版本是2.3.0 , 然后再确定torchvision==0.18.0。 都需要+cu118版本。nvidia-cublas-cu11 这些就只有11的。
最后的过程应该是这样
1. 到pytorch仓库安装torch 2.3.0
pip install pip -U
pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu118
2. 安装xformers-0.0.26.post1(我是下载回来安装的)
wget https://download.pytorch.org/whl/cu118/xformers-0.0.26.post1%2Bcu118-cp310-cp310-manylinux2014_x86_64.whl
pip install xformers-0.0.26.post1+cu118-cp310-cp310-manylinux2014_x86_64.whl
3. 重新安装torch 2.3.0+cu118
4. requirements修改onnxruntime-gpu==1.16.1,并安装剩下的库
pip install torchao --index-url https://download.pytorch.org/whl/nightly/cu118
pip install -r requirements.txt
pip install --no-deps facenet_pytorch==2.6.0
四、模型权重。git lfs install 没搞定,git clone方式也没把权重下载下来,还是用huggingface-cli download的方式最靠谱,当然数据源是国内镜像的hf-mirror.com。
huggingface-cli download BadToBest/EchoMimicV2 --local_dir pretrained_weights
在pretrained_weights目录里, 再把 stabilityai/sd-vae-ft-mse 和 lambdalabs/sd-image-variations-diffusers 用同样方式下载下来。再创建一个audio_processor空目录,下载tiny.pt放进去。https://openaipublic.azureedge.net/main/whisper/models/65147644a518d12f04e32d6f3b26facc3f8dd46e5390956a9424a650c0ce22b9/tiny.pt
五、加速。原本是根据文章说的python app.py来启动,跑一个5秒的例子都要跑几分钟。后来发现1月16号跟新了一个可以加速的app_acc.py。 用这个启动居然报错了,log显示是gradio问题,我更新了也没用,后来对比一下才发现是app_acc的问题。下图左侧是app.py的,右侧是app_acc的,少了很多参数。
这里改掉以后启动问题解决,而且启动飞快,但是跑例子依旧的慢,是不是哪里出问题了。
写在最后
我记得以前部署llama-factory时也遇到了 vllm部署的 xformers问题,看起来可以回去再弄一遍了。