玩玩“小藤”开发者套件 Atlas 200I DK A2 之部署智能语音助手

2023-09-20 10:31:54

在这里插入图片描述

0. 背景

总所周知,英伟达的GPU供不应求,还各种限制。华为推出了升腾AI可以提供AI算力,那就玩玩“小藤”开发者套件 Atlas 200I DK A2 学习学习。

今天就在Atlas 200I DK A2 部署我自己开发的智能语音助手。

智能语音助手代码还未开放。

1. 安装 flac

flac 是一种无损音频压缩格式,全称是 Free Lossless Audio Codec(自由无损音频编码)。

sudo apt-get install flac
#sudo apt-get install portaudio19-dev

2. 创建自签名证书

我的 IP 是 192.168.31.160,

mkdir -p /u01/certs; cd /u01/certs
openssl genrsa -des3 -passout pass:123456 -out ca.key 2048
openssl rsa -in ca.key -passin pass:123456 -out ca.key
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj "/CN=myserver.local"
openssl genrsa -out tls.key 2048
openssl req -new -key tls.key -out tls.csr -subj "/CN=myserver.local"
cat > server.ext <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.myserver.local
DNS.2 = *.oracle.myserver.local
DNS.3 = 192.168.31.160
EOF

openssl x509 -req -in tls.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out tls.crt -days 3650 -extfile server.ext

3. 创建虚拟环境

conda create -n talk python==3.9 -y
conda activate talk

4. 安装PyTorch

我一开始尝试安装 PyTorch 1.11.0 版本,但是执行下面命令总是报错,后来选择安装 PyTorch 2.0.1 版本是可以执行成功的。所以本文章里以安装 PyTorch 2.0.1 版本进行说明。

python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())"

安装PyTorch环境依赖,

pip3 install pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install wheel -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install typing_extensions -i https://pypi.tuna.tsinghua.edu.cn/simple

获取安装包,

wget https://download.pytorch.org/whl/torch-2.0.1-cp39-cp39-manylinux2014_aarch64.whl

安装PyTorch,

pip3 install torch-2.0.1-cp39-cp39-manylinux2014_aarch64.whl

5. 安装 PyTorch 插件 torch_npu

获取PyTorch插件的whl包,

wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc2-pytorch2.0.1/torch_npu-2.0.1rc1-cp39-cp39-linux_aarch64.whl

执行如下命令安装,

pip3 install torch_npu-2.0.1rc1-cp39-cp39-linux_aarch64.whl

执行如下命令,若返回True则说明安装成功。

python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())"

在这里插入图片描述
安装对应框架版本的torchvision,

pip3 install torchvision==0.15.2

6. 安装APEX混合精度模块

混合精度训练是在训练时混合使用单精度(float32)与半精度(float16)数据类型,将两者结合在一起,并使用相同的超参数实现了与float32几乎相同的精度。在迁移完成、训练开始之前,基于NPU芯片的架构特性,用户需要开启混合精度,可以提升模型的性能。APEX混合精度模块是一个集优化性能、精度收敛于一身的综合优化库,可以提供不同场景下的混合精度训练支持。

由于 pep-0440,我们重新安装特定版本的 setuptools,

pip install --upgrade pip setuptools==57.5.0

安装依赖,

apt-get install -y patch build-essential libbz2-dev libreadline-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev liblzma-dev m4 dos2unix libopenblas-dev git 

获取昇腾适配的APEX源码,

git clone -b master https://gitee.com/ascend/apex.git

因为我使用的是 3.9 版本,修改 scripts/build.sh 中 PY_VERSION 的版本号为 3.9,


vi scripts/build.sh
---
# PY_VERSION='3.7'
PY_VERSION='3.9'
---

进入昇腾适配的APEX源码目录,执行命令编译生成二进制安装包,

cd apex
bash scripts/build.sh

执行如下命令安装,

pip3 install apex/dist/apex-0.1_ascend-cp39-cp39-linux_aarch64.whl

7. 安装依赖库

执行如下命令安装,

pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

8. 使用 gradio 启动智能语音助手

# Launch the Gradio interface
demo.launch(server_name="0.0.0.0", ssl_keyfile="/u01/certs/tls.key", ssl_certfile="/u01/certs/tls.crt", ssl_verify=False)

9. 访问智能语音助手

使用浏览器打开 https://192.168.31.160:7860

在这里插入图片描述
说一句话,智能语音助手,会自动给我们语音回复。比如,“告诉我武松打虎的故事”。

在这里插入图片描述

完结!

更多推荐

基变换与矩阵对角化

