配置Fairseq的wav2vec采坑记录2

本文详细记录了在Intel Xeon Platinum 8163 CPU和双GeForce RTX 3090上配置Fairseq wav2vec遇到的挑战,包括CUDA 11.1、PyTorch 1.8.1 Nightly版本、Apex编译问题以及设备、算力和任务数据的配置错误。通过一系列的调试和解决方法,最终成功运行wav2vec。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面写过一片Fairseq Wav2ec的踩坑记录,但是没有踩完,没办法3个月之后继续踩,这次总算跑起来了。

#Note# 本文撰写之时PyTorch的1.8版本尚未发布,1.8版之后兼容性和编译问题减少不少,愿对诸君有用

1.基础环境

Intel® Xeon® Platinum 8163 CPU @ 2.50GHz × 96

GeForce RTX 3090 x 2 (这里必须说明以下:3090是导致编译和执行问题的主要背锅的)

Ubuntu 20.04

Ananconda3

Python3.9

PyTorch1.8.1 -Nightly版本 (据说只有这个版本可以适用3090)

Apex (编译通过但是没有安装)

Fairseq (本地编译安装)

CUDA cuda_11.1.0_455.23.05_linux.run (本地安装,没有使用Conda自带的,反正也没有nvcc,无法编译)

显卡驱动 460.39

2. 主要安装过程

跑Wav2ec的例子,大体需要注意以下步骤:

  • 1.更新显卡驱动到最新,(注意最新驱动和最新内核一起会导致 usbnet内核模组莫名奇妙的没了,所以只安装显卡驱动,不要更新内核)
  • 2.本地安装CUDA,conda的cuda_tooltiks不带nvcc ,20210303最新的是:cuda_11.1.0_455.23.05_linux.run
  • 3.创建Conda环境 ,python3.9 (其他版本估计也没问题)
  • 4.安装PyTorch-Nightly版本,见官网,不要同时安装TorchVision和TorchAudio等,这样会导致安装PyTorch的1.7.1版本(Release版)
  • 5.安装Apex
  • 6.安装Fairseq
git clone https://github.com/pytorch/fairseq
cd fairseq
export TORCH_CUDA_ARCH_LIST="8.6"
pip install --editable ./

强制指定3090的算力8.6,2080Ti是7.5

python -c "import torch;print(torch.__version__, torch.version.cuda)"

会显示pytorch版本(1.6.0)和对应cuda版本(10.1);

python -c "import fairseq;print(fairseq.__version__)"

会显示fairseq版本(0.9.0);

python -c "import fairseq;print(fairseq.utils.multi_tensor_l2norm_available)"

会显示apex是否成功安装(True)。

3. 主要的坑

3.1 GeForce RTX 3090 带来的问题

因为3090是新卡,PyTorch对其支持不好,实验了好多次最后才怀疑此问题。

三件套: 驱动最新 CUDA11.1 PyTorch-Nightly

不用按照官网命令加TorchVision和TorchAudio,你可以从官网上手动下载安装
算力查询NVIDIA

3.2 Apex 的编译天坑

Apex编译起来问题太多

首先需要修改setup.py 取消PyTorch和nvcc之间的版本校验,感谢其他人提供的思路

可以在103行的地方 if False and 直接跳过这个检查,反正你也没办法(PyTorch/CUDA/3090就是配不起来)

def check_cuda_torch_binary_vs_bare_metal(cuda_dir):
    raw_output, bare_metal_major, bare_metal_minor = get_cuda_bare_metal_version(cuda_dir)
    torch_binary_major = torch
03-12
### Wav2Vec 模型介绍 Wav2Vec 是一种用于语音处理的预训练模型,其设计目的是通过自监督学习的方式利用大量未标注的语音数据来提升语音处理任务的效果[^1]。该模型能够捕捉到语音信号中的复杂模式,并将其转换成有用的特征表示。 #### 训练挑战 构建一个高性能的 Wav2Vec 模型面临着诸多困难。一方面,由于需要依赖庞大的语料库来进行有效的参数调整,这不仅消耗了大量的计算资源,还延长了开发周期;另一方面,在面对持续时间较长的声音样本时,可能会遇到硬件上的瓶颈,比如内存不足等问题。此外,当输入的是嘈杂或者品质较差的数据时,模型的表现也可能受到影响。 为了克服这些局限性,后续版本如 vq-Wav2VecWav2Vec 2.0 对原始架构进行了优化改进,增强了系统的稳定性和效率。 ### 使用方法 对于希望快速上手并应用 Wav2Vec 的开发者来说,可以借助 Hugging Face 提供的强大工具集——Transformers 库。下面是一个简单的 Python 脚本示例,展示了如何加载预先训练好的 Wav2Vec 2.0 模型以及相应的处理器: ```python from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor import torch import torchaudio model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h") processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h") ``` 上述代码片段实现了从指定路径下载官方发布的基础版 Wav2Vec 2.0 模型及其配套组件的功能[^2]。 ### 应用场景 得益于强大的表征能力,Wav2Vec 已经成为多个重要领域不可或缺的一部分。具体而言,在自动语音识别(ASR)方面,它可以显著改善转录准确性;而在文本到语音(TTS)转换过程中,则有助于生成更加自然流畅的人声效果。除此之外,通过对声音情绪的有效解析,还能支持诸如客户满意度监测之类的情感分析服务[^4]。
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值