Ubuntu22.04本地部署PaddleSpeech实验代码(GPU版)

news2024/11/19 19:39:35

前言

        之前做了一个Ubuntu18.04.6本地部署PaddleSpeech实验代码(CPU版)的相关项目,因为是CPU版的,合成/训练等方面的耗时真的是非常感人,有了之前的经验,又部署了一个GPU版的,说实话虽然时间用的相对之前少了很多,但是问题还是挺多的,依然是对Python的学习深度不够,CPU和GPU之间的差距是很大的,CPU不需要驱动,不需要驱动相关的库,而GPU问题就多多了,下面就是我安装全过程,包含了一些问题的分析。

        为什么选择使用22.04这个版本呢,主要原因就是“ldd (Ubuntu GLIBC 2.35-0ubuntu3.4) 2.35” GLIBC的这个版本问题了。18.04的GLIBC版本低,GPU训练是需要用到这个库的。但是手动变更GLIBC版本风险是非常大的,最后平衡后放弃了18.04 。

一、软件版本的选择

1.1.程序方面所需的版本匹配:

PaddlePaddl==2.4.2-GPU

PaddleSpeech==1.4.1

Numpy==1.22.4 或 1.23.5

PaddleNLP==2.5.2

1.2.硬件驱动所需的版本匹配:

这里 参考于:飞桨PaddlePaddle-源于产业实践的开源深度学习平台飞桨致力于让深度学习技术的创新与应用更简单。具有以下特点:同时支持动态图和静态图,兼顾灵活性和效率;精选应用效果最佳算法模型并提供官方支持;真正源于产业实践,提供业界最强的超大规模并行深度学习能力;推理引擎一体化设计,提供训练到多端推理的无缝对接;唯一提供系统化技术服务与支持的深度学习平台icon-default.png?t=N7T8https://www.paddlepaddle.org.cn/install/old?docurl=/documentation/docs/zh/install/pip/linux-pip.html

1.2.1显卡驱动:最新版即可

官方驱动 | NVIDIA下载适用于 GeForce、TITAN、NVIDIA RTX、数据中心、GRID 等 NVIDIA 产品的新驱动。icon-default.png?t=N7T8https://www.nvidia.cn/Download/index.aspx?lang=cn

1.2.2 CUDA:

按照Paddle官方的说法,选择10.2 ,也是因为我显卡比较老,担心算力不够出问题.进入下面的网页,选择对应版本。

CUDA Toolkit Archive | NVIDIA Developericon-default.png?t=N7T8https://developer.nvidia.com/cuda-toolkit-archive

1.2.3 cuDNN:官方对应7.6.5

cuDNN 历史版本 | NVIDIA 开发者icon-default.png?t=N7T8https://developer.nvidia.cn/rdp/cudnn-archive

告诉你个不用登陆和注册NVIDIA的方法下载cuDNN

将以上三个文件都准备好,我放到了 /home 目录下,等下面安装就会用到。

二、系统设置

桌面上鼠标右键 或 Ctrl+Alt+T(打开终端)

2.1.设置root

sudo passwd root

2.2.修改国内镜像

先找到对应系统的镜像地址:

ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorubuntu 使用帮助 | 镜像站使用帮助 | 清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务,帮助用户更方便地获取开源软件。本镜像站由清华大学 TUNA 协会负责运行维护。icon-default.png?t=N7T8https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

#替换内容
 sudo gedit /etc/apt/sources.list

2.3.关闭显示器设置

三、硬件配置

3.1.CPU

        CPU当然要支持AVX2指令集了:

cat /proc/cpuinfo |grep

3.2.内存

        我的电脑是32G内存,之前实验的时候16G也可以跑起来,问题都不大。

3.3.显卡及驱动安装

        买显卡的时候上当了,买了一块3060,发现驱动无论如何都安装不上,后来问了商家,才发现显卡是代工厂做的,显卡驱动得用代工厂发布的,后来给我了个安装官方驱动的解决方案,安装后程序依然跑不起来,避坑指南(发行者)便宜没好货!!!

        最后还得使用之前的1060,算力虽然差了点,但最起码能用,下面是安装的显卡步骤,下载已经在上面说过了,自己提前准备好:

