GeneFace Plus Plus 在推理和训练时都会占用大量显存,显存“爆满”是常见情况,尤其是在消费级显卡上。
以下是关于其显存占用的详细分析和建议:
GeneFace Plus Plus 是一个基于 NeRF(神经辐射场)和 GAN 的音频驱动人脸生成模型,其显存消耗主要集中在以下几个阶段:
| 阶段 | 显存需求 | 说明 |
|---|---|---|
| 数据预处理 | 中等 | 提取3D人脸参数(如Deep3DFaceRecon)时,如果批量处理(batch size)较大,可能会占用较多显存,但通常 12GB 左右可以应付。 |
| 模型训练 | 极高 | 这是最吃显存的阶段。NeRF 相关的训练需要存储大量的采样点和梯度。官方推荐配置通常是 A100 (40G/80G) 或 V100 (32G)。在 24GB (如3090/4090) 上训练通常需要调小参数。 |
| 推理/生成 | 中等偏高 | 相比训练会好很多,但如果输入分辨率高或生成视频较长,也可能超过 12GB 或 16GB 显存。 |
如果你遇到显存不足(OOM, Out Of Memory)的问题,可以尝试以下方法:
这是最直接的办法。在训练配置文件中(通常是 configs/*.yaml),将 batch_size 调小(例如从 4 降到 1 或 2),或者将 batch_size_per_gpu 调小。
在配置文件中,寻找与采样相关的参数(通常和 num_rays 或 N_samples 有关),适当减少每次训练时采样的光线数量或每条光线的采样点数。
如果代码支持,开启 FP16(半精度)训练。这可以几乎减半显存占用,同时加快训练速度。
fp16 或 mixed_precision 的选项。torch.cuda.empty_cache() 或使用 DeepSpeed 等库进行显存优化(但这通常需要修改代码)。建议:如果你只有 12GB 显卡,建议优先尝试官方提供的 预训练模型 (Pre-trained Models) 进行推理,不要尝试从头训练(Training from scratch)。