记一下折腾wenet的过程

先强调下,我是小白,这个只是我尝试的记录,仅供参考

初期的尝试

这部分尝试其实不用看,我只是既然已经做过了,就记录一下

我装的Ubuntu20.04,其实22估计也可以,我装了后发现python版本3.9,pip里面没有wenetruntime包,又换回20了,当时不会conda没经验

装完系统主要就是一些常用的工具装一下,vim、cmake、pip啥的

sudo apt-get -y install git cmake python3-pip vim git

然后关默认的显卡驱动,可以参考这个https://blog.csdn.net/u012229282/article/details/124442555

sudo vim /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
sudo update-initramfs -u
reboot

这一步我感觉也不是很必要,我看nvidia驱动按照过程默认也会执行这操作,但反正我做了

然后去nvidia官网找下驱动https://www.nvidia.cn/Download/index.aspx?lang=cn#
命令直接贴了

wget https://cn.download.nvidia.com/XFree86/Linux-x86_64/525.116.03/NVIDIA-Linux-x86_64-525.116.03.run
sudo apt-get install build-essential 
sudo su
sh NVIDIA-Linux-x86_64-525.116.03.run

然后安装cuda和cudnn,这两个东西我感觉吧,如果用pytorch的话,有现成的版本包,貌似根本不需要单独安装,但如果是libtorch C++版本的,那需要版本匹配,当然这个目前我没有严谨验证过,姑且先这么理解

官网下载先 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local

这里面选择了你系统版本啥的,现在的版本是12了,官网上也提供旧版本下载,但我发现11.x的版本安装都会报错,另外下面这个安装里面其实默认还包含了驱动,有看到网上说只要按照toolkit就行,但也没事,先按照下面的安装就好了,多版本怎么搞下面说明

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda-repo-ubuntu2004-12-1-local_12.1.1-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-12-1-local_12.1.1-530.30.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

装完要加到环境变量
vim ~/.bashrc   把下面的加上
 

# cuda 12.1
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:$CUDA_HOME/bin

然后重新连接一次shell,或者在当前shell下手动export一下变量

装完这么验证

/usr/local/cuda-12.1/extras/demo_suite$ ./deviceQuery 
Result = PASS

这块的资料乱糟糟,没有理清楚,不过我最后总结下,其实这里安装啥版本没关系,如果需要别的版本的话,官网找到对应版本,直接按上面步骤,最后install的时候tab一下,只要安装toolkit就好
装了多个版本后,只要重新配置软链接就可以切换版本,举个例子,nvcc可以查看版本

#cuda12 切换到 cuda11
sudo rm -rf /etc/alternatives/cuda
sudo ln -s /usr/local/cuda-11.3/ /etc/alternatives/cuda
nvcc --version

#cuda11 切换到 cuda12
sudo rm -rf /etc/alternatives/cuda
sudo ln -s /usr/local/cuda-12.1/ /etc/alternatives/cuda
nvcc --version

# 切到11.7
sudo rm -rf /etc/alternatives/cuda
sudo ln -s /usr/local/cuda-11.7/ /etc/alternatives/cuda
nvcc --version

cudnn安装

下载 https://developer.nvidia.com/rdp/cudnn-download
安装 https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.0.131_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2004-8.9.0.131/cudnn-local-80259EFB-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get install libcudnn8=8.9.0.131-1+cuda12.1 
sudo apt-get install libcudnn8-dev=8.9.0.131-1+cuda12.1
sudo apt-get install libcudnn8-samples=8.9.0.131-1+cuda12.1

另外补一个包,wenet编译时候会用到

sudo apt-get install libicu-dev

到这里基本环境已经就绪了,可以编译wenet试试了,上面的这些步骤吧,其实可能就驱动安装时必要的,其他貌似也不是很重要,但是反正都做了,记一下多些了解和感受。

wenet初尝试

这东西吧,主要还是我实在是太新手了,刚开始完全没概念,我连推理和训练这两名词都还不太理解,看那Readme更是一头雾水,到底我该做什么才能跑起来,Demo在哪,长啥样?

之前跑了一次直接pip安装wenetruntime包,做了一把wav的识别,但是感受还是很微妙,不知道怎么继续。

先说明一下,这些记录都是基于当前版本的wenet,这东西也是一直在更新的,过段时间可能就不一样了

这次是翻了翻runtime里面有个libtorch的readme,打算做一把这个编译先感受一下。

这个Demo是一个C++的实现,做了Server和Client,在Client读取wav音频文件送到Server解析转文字。

默认编译是CPU版本,可以加启用GPU的选项,默认应该是websocket传输数据,可以加GPRC选项

这个GRPC选项真是大坑,一开始开了这个选项,就会去拉GRPC源码编译,这垃圾玩意一堆子模块,国内的屎网络没办法把子模块全部拉取成功,然后我找了各种方法试图拉取成功,改host、挂代理,全都试过了,完全搞不定,放弃了。所以以下是按照不开启GRPC的搞的。

不考虑GRPC的编译其实很简单,这里也不涉及python,如果想快点还可以自己改下makefile加-j多线程

git clone https://github.com/wenet-e2e/wenet
cd wenet/runtime/libtorch
mkdir build && cd build
cmake -DGPU=ON ..
cmake --build .

正常应该不会出什么意外吧,编译完成后就是下载以下预训练好的模型,这个东西就是他们自己已经用一堆样本数据训练好的结果,可以直接用来做转换。
 

# 当前目录为 wenet/runtime/libtorch
wget https://wenet-1256283475.cos.ap-shanghai.myqcloud.com/models/aishell/20210601_u2%2B%2B_conformer_libtorch.tar.gz
tar -xf 20210601_u2++_conformer_libtorch.tar.gz
# 因为示例里面后面传入model目录用的这个名字,先改成一样的
mv 20210601_u2++_conformer_libtorch 20210602_unified_transformer_server

搞个wav命名成test.wav

开启server

export GLOG_logtostderr=1
export GLOG_v=2
model_dir=./20210602_unified_transformer_server
./build/bin/websocket_server_main \
    --port 10086 \
    --chunk_size 16 \
    --model_path $model_dir/final.zip \
    --unit_path $model_dir/units.txt 2>&1 | tee server.log

启动client

export GLOG_logtostderr=1
export GLOG_v=2
wav_path=test.wav
./build/bin/websocket_client_main \
    --hostname 127.0.0.1 --port 10086 \
    --wav_path $wav_path 2>&1 | tee client.log

正常可以通过nvidia-smi查看server已经用到gpu了,另外发现头两次转换特别慢,之后会快不少,不知道为什么,以后再研究,然后这个是C++版本的,还想再折腾以下python版本的,实际开发起来会方便一点,这个后续再更新

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值