矩阵乘法的本质是映射坐标的意思是把映射到以和为基的向量空间中表示将展示成我们正常基向量空间中显示,而是将用其本身的坐标系展示。这也是基变换的本质,如果想对一组在向量空间中的向量进行旋转操作,旋转逆时针90度,则需要先将其转换为我们向量空间中显示,即,然后再执行旋转操作,最后再将它转变为自己的坐标系展示,。就是基变换。特

驾驭Java线程池:一步一步带你从新手到高手!

驾驭Java线程池:一步一步带你从新手到高手!java框架中例如Tomcat、Dubbo等都离不开线程池,这些框架用到线程的地方,都会用线程池来负责。我们在使用这些框架的时候,会设置线程池参数,用于提高性能。那么开多少线程合适?今天我们将围绕这个问题来学习一下线程池。为什么使用线程池平常我们使用java线程的时候,都是

浅谈Rust内存管理

Rust因在内存管理上的独到之处,近年来受到了不少开发者的青睐。Rust内存管理的核心功能就是所有权。不同的语言采取了不同的内存管理方式,主要分为开发者手动管理或者编译器辅助管理,以及垃圾回收机制等。Rust的所有权机制,有别于这两者。堆栈内存我们知道程序会在堆或者栈上创建数据。栈上创建数据很容易,只要知道数据的大小,

WMS仓储管理系统的主要类型及其特性和适用场景

WMS仓储管理系统是物流管理系统中至关重要的一部分。它被广泛用于各个行业,包括制造业、零售业、物流业和运输业等。在选择适合的仓库管理系统时,企业需要根据自身的业务需求和运营模式进行考虑。本文将详细介绍四种常见的仓储管理系统类型,包括独立仓储管理系统、供应链管理系统中的仓储管理模块、ERP系统中的仓储管理模块和基于云的仓

R语言进行孟德尔随机化+meta分析(1)---meta分析基础

目前不少文章用到了孟德尔随机化+meta分析,今天咱们也来介绍一下,孟德尔随机化+meta其实主要就是meta分析的过程,提取了孟德尔随机化文章的结果,实质上就是个meta分析,不过多个孟德尔随机化随机化的结果合并更加加强了结果的可靠性。有部分人可能对meta分析不是很了解,咱们今天先来介绍一下meta分析基础,为下一

MySQL高频面试题

文章目录1.什么是MySQL?2.关系型数据库和非关系型数据库3.数据库三大范式是什么?4.一条SQL查询语句是如何执行的5.引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性6.索引16连问什么是索引?索引的优缺点?索引的作用?索引设计的原则?什么

Postman —— HTTP请求基础组成部分

一般来说,所有的HTTPRequest都有最基础的4个部分组成:URL、Method、Headers和body。(1)Method要选择Request的Method是很简单的,Postman支持所有的请求方式。(2)URL要组装一条Request(请求),URL永远是你首先要填的内容。在Postman里面,你曾输入过的

【Unity每日一记】资源加载相关和检测相关

👨‍💻个人主页:@元宇宙-秩沅👨‍💻hallo欢迎点赞👍收藏⭐留言📝加关注✅!👨‍💻本文由秩沅原创👨‍💻收录于专栏:unity每日一记⭐🅰️推荐文章⭐⭐【软件设计师高频考点暴击】⭐【Unityc#专题篇】之c#系统化大礼包】⭐【unity数据持久化】数据管理类_PlayerPrfs⭐【unity本

【python百炼成魔】Python循环语句:掌握while循环的实战应用

前言文章目录前言循环结构1.什么是循环结构2.python的while循环3.循环语句的图示while的使用案例1.使用while循环打印从1到5的数字2.计算1-100的偶数和3.模拟用户登录给三次机会4.猜数字游戏总结循环结构1.什么是循环结构循环结构是编程中的一种控制结构,用于重复执行一段代码块,直到满足特定的条

Vite 完整版详解

1.打包构建:Vite使用Rollup作为默认的构建工具。通过运行npmrunbuild命令,Vite会将应用程序的源代码打包成一个或多个优化的静态文件,以便在生产环境中进行部署。Vite的构建过程会根据需要进行代码拆分、压缩和优化,以提供最佳的性能和文件大小。#package.json{"scripts":{"bui

zabbix自定义监控内容案例

一、自定义监控内容案列:自定义监控客户端服务器登录的人数需求:限制登录人数不超过3个,超过3个就发出报警信息1、在客户端创建自定义key明确需要执行的linux命令创建zabbix监控项配置文件,用于自定义Key#在zabbix的配置文件中定义了会加载放在/etc/zabbix/zabbix_agent2.d/目录下,

热文推荐