SenseVoice 训练推理适配昇腾
/*****************************如有任何疑问和问题请留言*******************************/
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
版本配套表
固件与驱动 |
24.1.rc1及以上 |
CANN |
8.0.RC3 |
Pytorch |
2.1.0 |
funasr |
1.1.3 |
modelscope |
1.16.1 |
0.5 获取代码
下载代码:
https://github.com/FunAudioLLM/CosyVoice.git
0.6 使用镜像
docker run -itd --shm-size="32g" --cap-add=SYS_PTRACE -e ASCEND_VISIBLE_DEVICES=0-1 -p 8192:8192 -u root -v ${dir}:${container_dir} --name ${container_name} ${image_id} /bin/bash
# ASCEND_VISIBLE_DEVICES指定容器要用的卡,0-1代表0 1这2块卡,-用于指定范围
# -p 8192:8192代表需要在宿主机和容器中绑定的端口。示例中,http server使用了8192端口
# -v ${dir}:${container_dir}代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同大的文件系统,dir为宿主机中代码和数据集文件所在目录,目录container_dir为要挂载到的容器中的目录。为方便两个地址可以相同。
# --name ${container_name}容器名称,进入容器时会用到
# -{image_id} ,为docker镜像的id,在宿主机上可通过docker images查询得到
进入容器:通过容器名称进入
docker exec -it -u root ${container_name} bash
1.推理验证
以SenseVoiceSmall为例
1.1 安装训练依赖的三方库
前提可访问公网
进入代码中requirements.txt所在目录,修改requirements.txt,用如下内容替换全部:
torch
modelscope
huggingface
huggingface_hub
funasr>=1.1.3
numpy<=1.26.4
gradio
执行pip install -r requirements.txt
1.2 编译安装 torchaudio
下载torchaudio
git clone https://github.com/pytorch/audio
cd audio
git checkout v2.1.0
执行 python setup.py bdist_wheel, 编译完成后在dist目录下会生成torchaudio-2.1.0* linux_aarch64.whl
执行 pip install torchaudio-2.1.0* linux_aarch64.whl 完成torchaudio 安装
1.3 推理验证
1)下载模型到本地
下载地址: https://www.modelscope.cn/models/iic/SenseVoiceSmall/files
2)修改demo1.py, 在from funasr import AutoModel前面 增加两行
import torch_npu
from torch_npu.contrib import transfer_to_npu
修改model_dir的值为模型本地目录,建议最好是绝对路径
然后执行 python demo1.py
demo2.py 同理
1.4 训练验证
1)使用 find / -name train_ds.py 查看train_ds.py所在目录,一般在
/home/ma-user/anaconda3/envs/PyTorch-2.1.0/lib/python3.9/site-packages/funasr/bin/train_ds.py
2)修改上面查到的train_ds.py,在import torch 后面增加
import torch_npu
from torch_npu.contrib import transfer_to_npu
3)修改finetune.sh 中 train_tool的路径为上面train_ds.py的路径,即:
/home/ma-user/anaconda3/envs/PyTorch-2.1.0/lib/python3.9/site-packages/funasr/bin/train_ds.py
4)修改finetune.sh 中 model_name_or_model_dir的路径为已下载模型的绝对路径
5)代码中提供的 train_example.jsonl 和 val_example.jsonl无法直接使用,音频文件无法获取,需要自己重新制作
6)执行 bash finetune.sh 启动训练
- 点赞
- 收藏
- 关注作者
评论(0)