快速部署Frontend/Backend分离式高性能服务

WebUI版本相比,Frontend/Backend分离版本提供较高性能。Backend实例承载了全链路80%的算力,通过无损加速技术,可以使一个Backend实例承接8Frontend实例的流量,从而提升吞吐量,并降低25%的延迟。本文将介绍如何在阿里云PAI-EAS上部署CosyVoice2 Frontend/Backend分离版本。

功能概述

本方案部署CosyVoice2高并发版本,具有如下优势:

  • 企业级部署:采用分离式结构,将Hift/FlowQwen2LM解耦合,独立部署最耗时的Qwen2LM。

  • 高吞吐:通过高性能推理引擎提升吞吐量,单个Qwen2LM实例可支持多个Hift/Flow,节省了GPU使用量,进而降低成本。

  • 低延时:与开源实现相比,单个请求的端到端延迟降低25%。

image

如仅用于功能体验,可直接部署CosyVoice2.0 WebUI版本,详情请参见快速部署WebUI服务

使用限制

通过WebUI调用服务时,仅支持使用单个Frontend实例。若需同时通过多个Frontend实例访问服务,请使用API方式调用。

部署服务

1. 创建CosyVoice-Backend实例

  1. 登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS

  2. 模型在线服务(EAS)页面,单击部署服务,然后在自定义模型部署区域,单击自定义部署

  3. 自定义部署页面,配置以下关键参数。参数配置完成后,单击部署

    • 部署方式:选择镜像部署

    • 镜像配置:在官方镜像列表中选择cosyvoice-backend > cosyvoice-backend:0.1.2-pytorch2.3.1-gpu-py310-cu124-ubuntu22.04image

      说明

      镜像版本迭代迅速,以控制台页面为准,如有多个选择最高版本即可。

    • 资源类型:本方案选择公共资源

    • 实例数:按需配置,一个Backend实例最多可以承接8Frontend实例。本方案配置为1。

    • 部署资源:资源规格必须选择GPU机型,且最低显存要求为16 GB或以上。例如ml.gu7i.c32m188.1-gu30ecs.gn7i-c32g1.8xlarge

    • 配置系统盘:建议配置100 GB,因为镜像文件较大,避免因存储空间不足导致服务部署失败。如未配置,EAS后端将默认为CosyVoice2.0场景分配100 GB的存储空间。

    • 专有网络(VPC):选择专有网络、交换机和安全组。请确保与后续创建的Frontend实例在同一VPC内。创建方法,请参见创建和管理专有网络管理安全组。请确保选择的专有网络与CosyVoice-Frontend服务一致。

  4. 部署完成后(约3分钟),获取VPC调用地址和Token,用于Frontend实例连接。

    1. 单击目标服务名称,在基本信息区域,单击查看调用信息

    2. 调用信息配置面板,查询访问地址和Token。image

      说明

      Frontend实例连接Backend实例,不建议使用公网调用地址,速度慢,且需额外收费。

2. 创建CosyVoice-Frontend实例

自定义部署模型服务,并配置以下关键参数,参数配置完成后,单击部署

  • 部署方式:选择镜像部署,并勾选开启Web应用

  • 镜像配置:在官方镜像列表中选择cosyvoice-frontend > cosyvoice-frontend:0.1.2-pytorch2.3.1-gpu-py310-cu124-ubuntu22.04

    说明

    镜像版本迭代迅速,以控制台页面为准,如有多个选择最高版本即可。

  • 直接挂载:如需API调用且部署较多Frontend实例,建议挂载外部存储,用于存储上传的音频文件或微调后的模型文件。以通用型NAS为例:

    • 选择文件系统:选择已有文件系统,如无可单击新建文件系统创建。

    • 文件系统挂载点:选择对应挂载点。若无可用项,单击新建文件系统挂载点创建。

    • 文件系统路径:填写该文件系统下的子路径,例如/

    • 挂载路径:指定服务实例内挂载路径。例如/mnt/data/

    说明

    如果对稳定性要求较低(如测试环境),可不挂载外部存储,以节省费用。

  • 运行命令:选择镜像后,系统会自动配置运行命令/bin/bash /tmp/entry.sh --action=start_frontend --workers=1 --port=50000 --data_dir=/mnt/data/ --enable_mps --model_dir=/nasmnt/models/pretrained_models/CosyVoice2-0.5B/ --ttsfrd_dir=/nasmnt/models/pretrained_models/CosyVoice-ttsfrd/ --llm_api_key=token --llm_base_url=http://cosyvoice-server-ip:8000/v1,其中:

    • --workers:Frontend服务worker数。

    • --port:服务端口号,必须与服务配置的端口号保持一致。image

    • --data_dir:挂载目录,需与直接挂载中的挂载路径一致。

    • --model_dir:模型加载路径。若使用外部存储存放微调后的模型文件,需根据挂载路径调整。

    • --llm_api_key:配置为CosyVoice-Backend服务的Token。例如Yjk4YjdlNjM1YW*****GIxZDRmZmNhMjRjZmQwMz*****

    • --llm_base_url:配置为CosyVoice-Backend服务的VPC调用地址,并在末尾添加/v1。例如http://11577032709*****.vpc.cn-shanghai.pai-eas.aliyuncs.com/api/predict/cosyvoice_backend1/v1

  • 资源类型:本方案选择公共资源

  • 实例数:按调用方式配置:

    • WebUI调用:只能配置为1。

    • API调用:单Backend实例最多支持8Frontend实例。当Backend实例数为1Frontend实例数取值范围为[1,8]。

  • 配置系统盘:建议配置100 GB,因为镜像文件较大,避免因存储空间不足导致服务部署失败。如未配置,EAS后端将默认为CosyVoice2.0场景分配100 GB的存储空间。

  • 专有网络(VPC):如配置了NAS文件系统,系统自动配置VPC,仅需选择安全组。确保与Backend实例在同一VPC。

推理服务生成音频

WebUI调用

Frontend服务部署成功后,单击服务名进入详情页面,在右上角单击查看Web应用。在页面中配置参数后单击生成音频,即可根据推理模式生成相应的音频,详情请参见推理服务生成音频image

API调用

支持通过API调用Frontend服务生成音频。具体请参见API接口说明

常见问题

Q:调用CosyVoice API接口报错404 {"detail":"Not Found"}

A:404通常为请求路径错误。部署Frontend/Backend分离式服务时,API调用请求的是Frontend服务,如果使用Backend服务的调用地址会出现该错误,请检查。