码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Ubuntu22.04本地部署PaddleSpeech实验代码(GPU版)


    前言

            之前做了一个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/

    1. #替换内容
    2. 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

    在底部追加

    1. blacklist nouveau
    2. options nouveau modeset=0

    执行命令使之生效

    sudo update-initramfs -u

    重启电脑

    reboot

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

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

    lsmod | grep nouveau
    3.3.1.3安装驱动

    关闭桌面

    sudo telinit 3
    1. #切换到 我的驱动文件目录
    2. cd /home
    3. #赋予权限
    4. sudo chmod +x NVIDIA-Linux-x86_64-535.113.01.run
    5. #执行安装
    6. 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配置 选择否 直到完成安装

    重启电脑

    1. #查看显卡
    2. 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

    执行安装过程

    1. #进入目录
    2. cd /home
    3. #执行安装
    4. sudo sh cuda_10.2.89_440.33.01_linux.run

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

    添加环境变量

    sudo gedit ~/.bashrc
    

    末尾添加

    1. export CUDA_HOME=/usr/local/cuda
    2. export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}
    3. export PATH=${CUDA_HOME}/bin:${PATH}

    验证

    nvcc -V

    3.3.3 cuDNN安装

    1. #进入文件目录
    2. cd /home
    3. #解压文件
    4. tar zxvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
    5. #复制文件到指定位置
    6. sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
    7. sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
    8. sudo chmod a+r /usr/local/cuda/include/cudnn.h
    9. 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

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

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

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

    创建虚拟环境

    conda create --name m1 python=3.9

    进入虚拟环境

    conda activate m1

    4.2相关库(conda环境下)

    1. sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
    2. sudo apt-get install gcc make zlib1g-dev
    3. sudo apt-get install libbz2-dev
    4. sudo apt-get install libsqlite3-dev
    5. sudo apt-get install libxml2-dev libffi-dev libxslt1-dev
    6. pip install pytest-runner -i https://pypi.tuna.tsinghua.edu.cn/simple
    7. #这个是server实例中,变速需要的三方插件
    8. pip intall soxbindings -i https://pypi.tuna.tsinghua.edu.cn/simple
    9. pip install streamlit -i https://pypi.tuna.tsinghua.edu.cn/simple
    10. 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中使用的是老版本函数。

    1. 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++

    1. sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 100
    2. sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
    3. sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 100
    4. sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100

    切换

    1. #切换gcc版本
    2. sudo update-alternatives --config gcc
    3. #切换g++版本
    4. sudo update-alternatives --config g++

    弹出选择

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

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

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

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

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

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

    一切正常。

  • 相关阅读:
    Linux系统编程-C++ I/O库
    这些好用的设计网站,你一定要收藏
    Vue使用脚手架(ref、props、mixin、插件、scoped)(七)
    【网络模型】OSI七层网络模型、TCP/IP网络模型、键入网址到页面显示的过程、DNS是什么等重点知识汇总
    一张图系列 - “kv cache“
    自动气象站和气象信息网络
    2022鹏城杯CTF---Crypto
    【校招VIP】前端链表算法之快慢指针题型
    单片机,0.07
    Redis实践优化
  • 原文地址:https://blog.csdn.net/alarey/article/details/134049618
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号