问题出现得很突然,日志倒是留得挺全。在 8GB 显存的 3060Ti 上用 faster-whisper 1.0 跑 large-v3,beam_size 给 5,直接把两小时的会议录音整个喂进去,跑了四分钟报 CUDA out of memory,显存占用从开始就一路涨到 7.9GB。

刚开始盯着「beam_size 与 batch 同时放大,中间激活翻倍」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。整段音频一次性解码,特征矩阵常驻显存。也可能是large-v3 的 fp16 权重本身就接近 3GB。

不容易想到的是,没有开 VAD,静音段也参与编码。

量化模型体积与当前占用

python -c "import torch;print(torch.cuda.get_device_properties(0).total_memory/1024**3)"

再往下换 int8 计算类型并限制线程

python -c "from faster_whisper import WhisperModel;m=WhisperModel('large-v3',device='cuda',compute_type='int8');print('ok')"

然后开 VAD 并按 15 分钟切片送入

ffmpeg -i meet.m4a -f segment -segment_time 900 -c copy part_%02d.m4a

剩下的就是逐片转写后按时间偏移合并

python -c "print([(i*900,(i+1)*900) for i in range(8)])"

怎么算真的好了,看的是同一批现象。八段全部转写完成,显存峰值稳定在 5GB 以内,合并后的文本时间轴连续且没有重复句。

这里还有个坑。长音频的显存问题多半来自一次性解码,切片加上 int8 基本能解决,不必换卡。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189