CentOS 下部署 GeneFace++ 的可行方案
一 前置条件与版本选择
- 硬件与驱动:建议使用 NVIDIA GPU(如 V100/A100/3090 等),安装与之匹配的 NVIDIA 驱动,并准备 CUDA 11.7 的运行时环境(驱动版本需 ≥ 515)。GeneFace++ 社区实践以 CUDA 11.7 + PyTorch 2.0.1 为主,已知 PyTorch 2.1 + CUDA 12.x 在部分子模块(如 torch-ngp)会出现兼容性问题。若使用 CentOS 7/8 Stream,请确保系统 glibc 等基础库版本满足 PyTorch/PyTorch3D 的构建要求。
二 方案一 Conda 环境 + 预编译二进制优先(推荐)
- 思路:用 Miniconda 创建隔离环境,优先安装预编译的 PyTorch 2.0.1 + cu117 与 MMCV 2.1,再通过 pip 安装 PyTorch3D(stable 分支) 与项目依赖,尽量避免在 CentOS 上从源码编译大型库。
- 步骤
1) 安装 Miniconda(略)。创建环境并安装基础工具:
- conda create -n geneface python=3.9
- conda activate geneface
- conda install -c conda-forge ffmpeg
2) 安装 PyTorch 2.0.1 + cu117(使用 conda-forge + nvidia 通道):
- conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
3) 安装 PyTorch3D(预编译优先,失败再考虑源码):
4) 安装 MMCV 2.1(openmim 方式,通常可避免编译):
- pip install cython openmim==0.3.9
- mim install mmcv==2.1.0
5) 安装项目其余依赖:
- 将项目克隆到本地后,进入项目根目录执行:pip install -r docs/prepare_env/requirements.txt
6) 验证关键组件版本:
- python -c "import torch; print(torch.__version__, torch.version.cuda)"
- python -c "import mmcv; print(mmcv.__version__)"
- python -c "import pytorch3d; print(pytorch3d.__version__)"
说明:上述版本组合已在 Linux 实践中验证可用;如网络不稳定,可使用国内镜像源加速安装。
三 方案二 使用 Docker(规避系统依赖差异)
- 思路:直接使用包含 CUDA 11.7 + PyTorch 2.0.1 的 NVIDIA PyTorch 官方镜像 启动容器,在容器内按“方案一”的步骤安装 PyTorch3D、MMCV 与项目依赖。此方式对 glibc/编译链 差异较大的 CentOS 机器尤为友好。
- 步骤
1) 拉取镜像(示例):
- docker pull nvcr.io/nvidia/pytorch:22.04-py3
2) 启动容器(示例,按需映射 GPU、目录与端口):
- docker run --gpus all -it --rm -v /your/geneface:/workspace -w /workspace nvcr.io/nvidia/pytorch:22.04-py3 bash
3) 在容器内执行“方案一”的 1~6 步完成安装与验证。
提示:若需 GUI/可视化,额外映射 X11 或使用 --network=host 等方式(注意安全)。
四 常见问题与处理要点
- 驱动与 CUDA 不匹配:CUDA 11.7 要求 驱动 ≥ 515;nvidia-smi 显示的 CUDA 为驱动支持的最高版本,python 内 torch.version.cuda 才是实际运行版本,两者可能不同。
- 构建失败集中在 PyTorch3D/MMCV:优先尝试预编译包;若必须源码编译,确保已安装 CUDA 11.7 工具链、合适的 gcc/glibc,并预留充足时间与内存。
- 音频/视频依赖:确保系统具备 FFmpeg(含常见编解码器)与 PortAudio 开发库,以避免音频采集/写入与视频编码报错。
- 运行被系统终止(OOM):长音频或高分辨率推理易触发 OOM,可降低分辨率/批大小,或在具有更大显存的 GPU 上运行。