快速部署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. 推理服务页签,单击部署服务,然后在场景化模型部署区域,单击AI语音生成-CosyVoice部署

  2. 基本信息中配置服务名称版本选择选择高性能版后,分别配置后端实例和前端实例的参数:

    前端实例

    参数

    描述

    环境信息

    部署版本

    根据资源类型选择对应镜像。本文选择cosyvoice-frontend:0.2.0-pytorch2.3.1-gpu-py310-cu128-ubuntu22.04

    说明

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

    存储挂载

    部署多个Frontend实例,必须挂载外部存储,用于存储上传的音频文件或微调后的模型文件。以通用型NAS为例:

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

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

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

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

    说明

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

    运行命令端口

    选择镜像后,系统会自动配置运行命令和端口号,无需修改。

    注意运行命令中--data_dir表示挂载目录,需与存储挂载中的挂载路径一致。

    资源信息

    资源类型

    本方案选择公共资源

    实例数

    按调用方式配置:

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

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

    部署资源

    资源规格必须选择GPU机型,且最低显存要求为16 GB或以上。例如ecs.gn8is.4xlargeml.gu8is.c16m128.1-gu60

    配置系统盘

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

    专有网络配置

    如配置了NAS文件系统,系统自动配置VPC,仅需选择安全组。

    后端实例

    参数

    描述

    环境信息

    部署版本

    根据资源类型选择对应镜像。本方案选择cosyvoice-backend:0.2.0-pytorch2.3.1-gpu-py310-cu128-ubuntu22.04

    说明

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

    运行命令端口

    选择镜像后,系统会自动配置运行命令和端口号,无需修改。

    资源信息

    资源类型

    本方案选择公共资源

    实例数

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

    部署资源

    资源规格必须选择GPU机型,且最低显存要求为16 GB或以上。例如ecs.gn8is.4xlargeml.gu8is.c16m128.1-gu60

    配置系统盘

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

    专有网络配置

    选择专有网络、交换机和安全组。前端实例和后端实例必须配置同一VPC。如无可选VPC,请参见创建和管理专有网络管理安全组

  3. 参数配置完成后,单击部署。当服务状态运行中时,表明服务部署成功。

方式二:自定义部署

自定义部署需先部署后端实例,再部署前端实例。

步骤一:部署CosyVoice-Backend实例

  1. 推理服务页签,单击部署服务,然后在自定义模型部署区域,单击自定义部署

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

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

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

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

      说明

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

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

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

    • 运行命令端口号:选择镜像后,系统会自动配置运行命令和端口号,无需修改。

    • 部署资源:资源规格必须选择GPU机型,且最低显存要求为16 GB或以上。例如ecs.gn8is.4xlargeml.gu8is.c16m128.1-gu60

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

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

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

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

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

      说明

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

步骤二:部署CosyVoice-Frontend实例

  1. 推理服务页签,单击部署服务,然后在自定义模型部署区域,单击自定义部署

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

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

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

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

      说明

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

    • 存储挂载:部署多个Frontend实例,必须挂载外部存储,用于存储上传的音频文件或微调后的模型文件。以通用型NAS为例:

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

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

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

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

      说明

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

    • 运行命令:选择镜像后,系统会自动配置运行命令/bin/bash /tmp/entry.sh --action=start_frontend --port=9000 --data_dir=/mnt/data/ --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数。未指定时,系统根据所选资源规格自动分配。若需通过浏览器访问WebUI页面, 必须显式设置 --workers1

      • --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

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

    • 部署资源:资源规格必须选择GPU机型,且最低显存要求为16 GB或以上。例如ecs.gn8is.4xlargeml.gu8is.c16m128.1-gu60

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

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

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

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

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

推理服务生成音频

重要

场景化部署将自定义部署的2个服务聚合,在推理服务页签中只显示一个服务。在使用时请注意:

  • 自定义部署:通过Frontend服务进入WebUI页面并进行API调用。

  • 场景化部署:暂不支持使用WebUI。请通过聚合服务的调用信息进行API调用。

WebUI调用

  1. 单击目标服务名称进入概览页面,在右上角单击Web应用

  2. WebUI页面中配置以下参数。

    • 输入合成文本:输入目标文本内容,服务将生成对应的语音音频。请注意,输入文本的长度需至少大于5个字符。

    • 选择推理模式:支持以下几种推理模式。

      • 3s极速复刻:根据上传的音频文件,快速复刻相同音色的音频。

      • 跨语种复刻:根据上传的音频文件音色,生成目标语言语音。

      • 自然语言控制:根据上传的音频文件以及Instruct指导信息(如:“用广东话说”), 生成目标语言。

      • 预训练音色:暂不支持该推理模式。

    • 选择prompt音频文件录制prompt音频文件:上传已准备好的Prompt音频文件(例如zero_shot_prompt.wav),或录制Prompt音频文件。若同时提供,则优先选择Prompt音频文件。

    • 输入prompt文本:输入对应录制的音频文件内容文本。该内容需与Prompt音频文件内容一致,暂时不支持自动识别。例如希望你以后能够做得比我还好呦

    • 输入instruct文本:通过instruct文本,动态调整语音风格,例如语气、情感、语速等。

  3. 单击生成音频,即可根据推理模式生成相应的音频。

API调用

通过Frontend服务(自定义部署)/聚合服务(场景化部署)的调用信息进行API调用,具体请参见API接口说明

常见问题

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

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