2
DCU技术达人
新人贴
国产服务器DCU跑MuseTalk模型推理验证指南
2026-07-07 11:44:10
64
# 国产服务器海光DCU部署MuseTalk模型推理验证全流程 > **前言**:最近在做国产算力适配,需要在海光 DCU 上跑通 MuseTalk 唇形同步模型。网上相关资料不多,踩了不少坑,这里把完整部署过程记录下来,希望能帮到同样做国产硬件适配的同学。**文末附踩坑避坑指南,建议收藏!** --- ## 一、MuseTalk 模型简介 MuseTalk 是由 Lyra Lab 推出的一款开源实时唇语同步(Lip Synchronization)项目。简单来说,**给它一段视频 + 一段音频,它就能生成口型跟音频完美同步的视频**。 核心亮点在于采用了「**潜在空间修复(Latent Space Inpainting)**」技术: - 结合 **Whisper 音频编码器** + **Stable Diffusion 的 UNet 架构** - 通过**跨注意力机制**融合音频特征与图像嵌入 - **单步修复**即可生成逼真口型,不需要像扩散模型那样反复去噪 > 通俗理解:不是"重新画一张脸",而是"只修补嘴部区域",所以又快又自然,能做到实时级别。 --- ## 二、服务器环境配置 ### 2.1 硬件配置 本次部署使用的服务器硬件信息如下: | 项目 | 规格 | |:---|:---| | CPU | 2× Hygon C86-4G 7490(32 Core,2.0GHz) | | GPU | 8× 海光 DCU Z100(BW1000_H,64GB/卡) | | 内存 | 256GB | | 系统盘 | 3.6T HDD | | 数据盘 | 3.6T HDD | | 驱动版本 | 6.3.30-V1.4.1a | | 固件版本 | MEC: 50 / RLC: 2 / SDMA: 12 / SMC: 00.05.03.00 | > **科普一下**:海光 DCU(Deep Computing Unit)是海光信息自主研发的协处理器,对标 NVIDIA GPU,配套使用 DTK(类似 CUDA Toolkit)。下文部署都基于这套体系。 ### 2.2 软件版本 > **重要!!!** 以下版本是经过实际验证的可用组合,各组件之间存在严格的版本依赖关系。**千万别手贱升级版本**,不然大概率各种报错。 | 组件名称 | 验证可用版本 | |:---|:---| | diffusers | 0.30.2 | | accelerate | 0.30.0 | | numpy | 1.25.0 | | tensorflow | 2.12.0 | | transformers | 4.39.2 | | mmcv | 2.1.0 | | mmdet | 3.2.0 | | mmpose | 1.2.0 | --- ## 三、Docker 容器环境搭建 ### 3.1 为什么用 Docker? 国产卡的环境依赖比 NVIDIA 更敏感,直接在宿主机装很容易把系统环境搞乱。用 Docker 容器隔离,**干净、可复现,出问题删掉重来就行**。 ### 3.2 拉取基础镜像 海光官方提供了适配 DCU 的基础镜像,已经内置 DTK 驱动环境: ```shell docker pull harbor.sourcefind.cn:5443/dcu/admin/base/vllm:0.9.2-ubuntu22.04-dtk26.04-0130-py3.10-20260202 ``` ### 3.3 创建并启动容器 ```bash docker run -it \ --name musetalk \ --network=host \ --ipc=host \ --shm-size=16G \ --device=/dev/kfd \ --device=/dev/mkfd \ --device=/dev/dri \ -v /opt/hyhal:/opt/hyhal \ -v /path/model/:/models/ \ -v /path/workspace/:/workspace/ \ --group-add video \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ images-id \ /bin/bash ``` **关键参数说明**: | 参数 | 说明 | |:---|:---| | `--device=/dev/kfd` `/dev/mkfd` `/dev/dri` | 挂载 DCU 设备节点,让容器能识别到卡 | | `-v /opt/hyhal:/opt/hyhal` | 挂载海光驱动库,**必须挂** | | `--shm-size=16G` | 共享内存调大,多卡通信需要 | | `images-id` | 替换成实际拉取的镜像 ID | --- ## 四、依赖安装 ### 4.1 安装 Python 依赖 进入容器后,依次执行以下命令: ```shell # 1. 克隆模型仓库,后续操作都在此目录下 git clone https://github.com/TMElyralab/MuseTalk.git cd MuseTalk # 2. 安装项目基础依赖 pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ pip install --no-cache-dir -U openmim -i https://mirrors.aliyun.com/pypi/simple/ # 3. 安装 OpenMMLab 系列(注意版本和编译参数!) pip install mmengine -i https://pypi.tuna.tsinghua.edu.cn/simple pip install "setuptools<71" -i https://pypi.tuna.tsinghua.edu.cn/simple pip install "mmcv==2.1.0" --no-build-isolation -i https://mirrors.aliyun.com/pypi/simple pip install "mmdet==3.2.0" -i https://pypi.tuna.tsinghua.edu.cn/simple pip install "mmpose==1.2.0" --no-build-isolation -i https://pypi.tuna.tsinghua.edu.cn/simple # 4. 安装加速与数值计算库 pip install accelerate==0.30.0 peft==0.11.1 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install numpy==1.25.0 -i https://mirrors.aliyun.com/pypi/simple/ ``` > **踩坑警告**:`mmcv` 和 `mmpose` 安装时**一定要加** `--no-build-isolation` 参数!否则编译阶段会找不到已安装的依赖,报 `ModuleNotFoundError`。这个问题排查了好久才搞定。 ### 4.2 安装 FFmpeg MuseTalk 底层依赖 FFmpeg 做音视频处理,必须安装: ```shell apt-get update && apt-get install -y ffmpeg ``` 安装完成后验证一下: ```shell ffmpeg -version ``` 能看到版本号就 OK 了。 --- ## 五、模型权重下载 ### 5.1 权重组成说明 MuseTalk 不是下一个模型文件就完事的,推理需要**主模型 + 5 个辅助组件**协同工作。先搞清楚每个权重的作用: | 组件 | 作用说明 | |:---|:---| | **MuseTalk 主模型** | UNet 核心生成网络,负责口型生成 | | **sd-vae-ft-mse** | VAE 模型,潜在空间 ↔ 像素空间转换 | | **whisper-tiny** | 音频编码器,提取语音特征驱动唇形 | | **DWPose** | 人脸关键点检测,定位面部结构 | | **face-parse-bisent** | 面部语义分割,确保只改嘴部不动其他区域 | | **resnet18** | 提取人脸身份特征,保持风格一致性 | ### 5.2 下载 MuseTalk 主模型 主模型从魔搭社区(ModelScope)下载,国内速度比较有保障: ```shell # 先安装 modelscope 工具 pip install modelscope # 下载完整模型库 modelscope download --model AI-ModelScope/MuseTalk ``` 下载完成后目录结构如下: ``` AI-ModelScope/MuseTalk ├── musetalk │ ├── musetalk.json │ └── pytorch_model.bin ├── musetalkV15 │ ├── musetalk.json │ └── unet.pth ├── .gitattributes ├── configuration.json └── README.md ``` ### 5.3 下载辅助组件权重 ```shell # 设置 HF 镜像(国内访问 HuggingFace 必备) export HF_ENDPOINT=https://hf-mirror.com # 下载 sd-vae hf download stabilityai/sd-vae-ft-mse --local-dir ./sd-vae # 下载 whisper hf download openai/whisper-tiny --local-dir ./whisper # 下载 dwpose hf download yzd-v/DWPose --local-dir ./dwpose # 下载 face-parse-bisent https://raw.gitcode.com/Universal-Tool/34c31/blobs/1a09b7a9ecf73f6ef175e87706c24730d5a7ddf0/79999_iter.7z # 下载 resnet18 wget https://download.pytorch.org/models/resnet18-5c106cde.pth ``` > **小贴士**:`face-parse-bisent` 下载下来是 `.7z` 压缩包,需要先解压再使用:`7z x 79999_iter.7z` ### 5.4 整理模型目录 所有权重下载完成后,按以下结构统一放到 `./models/` 目录下: ``` ./models/ ├── musetalk │ ├── musetalk.json │ └── pytorch_model.bin ├── dwpose │ └── dw-ll_ucoco_384.pth ├── face-parse-bisent │ ├── 79999_iter.pth │ └── resnet18-5c106cde.pth ├── sd-vae │ ├── config.json │ └── diffusion_pytorch_model.bin └── whisper ├── config.json ├── pytorch_model.bin └── preprocessor_config.json ``` > **目录结构很关键!!!** MuseTalk 推理脚本中对每个权重路径都有引用,放错位置会直接报 `FileNotFoundError`。务必严格按照上面的结构整理。 --- ## 六、推理启动 ### 6.1 执行推理命令 环境搭好了,权重也下好了,直接启动推理: ```shell cd MuseTalk python -m scripts.inference \ --unet_model_path ./models/musetalkV15/unet.pth \ --unet_config ./models/musetalkV15/musetalk.json \ --whisper_dir ./models/whisper \ --inference_config configs/inference/test.yaml \ --result_dir ./results \ --version v15 \ --use_float16 ``` **参数详解**: | 参数 | 说明 | |:---|:---| | `--unet_model_path` | UNet 权重路径,核心生成网络 | | `--unet_config` | UNet 架构配置文件,定义网络结构 | | `--whisper_dir` | Whisper 模型目录,用于音频特征提取 | | `--inference_config` | 全局配置文件,定义输入视频和音频路径 | | `--result_dir` | 输出目录,合成视频存这里 | | `--version v15` | 使用 MuseTalk v1.5 版本 | | `--use_float16` | 开启 FP16 半精度推理,省显存提速度 | > **关于 `test.yaml`**:这个文件配置了你要处理的视频和音频路径。想用自己的素材,改这个文件里的路径就行。 ### 6.2 推理结果展示 脚本执行完成后,生成的视频会输出到 `./results` 目录下。 ![1783395917461.png](/api-forum/file/RedirectImage?path=20260707/1783395917999_1783395917461.jpg '1783395917461.png') 可以看到,生成视频的口型与音频同步效果良好,画面清晰度也没有明显损失。至此,**MuseTalk 在海光 DCU 上的推理部署就完成了!** --- ## 七、测试总结 ### 部署结论 MuseTalk 模型**可以**在海光 DCU 国产算力平台上稳定运行,端到端推理流程正常,生成质量达标,验证了该模型在国产硬件环境下的技术可行性。 ### 四个关键结论 | 维度 | 结论 | |:---|:---| | **硬件适配** | UNet、Whisper、VAE 等核心组件均可在 DCU Z100 上正常运行,无算子不兼容 | | **运行稳定性** | 端到端推理无异常中断,驱动版本与软件环境匹配良好 | | **生成质量** | FP16 模式下唇形同步效果与画面清晰度无明显衰减 | | **性能优化** | 半精度推理有效降低显存占用,为多并发场景预留资源空间 | --- ## 八、踩坑避坑指南(精华部分) 部署过程中遇到的常见问题及解决方案,**建议收藏备用**: | 问题现象 | 原因分析 | 解决方案 | |:---|:---|:---| | 安装 mmcv/mmpose 时报 `ModuleNotFoundError` | 编译隔离导致找不到依赖 | 加 `--no-build-isolation` 参数 | | 权重加载报 `FileNotFoundError` | 模型目录结构不对 | 严格按照 5.4 节目录结构整理 | | 容器内找不到 DCU 设备 | 设备节点未挂载 | 检查 `--device=/dev/kfd` 等参数 | | HuggingFace 下载超时 | 网络访问问题 | 设置 `HF_ENDPOINT=https://hf-mirror.com` | | `setuptools` 版本过高编译失败 | 新版 setuptools 不兼容 | `pip install "setuptools<71"` | | face-parse-bisent 权重无法直接使用 | 下载的是 `.7z` 压缩包 | 先解压:`7z x 79999_iter.7z` | > **经验总结**:国产算力适配的核心在于**环境版本的精确匹配**和**模型文件的组织规范**。把这两件事做好,大部分模型在国产卡上都能跑起来。 --- ## 参考资料 - MuseTalk 项目仓库:[GitHub - TMElyralab/MuseTalk](https://github.com/TMElyralab/MuseTalk/tree/main) - 魔搭社区模型页:[MuseTalk · 模型库](https://www.modelscope.cn/models/AI-ModelScope/MuseTalk/summary) ---
全部评论(0)
只看楼主
暂无数据
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据