3.3.1安装显卡驱动

3.3.1.1安装工具GCC
sudo apt-get install gcc g++ make

        这里不得不说以下GCC。Ubuntu22.04默认安装的是 g++ -11 gcc -11 。后续在实验过程中有一个非常重要的关于MFA的库,在11下会报错,需要安装 g++ -6 gcc -6。

3.3.1.2禁止nouveau
sudo gedit /etc/modprobe.d/blacklist.conf

在底部追加

blacklist nouveau
options nouveau modeset=0

执行命令使之生效

sudo update-initramfs -u

重启电脑

reboot

再次回到桌面(此时应该是没有驱动的状态,大图标)

验证是否关闭nouveau ,没有输出即成功

lsmod | grep nouveau
3.3.1.3安装驱动

关闭桌面

sudo telinit 3
#切换到 我的驱动文件目录
cd /home

#赋予权限
sudo chmod +x NVIDIA-Linux-x86_64-535.113.01.run

#执行安装
sudo bash NVIDIA-Linux-x86_64-535.113.01.run –no-opengl-files –no-x-check

–no-opengl-files 只安装驱动文件,不安装OpenGL文件。这个参数最重要,不加很有可能出现循环登录,也就是loop login。
–no-x-check 安装驱动时不检查X服务

进入界面

选择:Continue installathion 继续安装

自动更新X配置 选择否 直到完成安装

重启电脑

#查看显卡
nvidia-smi

3.3.2 CUDA安装

安装依赖

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

执行安装过程

#进入目录
cd /home

#执行安装
sudo sh cuda_10.2.89_440.33.01_linux.run

出现的协议的地方输入 accept 一路安装就可以了 。

添加环境变量

sudo gedit ~/.bashrc

末尾添加

export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}
export PATH=${CUDA_HOME}/bin:${PATH}

验证

nvcc -V

3.3.3 cuDNN安装

#进入文件目录
cd /home

#解压文件
tar zxvf cudnn-10.2-linux-x64-v7.6.5.32.tgz

#复制文件到指定位置
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

验证

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

四、安装环境

4.1.安装Miniconda

Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorIndex of /anaconda/miniconda/ | 清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux 镜像源服务,帮助用户更方便地获取开源软件。本镜像站由清华大学 TUNA 协会负责运行维护。icon-default.png?t=N7T8https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/我使用了 Miniconda3-py39_23.9.0-0-Linux-x86_64.sh

#进入目录
cd /home
#执行安装
sudo bash Miniconda3-py39_23.9.0-0-Linux-x86_64.sh

一路查看协议,慢点,最后按多了会退出。最后 有个要输入目录的地方,我输入了/home

#刷新环境变量
source ~/.bashrc

创建虚拟环境

conda create --name m1 python=3.9

进入虚拟环境

conda activate m1

4.2相关库(conda环境下)

sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

sudo apt-get install gcc make zlib1g-dev
 
sudo apt-get install libbz2-dev
 
sudo apt-get install libsqlite3-dev
 
sudo apt-get install libxml2-dev libffi-dev libxslt1-dev
 
pip install pytest-runner -i https://pypi.tuna.tsinghua.edu.cn/simple
 
#这个是server实例中,变速需要的三方插件
pip intall soxbindings -i https://pypi.tuna.tsinghua.edu.cn/simple 

pip install streamlit -i https://pypi.tuna.tsinghua.edu.cn/simple

sudo apt-get install ffmpeg

4.3 安装Paddle(conda环境下)

conda install paddlepaddle-gpu==2.4.2 cudatoolkit=10.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/

这步基本没问题,直接过。

4.4 安装PaddleSpeech(conda环境下)

pip install paddlespeech -i https://mirror.baidu.com/pypi/simple

安装过程中有个包总是连接超时,名字记不住了,好像是 setuptools-msc ?反正根据提示 手动安装下,指定清华源就可以了。

4.5补充安装PaddleNLP(conda环境下)

