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

初期的尝试

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

我装的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版本的,实际开发起来会方便一点,这个后续再更新

记一下折腾wenet的过程相关推荐

  1. oracle12c安装卡住_记一次oracle12c安装过程问题及处理方法

    该问题解决方法为:在数据库的安装选项时不要选择"创建和配置数据库",选择"仅安装数据库软件",不再报错,继续安装,直至安装完成. 安装完成后运行"Da ...

  2. 记android开发环境搭建过程

    更新:在eclipse上做了几周android的课程作业,发现是真的不好用.在可视化界面操作,无论是添加组件还是修改组件数据,都很容易闪退.后来去下了最新版本的android studio,安装简单, ...

  3. QPBOC与标准借贷记的脱机认证详细过程

    最近搞定了标准借贷记的脱机认证,清楚了它的脱机认证过程.跟电子现金区别还是蛮大的.想在此详细的记录下,,, 未完待续...先说一下ARQC, 直接看指令 00A404000E315041592E535 ...

  4. apache 编译php mysql_记一次痛苦的过程-------源码编译安装apache+php5+mysql

    当时有我们准备做一个项目,于是我就自己搭建了lamp服务器,直接yum install所有文件,因为centos是一个比较稳重的系统,所以它上面所有软件都不是最新的,apache是2.2.15版本,p ...

  5. 记一次Sentry部署过程

    前言 Sentry 是一个开源的实时错误报告工具,支持前后端.其他后端语言以及主流框架等.既然是开源,那么我们可以在自己的服务器上搭建,本文记录搭建的过程以及搭建过程中遇到的一些问题,也可以跟着这个教 ...

  6. mysql bug_MySQL 记一次 Bug发现过程

    水平有限有误请谅解 这个问题是一位朋友@DBA-老庄的,他们使用的是PXC环境如下: MySQL:5.7.18-15 wsrep:29.20 os:Red Hat Enterprise Linux S ...

  7. 正在导出系统过程对象和操作 卡住_开会时CPU 飙升100%同事们都手忙脚乱记一次应急处理过程

    告警 正在开会,突然钉钉告警声响个不停,同时市场人员反馈客户在投诉系统登不进了,报504错误.查看钉钉上的告警信息,几台业务服务器节点全部报CPU超过告警阈值,达100%. 赶紧从会上下来,SSH登录 ...

  8. Windows环境下安装React Native开发环境----记一次填坑过程

    前言 集成React Native开发环境遇到各个坑,调试了很久出现过找不到设备,百度上个别人的资料有误被绕来绕去耽误了很多时间,下载慢等待时间过长等问题,最后多方查阅资料,电脑重启等操作终于部署好了 ...

  9. 生产环境CPU飙高问题解决,记一次完整解决过程

    一.发现问题 前段时间我们新上了一个新的应用,因为流量一直不大,集群QPS大概只有5左右,写接口的rt在30ms左右. 因为最近接入了新的业务,业务方给出的数据是日常QPS可以达到2000,大促峰值Q ...

最新文章

  1. 剑指offer:面试题24. 反转链表
  2. 必须了解的 MySQL 三大日志
  3. Cell颠覆性发现:中脑神经元的新作用
  4. caffe 问题集锦之使用cmake编译多GPU时,更改USE_NCCL=1无效
  5. hdu1042 java_hdu 1431 素数回文
  6. linux系统下源码安装mysql5.6数据库
  7. 思科模拟器-虚拟局域网的划分与配置实验
  8. 【转】mac os、linux及unix之间的关系
  9. js 调用父窗口的方法
  10. python爬取糗事百科
  11. cors 前后端分离跨域问题_SpringBoot 实现前后端分离的跨域访问(CORS)
  12. flex自定义更新UI
  13. 《代码敲不队》第八次团队作业:Alpha冲刺 第五天
  14. java时间格式转换
  15. Samsung ML-1640/1641/1645/2240/2241/2245/scx4200/4300/4623/4824/4828免费清零软件2.1.2完全版
  16. 01_基于蒲公英R300A的异地组网PLC调试实现
  17. 记录安卓,IOS安装kali的办法
  18. 笔记 | 人工智能导论 语义网络表示
  19. error : unterminated argument list invoking macro
  20. Veritas调研显示:全球企业普遍担心由于不符合新欧盟数据条例导致业务受损

热门文章

  1. c语言:输入出生日期,求年龄,拿走不谢(不包含虚岁)
  2. mysql update 几万 非常慢_如何解决mysql 查询和更新速度慢
  3. 计算机抖音怎么可以弄出音乐,抖音怎么提取视频里的音乐?怎么将抖音里的音乐用来做手机铃声?抖音视频提取音频的方法...
  4. TA移动终端:移动终端安全态势:产业链共融共赢
  5. 浙江大学 简单计算器
  6. C 语 言 程 序 设 计 --国王的许诺
  7. python怎么设编程两个数相加时_黄哥Python, LeetCode 第二题两数相加代码
  8. 有点儿压力也是好事情!
  9. c语言winpcap编程,c语言Winpcap编程结构并接收解析arp包
  10. SuperMap 二维数据建造三维模型