CentOS批量安装GeneFace++技巧

AI技术
小华
2025-11-26

CentOS批量部署GeneFace++的实用方案
一、前置条件与系统准备

  • 操作系统与驱动:建议使用 CentOS 7/8,已安装 NVIDIA 驱动CUDA 11.7 工具链(GeneFace++官方推荐组合为 PyTorch 2.0.1 + CUDA 11.7)。
  • 基础工具:安装 git、wget、conda(Miniconda 更轻量),并准备 Python 3.9 环境。
  • 音频依赖:安装系统库 libasound2-dev、portaudio19-dev(用于音频相关依赖)。
  • 说明:GeneFace++官方安装指引面向 Debian/Ubuntu(使用 apt),在 CentOS 上以 conda/pip 为主,系统级依赖用 yum/dnf 替代 apt。

二、单机一键安装脚本 geneface_centos.sh

  • 作用:在每台机器上创建 conda 环境并安装 GeneFace++ 所需 Python 依赖与扩展。
  • 使用方式:将脚本放到项目根目录(GeneFacePlusPlus/),执行:bash geneface_centos.sh
  • 关键点:设置镜像源加速;固定 PyTorch 2.0.1 + CUDA 11.7;从源码安装 PyTorch3D;使用 MIM 安装 MMCV 2.1.x;构建 torch-ngp 扩展;设置 HF_ENDPOINT 加速 Hugging Face 模型拉取。
#!/usr/bin/env bash
set -euxo pipefail
# 0) 参数
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PY_VER=3.9
ENV_NAME=geneface
CUDA_VER=11.7
# 1) 系统依赖(CentOS)
sudo yum groupinstall -y "Development Tools"
sudo yum install -y epel-release
sudo yum install -y \
wget git which bzip2 \
gcc gcc-c++ make cmake \
libasound2-dev portaudio19-dev \
kernel-devel kernel-headers
# 2) Miniconda(如已安装可跳过)
if [[ ! -x "$(command -v conda)" ]]; then
wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh
bash /tmp/miniconda.sh -b -p "$HOME/miniconda"
source "$HOME/miniconda/etc/profile.d/conda.sh"
conda init bash
fi
source "$(conda info --base)/etc/profile.d/conda.sh"
# 3) 创建环境
conda create -n "$ENV_NAME" python="$PY_VER" -y
conda activate "$ENV_NAME"
# 4) 加速通道
conda config --remove-key channels 2>/dev/null || true
conda config --add channels conda-forge
conda config --set show_channel_urls yes
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 5) 核心依赖
conda install -y -c pytorch -c nvidia \
pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=$CUDA_VER
pip install -U "git+https://github.com/facebookresearch/pytorch3d.git@stable"
pip install cython openmim==0.3.9
mim install "mmcv==2.1.*"
# 6) 项目依赖与扩展
cd "$PROJECT_ROOT"
pip install -r docs/prepare_env/requirements.txt -v
bash docs/prepare_env/install_ext.sh
# 7) 国内镜像(Hugging Face)
cat >> "$CONDA_PREFIX/lib/python${PY_VER}/site-packages/torch/hub.py" <<'PY'
import os
os.environ.setdefault("HF_ENDPOINT", "https://hf-mirror.com")
PY
echo "Done. Activate with: conda activate $ENV_NAME"
  • 版本要点:官方实践表明 PyTorch 2.1 + CUDA 12.1 可能导致 torch-ngp 错误,建议固定 2.0.1 + 11.7;如需 GPU 推理,请确保驱动与 CUDA 版本匹配。

三、批量分发与并行执行

  • 推荐工具与方式:
  • Ansible(无代理、幂等、可回滚,适合生产)
  • pdsh/parallel-ssh(轻量并行)
  • clustershell(易用的集群命令分发)
  • 示例(Ansible,推荐):

1) inventory.ini