pip install paddlenlp==2.5.2 -i https://mirror.baidu.com/pypi/simple

为什么补充安装它呢?因为GPU版在运行实验代码的时候,会有一个 错误:

ModuleNotFoundError: No module named ‘paddle.nn.layer.layers‘

4.6补充安装paddlespeech_ctcdecoders(conda环境下)

pip install paddlespeech_ctcdecoders -i https://mirror.baidu.com/pypi/simple

4.7更换NUMPY版本

不换默认的numpy会报错,就是speech中使用的是老版本函数。


pip install numpy==1.23.5 -i https://pypi.tuna.tsinghua.edu.cn/simple

五、实验代码部署

实验代码下载及修改参考:Ubuntu18.04.6本地部署PaddleSpeech实验代码(CPU版)-CSDN博客文章浏览阅读365次。这是我最早使用的部署系统,使用了Docker和直接安装两种方式,也失败了,但是后来在ubuntu解决问题的过程中,也发现Centos出现的问题也是可以解决的,所以等有空了,我会在尝试一次在Centos中部署下,并制作成Docker。这个文件里有很多这样的地方,原文是 python3 /home/aistudio/xxxxxxxx,但是我们python3可是系统自己带的python3.6啊,而且没安装相关插件环境,不出错才怪呢,路径也不对,自行搜索修改吧,不多。所以说,运行失败的大部分原因是因为权限和路径。https://blog.csdn.net/alarey/article/details/131511738

六、配置实验代码相关环境

这里参考了代码中带的env.sh ,最重要的 就是关于MFA部分了。这是训练用的。

6.1 处理NLTK,下载失败几率高

cp -r /home/ajb/aistudio/nltk_data/ /root/

6.2 配置MFA环境

这个脚本在 上面的文章中有,这里只作说明。

相关的文件,下载的代码中都有。注意脚本中的 路径修改即可。

最关键的就是那个软连接,没有它会报错,这个错误就是:

找不到 mfa文件夹,这个文件夹是项目中的,是在训练的时候应该自动生成,如果没有生成,说明MFA配置是有问题的,下面就都进行不下去了。

6.3解决MFA相关问题

好嘛!上面通过了,文件夹也生成了,出现新问题:

找不到文件raw_mfcc.0.scp或.ark

查了下CPU版的项目,这个文件存在于

它其实还是 因为MFA出现了问题。我查看了下日志。提示是有个库找不到:

libgfortran.so.3

这个库安装过程稍微有点麻烦,我写在6.4

6.4安装libgfortran3

直接安装会出错:

sudo-apt get install libgfortran3  
E: Unable to locate package libgfortran3

因为22.04不支持g++ -6 ,默认是g++-11,这个库竟然在g++ -6下。

sudo gedit /etc/apt/sources.list

文末加入

deb http://gb.archive.ubuntu.com/ubuntu/ bionic main universe

更新源

sudo apt-get update

碰到错误

The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXXXXXXX

解决密钥错误(XXXXXX的地方就是系统提示的那个密钥)

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXXXXXX

再更新源(这个过程看网络了,我是真的很慢,用了1个小时)

sudo apt-get update

安装g++ -6

apt-get install g++-6

设置为系统默认版本

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 6

安装 libgfortran3

sudo apt-get install libgfortran3

6.5关于GCC G++版本的选择设置

这里提前说了下这个设置,最好提前设置好,方便接下来的问题修正

设置多版本gcc g++

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100

切换

#切换gcc版本
sudo update-alternatives --config gcc
#切换g++版本
sudo update-alternatives --config g++

弹出选择

  选择       路径           优先级  状态
------------------------------------------------------------
* 0            /usr/bin/gcc-6    100       自动模式
  1            /usr/bin/gcc-11   100       手动模式
  2            /usr/bin/gcc-6    100       手动模式
 
要维持当前值[*]请按<回车键>,或者键入选择的编号:2

到这里其实整个项目就可以跑起来,最后有个大问题需要解决。

