昇腾910B部署CosyVoice_v2模型(Triton推理服务)
·
部署概述
docker安装
# 配置内核参数
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables=1" >> /etc/sysctl.conf
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
sysctl -p
# 查看docker版本
dnf list docker-ce --showduplicates | sort -r
# 安装docker
dnf install docker-ce-26.1.3-1.el8 -y
# 安装docker-compose
wget "https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-$(uname -s)-$(uname -m)"
chmod +x docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
部署方案
- 采用Ascend官方Docker镜像, 集成
CANN,Pytorch以及Triton, 兼容性更好, 部署灵活方便
| 镜像名称 | CANN版本 | Pytorch版本 | Triton版本 |
|---|---|---|---|
| cosyvoice2-0.5b:7.3.T-aarch64 | 8.3.RC1 | 2.7.1 | 2.51.0 |
目录结构
| 目录 | 用途 | 备注 |
|---|---|---|
| /data/cosyvoice2 | cosyvoice2推理服务主目录 | |
| /data/cosyvoice2/models | 模型目录 | 挂载到容器/models |
| /data/cosyvoice2/images | docker镜像目录 | |
| /data/cosyvoice2/config | 配置文件目录, 存放了Nginx主配置文件 | 挂载到容器/etc/nginx/nginx.conf |
| /data/cosyvoice2/asset | 转换文件暂存目录 | 挂载到容器/asset |
环境准备
镜像下载
- 使用Ascend官方封装镜像, 兼容性更好
docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/cosyvoice2-0.5b:7.3.T-aarch64
模型下载
# 安装modelscope
python -m ensurepip --upgrade
python -m pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
## 下载CosyVoice
python -m modelscope.cli.cli download --model MindInferenceService/cosyvoice2-0.5b
模型部署
# 创建目录, 把模型拷贝到models, 把镜像拷贝到images
mkdir -pv /data/cosyvoice2/{images,models,config,files}
# 导入镜像
cd /data/cosyvoice2/images
ls *.tar | xargs -I {} docker load -i {}
# 目录授权
chown 1001.1001 models/ -R
chmod 750 models/ -R
Nginx配置
cat > config/nginx.conf << EOF
error_log /home/HwHiAiUser/nginx/logs/error.log;
pid /home/HwHiAiUser/nginx/logs/nginx.pid;
user root;
worker_processes 4;
worker_cpu_affinity 0001;
worker_rlimit_nofile 4096;
events {
worker_connections 1024;
}
http {
access_log /home/HwHiAiUser/nginx/logs/access.log;
server {
listen 8000;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_send_timeout 900s;
proxy_read_timeout 900s;
}
}
server {
listen 8001;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:9001;
proxy_send_timeout 900s;
proxy_read_timeout 900s;
}
}
server {
listen 8002;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:9002;
proxy_send_timeout 900s;
proxy_read_timeout 900s;
}
}
}
EOF
容器编排
docker-compose编排文件
cd /data/cosyvoice2
cat > docker-compose.yml << EOF
services:
cosyvoice-server:
image: swr.cn-south-1.myhuaweicloud.com/ascendhub/cosyvoice2-0.5b:7.3.T-aarch64
hostname: cosyvoice-server
container_name: cosyvoice-server
shm_size: '128gb'
ports:
- "18200:8000"
- "18201:8001"
- "18202:8002"
environment:
- MIS_CACHE_PATH=/models
- ASCEND_RUNTIME_OPTIONS=VIRTUAL # 声明挂载虚拟芯片
- ASCEND_VISIBLE_DEVICES=118 # vNPU_ID
devices:
- "/dev/davinci_manager:/dev/davinci_manager"
- "/dev/hisi_hdc:/dev/hisi_hdc"
- "/dev/devmm_svm:/dev/devmm_svm"
volumes:
- /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro
- /usr/local/sbin:/usr/local/sbin:ro
- ./models:/models
- ./config/nginx.conf:/etc/nginx/nginx.conf
- ./asset:/asset
EOF
docker-compose up -d
启动容器
# 启动容器
docker-compose up -d
# 查看日志
docker logs -f cosyvoice-server
验证
CosyVoice (TTS)
# server_url 请根据实际的IP和映射端口填写, 在文件目录下放一个zero_shot_prompt.wav(目录所属1001.1001), 路径使用base64转码
# 示例:
echo -n "/asset/zero_shot_prompt.wav" | base64
L2ZpbGVzL3plcm9fc2hvdF9wcm9tcHQud2F2
# server_url请根据实际的IP和映射端口填写
curl --location 'http://3.1.22.97:18200/v2/models/cosyvoice2-0.5b/infer' \
--header 'Content-Type: application/json' \
--data '{"inputs": [
{"name": "stream_out", "shape": [
1,
1
], "datatype": "BOOL", "data": [
[false
]
]
},
{"name": "tts_text", "shape": [
1,
1
], "datatype": "BYTES", "data": [
["5pS25Yiw5aW95Y+L5LuO6L+c5pa55a+E5p2l55qE55Sf5pel56S854mp77yM6YKj5Lu95oSP5aSW55qE5oOK5Zac5LiO5rex5rex55qE56Wd56aP6K6p5oiR5b+D5Lit5YWF5ruh5LqG55Sc6Jyc55qE5b+r5LmQ77yM56yR5a655aaC6Iqx5YS/6Iis57u95pS+44CC"
]
]
},
{"name": "spk_id", "shape": [
1,
1
], "datatype": "BYTES", "data": [
["5Lit5paH5aWz"
]
]
},
{"name": "prompt_text", "shape": [
1,
1
], "datatype": "BYTES", "data": [
["55So5Zub5bed6K+d6K+06L+Z5Y+l6K+d"
]
]
},
{"name": "prompt_speech_path", "shape": [
1,
1
], "datatype": "BYTES", "data": [
["L2ZpbGVzL3plcm9fc2hvdF9wcm9tcHQud2F2"
]
]
},
{"name": "infer_mode", "shape": [
1,
1
], "datatype": "BYTES", "data": [
["aW5zdHJ1Y3Q="
]
]
}
]
}'
更多推荐

所有评论(0)