CentOS批量部署GeneFace++的实用方案
一、前置条件与系统准备
二、单机一键安装脚本 geneface_centos.sh
bash geneface_centos.sh。#!/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"三、批量分发与并行执行
1) inventory.ini
[geneface]
10.0.0.11
10.0.0.12
10.0.0.13
[geneface:vars]
proj_dir=/opt/GeneFacePlusPlus2) 将上面的脚本放到仓库(如 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 -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/... # 预训练权重 - 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五、验证与常见问题处理
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。
pip install -r requirements.txt。yum localinstall 或 rpm -ivh 批量安装系统依赖。