AMD 显卡跑语音模型的那些坑:ROCm 兼容性实录
先说背景:公司预算紧张,服务器没上 N 卡,给我配了一块 AMD RX 7900 XTX。要跑语音相关的活儿:语音转文字(ASR)、语音合成(TTS)、还有同事心心念念的语音克隆。原以为 ROCm 这两年成熟了,结果真上手才发现,语音模型这个领域,AMD 的支持度比大语言模型差得远。这篇把我踩的坑都记下来。
第一个坑:ROCm 到底装哪个版本,官网文档先把你绕晕。
AMD 的 ROCm 安装文档一打开就是一堆"支持矩阵"。关键信息是:你的显卡型号决定你只能装哪个大版本。RX 7900 XTX 是 RDNA3 架构,ROCm 5.7 才开始正式支持,6.x 系列支持最好。
我一开始照着通用教程装了 ROCm 5.4,rocm-smi 能显示显卡,但一跑 PyTorch 就报 hipErrorNoBinaryForGpu。查了半天才明白:5.4 压根不认识 RDNA3,白装。
正确的装法是看这张表再动手:
# Ubuntu 22.04 + RX 7900 XTX 实测可用的版本
# 装 ROCm 6.2 之后,rocm-smi 和 torch 都能识别
amdgpu-install --usecase=rocm --no-dkms
装完一定要跑 rocminfo 确认能看到 GPU,不然后面全是无用功。
第二个坑:PyTorch 的 ROCm 版本和系统 ROCm 版本对不上。
这个坑最阴。系统装了 ROCm 6.2,然后 pip install torch 装的是 CPU 版——因为默认源里根本没有 ROCm 版 torch!必须用 AMD 的专用源:
pip install torch --index-url https://download.pytorch.org/whl/rocm6.2
装完验证:
import torch
print(torch.version.hip) # 有输出就对了
print(torch.cuda.is_available()) # ROCm 下这个也返回 True,别被名字骗了
注意 torch.cuda.is_available() 在 ROCm 版 PyTorch 里返回 True,因为它内部把 HIP 映射成了 CUDA 的接口。我第一次看到这行输出以为自己装错成 CUDA 版了,其实没有。
第三个坑:Whisper 能跑,但 faster-whisper 直接不认 AMD 卡。
OpenAI 官方 whisper 用的是 PyTorch,在 ROCm 下能跑,就是慢。真正让我崩溃的是 faster-whisper:它依赖 CTranslate2,而 CTranslate2 官方只支持 CUDA,没有 ROCm 后端。你 pip install faster-whisper 装出来默认走 CPU,跟 AMD 卡一点关系没有。
解决方案两条:
- 放弃 faster-whisper,用官方 whisper + ROCm,慢但能跑(7900 XTX 上 small 模型大概 3-4 倍实时)。
- 找社区编译的 CTranslate2 ROCm 版,但版本经常滞后,依赖一堆,我试了两次都翻车。
第四个坑:FunASR 的依赖链在 ROCm 下各种报错。
阿里 FunASR 是中文语音识别的好手,但它依赖的 torchaudio 需要跟 torch 版本严格匹配。ROCm 的 torch 版本更新本来就慢,torchaudio 的 ROCm 版更是稀缺。
我装的时候是:
pip install torch torchaudio --index-url https://download.pytorch.org/whl/rocm6.2
结果 torchaudio 装上了,import 直接段错误。后来发现是版本没锁对,必须 torch 和 torchaudio 用同一个 ROCm 版本的 wheel。
第五个坑:TTS 和语音克隆,基本是 CPU 硬扛。
用 Coqui TTS 或者 GPT-SoVITS 跑语音合成,你会发现很多底层库(比如 pynini、webrtcvad)根本没有 ROCm 支持,只能跑 CPU。合成一段 10 秒的语音,CPU 要跑十几秒,GPU 完全在围观。
结论:语音克隆这块,AMD 卡目前基本没有舒服的解法,要么接受 CPU 慢速,要么老实上 N 卡。
第六个坑:显存够大但推理没吃满,因为算子不支持。
7900 XTX 有 24G 显存,看着很美。但很多 PyTorch 算子(特别是音频处理里的 FFT 相关、以及一些 attention 变体)在 ROCm 下没有优化实现,会 fallback 到 CPU 或者干脆报错。你会在日志里看到一堆 not implemented for HIP 之类的警告。
最后给个实在的建议:
如果你手头只有 AMD 卡又必须做语音:
- 系统装 Ubuntu 22.04,别用 24.04(ROCm 支持更晚)
- ROCm 装 6.2+,PyTorch 必须走 AMD 专用源
- ASR 用官方 whisper 硬跑,别碰 faster-whisper
- TTS/克隆做好 CPU 慢速的心理准备
- 预算允许的话,语音方向真的别省 N 卡的钱——这个领域的生态,AMD 还差得远
这篇写出来是想让后来人少走弯路。AMD 卡跑 LLM 已经能用,但语音模型这条路,目前还是"能跑但不舒服"的状态。
评论0
还没有评论,来抢沙发~