paraformer 推理适配昇腾
/**************************如有任何问题和疑问,请评论区留言*********************************/
0.前提条件
0.1 登录机器
机器已开通,密码已获取,能通过ssh登录
0.2 检查NPU设备
NPU设备检查:运行npu-smi info命令,返回npu设备信息。
0.3 docker安装
#检查docker是否安装:docker -v,如如尚未安装,运行以下命令进行docker安装
yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64
#配置IP转发,用于容器内的网络访问:
sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf
sysctl -p | grep net.ipv4.ip_forward
0.4 获取镜像
docker pull swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2406-aarch64-snt9b-20240910112800-2a95df3
0.5 启动镜像
启动容器镜像。启动前请先按照参数说明修改${}中的参数。
docker run -it -u=0 --net=host \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
--shm-size=32g \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /var/log/npu/:/usr/slog \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v ${work_dir}:${container_work_dir} \
--name ${container_name} \
${image_id} \
/bin/bash
参数说明:
device=/dev/davinci0,..., --device=/dev/davinci7:挂载NPU设备,示例中挂载了8张卡davinci0~davinci7,可根据需要选择挂载卡数。
${work_dir}:${container_work_dir} 代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统,work_dir为宿主机中工作目录,目录下存放着训练所需代码、数据等文件。container_dir为要挂载到的容器中的目录。为方便两个地址可以相同。
shm-size:共享内存大小。
${container_name}:容器名称,进入容器时会用到,此处可以自己定义一个容器名称。
${image_id}:镜像ID,通过docker images查看刚拉取的镜像ID。
容器不能挂载到/home/ma-user目录,此目录为ma-user用户家目录。如果容器挂载到/home/ma-user下,拉起容器时会与基础镜像冲突,导致基础镜像不可用。
driver及npu-smi需同时挂载至容器。不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。
1. 推理验证
1.1 安装训练依赖的三方库
前提可访问公网
pip install funasr==1.1.12 torchaudio==2.1.0 tqdm==4.66.6
1.2 推理
1)下载模型文件
2)推理代码
from funasr import AutoModel
import torch_npu
from torch_npu.contrib import transfer_to_npu
#设置已下载模型文件路径
path_asr = 'models/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch'
model = AutoModel(
model = path_asr,
model_revision = "v2.0.4",
device = "cuda:0",
)
#warmup
warmup_file="asr_example_zh.wav"
text = model.generate(input=warmup_file)[0]["text"]
print(text)
input_files = "data/aishell.scp"
result_text = model.generate(input=input_files)
with open(input_files, 'r') as file:
lines = file.readlines()
first_columns = [line.split()[0] for line in lines]
result_file = "infer_result.txt"
with open(result_file, 'w') as file:
for i in range(len(result_text)):
file.write(str(first_columns[i]) + ' ' + str(result_text[i]["text"]) + '\n')
测试集选择aishell1中的测试集(https://www.modelscope.cn/datasets/modelscope/speech_asr_aishell1_testsets),输入文件使用scp 批量测试,aishell.scp文件内容格式如下
BAC009S0764W0121 speech_asr_aishell1_testsets/wav/test/S0764/BAC009S0764W0121.wav
BAC009S0764W0122 speech_asr_aishell1_testsets/wav/test/S0764/BAC009S0764W0122.wav
BAC009S0764W0123 speech_asr_aishell1_testsets/wav/test/S0764/BAC009S0764W0123.wav
BAC009S0764W0124 speech_asr_aishell1_testsets/wav/test/S0764/BAC009S0764W0124.wav
...
Groudtruth文件text如下
BAC009S0770W0259 该网站根据雇员的反馈
BAC009S0770W0265 谷歌不仅会以优厚薪酬招募顶尖人才
BAC009S0770W0271 谷歌的福利待遇他家基本都有
BAC009S0770W0488 其在村西旁花费万元建起一名叫清明堂的家庙
...
1.3 测试结果:
- 点赞
- 收藏
- 关注作者
评论(0)