[geneface]
10.0.0.11
10.0.0.12
10.0.0.13
[geneface:vars]
proj_dir=/opt/GeneFacePlusPlus

2) 将上面的脚本放到仓库(如 roles/geneface/templates/geneface_centos.sh.j2),或复制到每台机器的 /opt/GeneFacePlusPlus/
3) 执行:

ansible-playbook -i inventory.ini deploy.yml

示例 playbook(deploy.yml):

- hosts: geneface
become: yes
vars:
proj_dir: /opt/GeneFacePlusPlus
tasks:
- name: 同步项目代码
git:
repo: https://github.com/yerfor/GeneFacePlusPlus.git
dest: "{{ proj_dir }}"
version: main
force: no
- name: 渲染并分发安装脚本
template:
src: templates/geneface_centos.sh.j2
dest: "{{ proj_dir }}/geneface_centos.sh"
mode: 0755
- name: 执行安装脚本
command: bash "{{ proj_dir }}/geneface_centos.sh"
args:
chdir: "{{ proj_dir }}"
  • 并行方式(pdsh,备选):
pdsh -w 10.0.0.[11-13] -b "cd /opt/GeneFacePlusPlus && bash geneface_centos.sh"

四、数据与模型分发策略

  • 目录约定(每台机器):
/
├── deep_3drecon/BFM/            # BFM2009 模型(8个文件)
├── data/binary/videos/May/     # 示例:trainval_dataset.npy
└── checkpoints/...             # 预训练权重
  • 分发方法:
  • 内网高速分发:用 rsyncAnsible synchronize 做一次性/增量同步。
  • 示例(Ansible):
- name: 同步 BFM 模型
synchronize:
src: files/BFM2009/
dest: "{{ proj_dir }}/deep_3drecon/BFM/"
recursive: yes
- name: 同步示例数据集
synchronize:
src: files/May/
dest: "{{ proj_dir }}/data/binary/videos/May/"
recursive: yes
  • 说明:BFM2009 目录应包含 01_MorphableModel.mat、BFM_exp_idx.mat、BFM_front_idx.mat、BFM_model_front.mat、Exp_Pca.bin、facemodel_info.mat、index_mp468_from_mesh35709.npy、mediapipe_in_bfm53201.npy、std_exp.txt 等文件;示例数据 trainval_dataset.npy 放到 data/binary/videos/May/。权重建议按节点独立存放,避免共享写入冲突。

五、验证与常见问题处理

  • 快速验证(任选一台):
conda activate geneface
cd 
export PYTHONPATH=./
python inference/genefacepp_infer.py \
--a2m_ckpt=checkpoints/audio2motion_vae \
--torso_ckpt=checkpoints/motion2video_nerf/may_torso \
--drv_aud=data/raw/val_wavs/MacronSpeech.wav \
--out_name=may_demo.mp4

若从 Hugging Face 拉取模型较慢,脚本已设置 HF_ENDPOINT=https://hf-mirror.com;如报动态库冲突,可在运行前临时设置:export KMP_DUPLICATE_LIB_OK=TRUE

  • 常见问题:
  • 构建 torch-ngp 失败:优先检查 CUDA 11.7 与驱动版本;如仍失败,尝试升级/重装 gcc、cmake,或在干净环境中重跑安装脚本。
  • 版本不兼容:避免 PyTorch 2.1+CUDA 12.1 组合;保持 2.0.1 + 11.7 更稳。
  • 音频依赖缺失:确保已安装 libasound2-dev、portaudio19-dev,再 pip install -r requirements.txt
  • 内网环境:无法在线拉取时,先在外网机用 yumdownloaderyum-plugin-downloadonly 下载 RPM 及其依赖,制作本地仓库或离线包,再在内网用 yum localinstallrpm -ivh 批量安装系统依赖。
亿速云提供售前/售后服务

售前业务咨询

售后技术保障

400-100-2938

7*24小时售后电话

官方微信小程序