whisper.cpp CUDA加速:把跑一整夜的转录压进10分钟的3步配置法
【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp
两小时的会议录音,用CPU转录到天亮还没跑完——这是很多用 whisper.cpp 的人的真实处境。whisper.cpp 是 OpenAI Whisper 语音识别模型的 C/C++ 实现,它的 CUDA 支持能把编码器这类重计算直接丢给 NVIDIA GPU,多数卡上编码器耗时能降一个量级,同样的音频队列几小时内就能消化完。
🧐 先判断:你的卡够不够格
别急着编译,先对号入座。显存是唯一的硬门槛,模型越大吃得越多:
| 模型 | 显存需求(约) | 最低可跑的卡 |
|---|---|---|
| tiny | 1~2 GB | GTX 1650 |
| base | 2~4 GB | RTX 3060 |
| small | 4~6 GB | RTX 3070 / 4060 |
| medium | 6~8 GB | RTX 3080 / 4070 |
| large | 8 GB+ | RTX 3090 / 4090 |
对不上的别硬上:要么退回 CPU 编译,要么换跨厂商的 Vulkan 方案(编译时改成-DGGML_VULKAN=1即可,说明见 README)。
🏁 三步跑通:拿到代码、开一个开关、下一条命令
第一步,拿代码和模型:
git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp && ./models/download-ggml-model.sh base.en第二步,编译时打开唯一的 CUDA 开关,其余选项都保持默认:
cmake -B build -DGGML_CUDA=1 cmake --build build -j --config Release第三步,用仓库自带的 jfk.wav 验证:
./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav启动日志里会打印实际启用的后端,看到 cuda 就说明模型权重已经落在显存里。CUDA 内核的实现在 ggml/src/ggml-cuda/,一般用不到,知道在哪就行。
🚀 提速清单:量化、调参、省显存
量化:把模型压小,显存和读取带宽一起省。Q5_0 通常是不掉精度的答案:
./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0| 量化级别 | 体积/显存减少 | 精度代价 |
|---|---|---|
| Q4_0 | 约 75% | 轻微 |
| Q5_0 | 约 60% | 基本无感 |
| Q8_0 | 约 25% | 可忽略 |
调参:-t 4调 CPU 侧线程;长音频加-ml 16限制生成长度,防止解码跑飞。
省显存:显存吃紧时按顺序退——换 base 或量化版模型 → 把长音频切开分批喂 → 最后再考虑更小的模型。工具源码在 examples/quantize/。
✅ 验证与上线:确认加速真的生效
跑一次基准工具,量化前后各测一遍,看编码器耗时掉了多少:
./build/bin/whisper-bench -m models/ggml-base.en.bin -t 4这个工具只跑编码器部分、计时干净,是判断"GPU 到底有没有干活"的最直接依据,实现见 examples/bench/。要批量对比多组配置,用 scripts/bench.py 会更方便。
上线两句话:容器化就用带 CUDA Toolkit 的官方基础镜像,构建命令和上面完全一样;多卡机器用CUDA_VISIBLE_DEVICES=0指定用哪张卡,避免模型被调度到没显存的那张。
🩹 三个最常卡住人的问题,各一行解决
现象:编译时报 CUDA not found。解决:先装好 CUDA Toolkit 并用nvcc --version确认,再重跑-DGGML_CUDA=1的编译。
现象:推理报 CUDA out of memory。解决:先nvidia-smi看显存被谁占了,然后换量化版或更小的模型重跑。
现象:结果很快,但怀疑其实还在 CPU 上跑。解决:看启动日志的后端打印,并用watch -n 1 nvidia-smi盯推理期间的 GPU 占用率,占用不动就是没上卡。
今晚就能做完的事:把仓库克隆下来,用-DGGML_CUDA=1编译一遍,跑samples/jfk.wav,再用 whisper-bench 记下你这张卡的编码器耗时。数字出来,值不值得上 GPU、下一步换哪个模型,就都有答案了。
【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考