七、安装g++-6后,重启电脑,显卡驱动丢失

        上面问题都处理完后,程序也运行没有任何问题,训练、合成速度明显提高,非常快,重启了下系统,再进入的时候发现分辨率变最低了。。。。通过 nvidia-smi 命令查看驱动,竟然变未知命令了。

        我又再一次 通过 sudo telinit 3进入,再执行一次驱动安装,会出错退出,回来查看nvidia install.log,发现是 gcc g++版本过低导致的,那么,我就通过 6.5切换到gcc g++-11版本上,重新安装了一次显卡驱动。

        再重启,显卡恢复(nvidia-smi),启动项目streamlit run SpeechMain.py 。运行训练。。。

一切正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1138085.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CVE-2022-22963 Spring Cloud Function SpEL命令注入

一、简介 Spring Cloud Function 是基于 Spring Boot的函数计算框架。该项目致力于促进函数为主的开发单元&#xff0c;它抽象出所有传输细节和基础架构&#xff0c;并提供一个通用的模型&#xff0c;用于在各种平台上部署基于函数的软件。在Spring Cloud Function相关版本&am…

Pytest框架之fixture详解

本文详细讲解了Pytest框架之fixture&#xff0c;文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值&#xff0c;需要的朋友可以参考下 相关文章 pytest作为python语言的测试框架&#xff0c;它的fixture有2种实现方式。 一种是xunit-style&#xf…

OpenLayers实战,OpenLayers获取用户定位位置并高亮显示用户所在行政区划边界

专栏目录: OpenLayers实战进阶专栏目录 前言 本篇文章通过国内的省、自治区和直辖市的GeoJson数据作为行政区划边界数据,然后根据用户定位位置,通过OpenLayers计算得到用户所在行政区划,并使用OpenLayers高亮显示用户所在行政区划边界。 本章是综合应用场景,所以代码稍…

ESP32 ESP-IDF LVGL移植和Wokwi仿真

陈拓 2023/10/21-2023/10/25 1. ESP-IDF开发环境 ESP-IDF的LVGL移植包括2个组件&#xff1a; lvgllvgl_esp32_drivers 目前lvgl_esp32_drivers在ESP-IDF 5.0以上版本编译通不过&#xff0c;所以我们安装ESP-IDF 4.4.5。 从https://dl.espressif.cn/dl/esp-idf/下载 安装说明…

纳米软件分享:芯片电学测试及测试参数指标介绍

电学测试是芯片测试的一个重要环节&#xff0c;用来描述和评估芯片的电性能、稳定性和可靠性。芯片电学测试包括直流参数测试、交流参数测试和高速数字信号性能测试等。 什么是芯片电学测试? 芯片电学测试就是检测芯片、元件等电性能参数是否满足设计的要求。检测的项目有电压…

【uniapp】短信验证码输入框

需求是短信验证码需要格子输入框 如图 网上找了一个案例改吧改吧 直接上代码 结构 <template><view class"verify-code"><!-- 输入框 --><input id"input" :value"code" class"input" :focus"isFocus"…

Ubuntu安装Jitsi Meet详细教程

文章目录 Ubutu系统安装启用root账户切换Ubuntu源设置DNS 主机名和域名配置安装open JDK安装Nginx安装 Jitsi Meetjitsi本地测试使用一个奇怪的BUG Jist服务管理 Ubutu系统安装 官方推荐用Ubuntu&#xff0c;网上很多教程也都是基于Ubuntu的&#xff0c;所以选择这个系统。 其…

【Python Numpy】Ndarray属性

文章目录 前言一、NumPy数组的常用属性1.1 常用属性1.2 示例代码 总结 前言 NumPy&#xff08;Numerical Python&#xff09;是Python中用于科学计算的一个重要库&#xff0c;它提供了一个强大的多维数组对象&#xff08;ndarray&#xff09;以及一系列用于处理这些数组的函数…

从0到1:CTFer成长之路——死亡 Ping 命令

死亡 ping 命令 绕过探测 手动尝试 慢 脚本生成转义后的字符&#xff0c;后面拼接命令 import urllib.parsewith open(r"C:\Users\LEGION\Desktop\RCE.txt", "w", encoding"utf-8") as f:for i in range(0, 255):encoded_str urllib.parse…

