本次任务使用了paddle-npu镜像启动容器,并在容器里部署paddlespeech

题外话:网上有在主机上直接安装paddlespeech适配npu的教程,但是我在安装的时候主机的gcc相关依赖没法满足(是本人技术没法满足与机子无关)再加上之前部署模型都是使用docker进行npu适配的,有点强迫症,所以我灵机一动决定尝试一下这种方法,但是我找不到相关的教程所以我也不太确定这算不算旁门左道,但是能跑就行哈哈哈,如有不足之处,恳请指正。

一、下载paddle-npu的docker镜像,这镜像有20多G,建议检查docker空间是否满足。

# 适用于 X86 架构
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/device/paddle-npu:cann80RC2-ubuntu20-npu-base-x86_64-gcc84
# 适用于 Aarch64 架构
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/device/paddle-npu:cann80RC2-ubuntu20-npu-base-aarch64-gcc84

昇腾 NPU 飞桨安装教程 - PaddleX 文档

昇腾 NPU 安装说明-使用文档-PaddlePaddle深度学习平台(这个镜像好像是python3.9的环境兼容性可能会好点,但是我没试过)

二、启动容器

第一种方法就是直接使用docker启动

docker run -it --name paddle-npu-dev -v $(pwd):/work \
    --privileged --network=host --shm-size=128G -w=/work \
    -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
    -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
    -v /usr/local/dcmi:/usr/local/dcmi \
    -e ASCEND_RT_VISIBLE_DEVICES="0,1,2,3,4,5,6,7" \
    ccr-2vdh3abv-pub.cnc.bj.baidubce.com/device/paddle-npu:cann80RC2-ubuntu20-$(uname -m)-gcc84 /bin/bash

以下,是我使用的第二种方法,使用docker-compose 启动,如果使用第一种方法记得挂载目录。

1. 新建docker目录并在docker目录下新建docker-compose.yml文件和data目录

mkdir -p /path/to/your/docker/data
cd /path/to/your/docker
nano docker-compose.yml

2.,参考下面内容设置docker-compose启动的相关配置

version: '3.8'
services:
  paddle-npu-dev:
    image: paddle-npu:cann80RC2-ubuntu20-npu-base-aarch64-gcc84
    container_name: paddle-npu-dev
    command: /bin/bash
    privileged: true
    network_mode: host
    shm_size: 128G
    working_dir: /work
    environment:
      - ASCEND_RT_VISIBLE_DEVICES="4,5,6,7"
    volumes:
      - /path/to/your/docker/data:/work  #这个是我新增的挂载目录
      - /usr/local/Ascend/driver:/usr/local/Ascend/driver
      - /usr/local/bin/npu-smi:/usr/local/bin/npu-smi
      - /usr/local/dcmi:/usr/local/dcmi
    tty: true
    stdin_open: true

3.docker-compose 启动容器 

cd /path/to/your/docker
#旧版本
docker-compose up -d 
或
#新版本
docker compose up -d

4.拉取paddlespeech代码到挂载目录中

cd /path/to/your/docker/data
git clone https://github.com/PaddlePaddle/PaddleSpeech.git

三、进入容器

docker exec -it paddle-npu-dev /bin/bash

然后,检查容器环境的python版本,修改为python3.9

python --version
python3 --version

安装python3.9并设置默认版本,仅在docker容器里修改,主机环境慎重!!

add-apt-repository ppa:deadsnakes/ppa
apt update
apt install python3.9
#设置python版本优先级,数字越大优先级越高
update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1
update-alternatives --install /usr/bin/python python /usr/bin/python3.9 2
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
#设置优先级后还可手动切换,输入对应的Selection的值即可
update-alternatives --config python


https://www.sysgeek.cn/install-python-ubuntu/

验证python版本

python --version
python3 --version

正片开始,开始安装paddlespeech

PaddleSpeech适配昇腾开源验证任务心得-云社区-华为云

python -m pip install paddlepaddle==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/

pip  install sox swig -i https://mirrors.aliyun.com/pypi/simple

apt update

apt install libasound2-dev libflac-dev libmpg123-dev libvorbis-dev

apt install libsndfile1-dev

apt install bzip2

pip install pytest-runner -i https://mirrors.aliyun.com/pypi/simple

cd /work/PaddleSpeech  #进到容器的paddlespeech根目录下

pip install .  -i https://mirrors.aliyun.com/pypi/simple

# 有可能报错opencc版本错误
vim setup.py

opencc==1.1.6 改为opencc

Ubuntu安装libsndfile:轻松上手音频文件处理必备利器! - 云原生实践

四、测试paddlespeech

1.命令行测试

paddlespeech tts --input "你好,欢迎使用百度飞桨深度学习框架!" --output output.wav

2.服务启动测试 

# 在容器中进入paddlespeech根目录
cd /work/PaddleSpeech
# 开启服务
paddlespeech_server start --config_file ./paddlespeech/server/conf/application.yaml

3. 安装nltk_data,启动测试时会有nltk_data相关的报错,需要先下载nltk_data,目录里大概包含这些项目

这个CSDN里有相关教程,这里就不多讲,记得下载后目录里的zip压缩包要解压不然可能会报错。

然后

将下载的nltk_data要放在挂载目录/path/to/your/docker/data里,再进入容器中把nltk_data复制到指定目录中。

# 查询并将nltk_data移动到指定的任一目录
import nltk
nltk.find('.')
# 我复制到了/root目录中
cp -r /work/nltk_data /root/nltk_data

结尾

如果服务测试成功就结束了,总的来说,虽然废话多了一点,但是就只是换了docker环境而已,希望这个教程对你有一点帮助,如有疏漏,敬请指正。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