GeneFace++ 的显存设置主要通过修改配置文件(configs/*.yaml)和启动命令参数来实现,核心在于调整 batch size、帧数、精度模式(AMP)以及 PyTorch 显存管理参数。
以下是具体的设置方法和建议:
GeneFace++ 的训练和推理通常依赖 YAML 配置文件。你需要关注以下几个关键参数:
在配置文件中找到 batch_size 或 train_batch_size。
# 原配置可能是 16 或 32
batch_size: 4 # 减小这个值,直到不报错num_workers 过大会占用额外的 CPU 和显存(用于缓存数据)。
data:
num_workers: 0如果是训练阶段,检查是否加载了过长的视频片段。
max_frames_per_clip 或 clip_length。在执行 train.py 或 inference.py 时,可以通过命令行参数覆盖配置。
这是节省显存最立竿见影的方法,几乎不损失精度。GeneFace++ 通常基于 PyTorch Lightning 或 Accelerate。
--precision 16 或 --amp。python train.py --config configs/my_config.yaml --precision 16在运行脚本前,设置环境变量可以优化 PyTorch 的显存分配策略:
# Linux/Mac
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128
# Windows (PowerShell)
$env:PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb:128"这可以减少显存碎片化。
如果你是在跑 Demo 或推理,显存不足通常是因为加载了过大的模型或试图一次生成过长的视频。
inference.py 通常支持分块。确保你没有试图一次性生成 10 分钟长的视频。half() (FP16) 可以节省一半显存。| 显卡显存 | 建议设置 | 备注 |
|---|---|---|
| 24G (如 3090/4090) | Batch Size 8-16, FP32/FP16 均可 | 标准配置,通常无压力。 |
| 12G-16G (如 3080/4070) | Batch Size 2-4, 必须开启 FP16 | 需关闭不必要的可视化(logger)。 |
| 8G 及以下 | Batch Size 1, FP16, 降低分辨率 | 可能需要修改代码,将模型手动转成 .half(),且可能无法训练,仅能勉强推理。 |
batch_size 到 1。AMP (混合精度)。detach() 或 .cpu())。可能是 PyTorch 版本与 CUDA 版本不匹配,或者 PYTORCH_CUDA_ALLOC_CONF 设置不当。
configs/ 下的对应 YAML 文件。batch_size 改为 2 或 1。--precision 16。export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128 后再运行脚本。