短篇小说 《镜花水月》

最近脑中不知道为什么&#xff0c;一直构想着这样一个故事&#xff0c;心血来潮&#xff0c;还是想把它直接付诸实践。如果大家有些兴趣可以读一读&#xff0c;欢迎评论留言&#xff0c;发表自己的看法&#xff0c;大家也可以给一些建议或者自己设计一些比较好的情节或者点&…

leetcode第80题:删除有序数组中的重复项 II

题目描述 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 …

一种实用的边的存储结构--链式前向星

文章目录 前言前向星定义存储结构优缺点 链式前向星边的定义边的插入边的查找运行示例 总结 前言 我们对于图的存储方式常用的有邻接矩阵&#xff08;适用于稠密图&#xff09;&#xff0c;对于边的查询效率较低&#xff0c;也有邻接表&#xff0c;对于边的查询效率高&#xf…

警报:Citrix和VMware漏洞的PoC利用代码已发布

导语 近日&#xff0c;虚拟化服务提供商VMware向客户发出警报&#xff0c;称其Aria Operations for Logs中的一个已修补安全漏洞的PoC利用代码已经发布。这个高危漏洞&#xff08;CVE-2023-34051&#xff09;是一种绕过身份验证的情况&#xff0c;可能导致远程代码执行。本文将…

【备考网络工程师】如何备考2023年网络工程师之上午常见考点篇(上)

目录 写在前面涉及知识点一、香农定理与奈奎斯特定理问题1.1 香农定理1.2 尼奎斯特定理 二、E1与T1问题三、数据传输延迟问题3.1 对于电缆3.2 对于卫星 四、数字化技术PCM计算问题五、CSMA/CD以太帧最小帧长计算问题六、CSMA/CD考点汇总七、CSMA/CA考点汇总八、各协议注意事项总…

初步认识 Web Components 并实现一个按钮

目录 1.Web Components 基本概念 1.1 三个场景 1.2 是什么 2.使用 Custom Elements 实现一个按钮 2.1 概念介绍 2.1.1 Shadow DOM 2.1.2 Element.attachShadow() 2.1.3 在组件中 使用 Shadow DOM 基本步骤 2.1.4 attributeChangedCallback 2.1.5 get observedAttribu…

绝对路径与相对路径

目录 一、绝对路径 二、相对路径 三、举例 一、绝对路径 绝对路径是指从根目录开始的完整路径&#xff0c;包括所有父目录的路径&#xff0c;直到目标文件或者目录 所在的位置。 全文件名全路径文件名绝对路经完整的路径 例如:在windows系统中&#xff0c;绝对路径通常以…

nuxt脚手架

nuxt(vue)和next(react)都是服务端渲染的 安装 - NuxtJS | Nuxt.js 中文网 首先要安装 create-nuxt-app: npm install create-nuxt-app -g 然后&#xff1a;npx create-nuxt-app master 建议在cmd中操作&#xff0c;可以单选和多选 然后就各种单选和多选&#xff0c;多选按…

实用篇-服务拆分及远程调用

一、服务拆分 服务拆分(也叫项目拆分) 注意事项&#xff1a; 不同的微服务&#xff0c;不要重复开发相同的业务要求微服务之间数据独立&#xff0c;不要访问其他微服务的数据库微服务可用将自己的业务暴漏为接口&#xff0c;供其他服务调用 1. Cloud-Demo拆分 首先有一个已…

项目管理之如何有效定义项目目标

项目目标管理是项目管理中非常重要的一个环节&#xff0c;它可以帮助项目团队明确目标&#xff0c;制定合理可行的计划&#xff0c;确保项目顺利实施并取得成功。在定义项目目标时&#xff0c;需要遵循SMART原则&#xff0c;确保目标具体、明确、可衡量、可实现、相关且有时间和…

【Reticulate Micro】申请1000万美元纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于美国的【Reticulate Micro】近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为(RMIC) &#xff0c;Reticulate…