快速搭建弹性高可用DeepSeek-R1-Distill-Qwen-7B推理服务

结合ECI伸缩组与应用型负载均衡器ALB,快速搭建跨可用区弹性高可用的大模型推理服务。

方案概览

本方案采用跨可用区高可用架构,将搭载推理服务的ECI实例分散部署于单地域的多个可用区,实现可用区级容灾。通过负载均衡进行智能流量调度,并使用对象存储作为模型仓库,确保业务连续性与数据可靠性。本方案架构如图所示。

image

方案优势

  • 避免单点故障(高可用):使用多台服务器来分摊业务负载,从而提高服务承载能力,避免出现单一服务故障造成的服务中断。

  • 弹性伸缩:使用伸缩组管理推理服务集群可以一键调整ECI数量,快速横向扩展。同时还支持设置自动伸缩的机制,实现根据业务负载按需扩展

搭建流程

  1. 规划集群网络。创建专有网络(VPC)和多个可用区的交换机,以搭建集群的基础网络环境。

  2. 创建对象存储Bucket。Bucket用于存储模型权重文件。

  3. 配置实例RAM角色。后续ECI实例将扮演该角色,访问步骤2中创建的对象存储Bucket。

  4. 准备镜像缓存。ECI控制台创建镜像缓存以加快实例启动速度,并将模型权重文件下载到对象存储Bucket。

  5. 创建应用负载均衡ALB实例。ALB实例将作为服务访问入口。

  6. 创建伸缩组。创建伸缩组并绑定ALB,确保新扩容的ECI实例自动加入ALB的后端服务器组。

  7. 开启服务。调整伸缩组的期望实例数以启动服务,并等待服务启动完成。

1. 规划集群网络

首先需要规划集群网络,并根据规划创建专有网络交换机。为实现高可用性,请尽可能将ECI等资源分布在多个可用区,以规避单个可用区故障导致的服务不可用。本方案以双可用区为例,您需要创建一个专有网络(VPC)以及两个可用区的交换机。操作步骤如下:

您也可以复用已有的专有网络VPC,以跳过该步骤。
  1. 控制台。根据以下指引创建1个专有网络及2个交换机。

    ①②:单击创建专有网络

    image

    ③:地域华东1(杭州)。

    ④:名称vpc-ess-hangzhou

    ⑤:IPv4网段。选择使用192.168.0.0/16。

    image

    交换机1:

    ⑥:名称vSwitch-j

    ⑦:可用区。杭州可用区J。

    ⑧:IPv4网段。192.168.0.0/24。

    ⑨:单击添加创建交换机2。

    image

    交换机2:

    ⑩:名称vSwitch-k

    ⑪:可用区。杭州可用区K。

    ⑫:IPv4网段。192.168.1.0/24。

    image

  2. 完成配置后单击确定,等待专有网络创建完成。

2. 创建对象存储Bucket

网络环境搭建完成后,需创建对象存储的存储空间(Bucket),用于存储模型权重文件,后续ECI实例会从该Bucket中读取模型权重文件。操作步骤如下:

您也可以复用已有的对象存储的Bucket,以跳过该步骤。
  1. 对象存储控制台创建Bucket。

    关键配置项说明如下,未提及配置项保持默认。

    ①:单击创建Bucket

    ②:Bucket 名称。该Bucket名称在后续挂载存储空间时会用到。

    ③:地域。选择有地域属性,地域需与ECI实例所在地域保持一致,本示例为华东1(杭州)

    ECI实例支持通过内网访问同地域的对象存储Bucket,内网访问不会产生流量费用,具体说明,请参见ECS实例通过OSS内网地址访问OSS资源

    image

  2. 完成配置后单击完成创建

3. 创建实例RAM角色

本步骤需要创建实例RAM角色,并为该角色设置访问对象存储Bucket的权限,后续ECI实例将扮演该角色,读取Bucket中的模型权重文件。操作步骤如下:

  1. 控制台创建实例RAM角色。关键配置项说明如下。

    ①:单击创建角色

    image

    ②:信任主体类型。选择云服务

    ③:信任主体名称。选择云服务器 ECS

    ④:单击确定后,根据界面提示设置实例RAM角色的名称。

    image

  2. 控制台创建以下自定义权限策略。

    ①:单击创建权限策略

    ②:单击脚本编辑

    image

    image

    ③:该策略代表某个Bucket的全部权限。权限策略脚本内容如下。

    重要

    设置以下自定义策略时,请将<bucket_name>替换为您所创建的存储空间的Bucket 名称

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "oss:*",
                "Resource": [
                    "acs:oss:*:*:<bucket_name>",
                    "acs:oss:*:*:<bucket_name>/*"
                ]
            }
        ]
    }

    完成配置后单击确定,根据界面提示设置权限策略名称。

  3. 控制台为实例RAM角色授权。

    ①②:单击新增授权

    ③:授权主体。选择之前创建的实例RAM角色。

    ④:权限策略。选择之前创建的自定义权限策略。

    image

    完成配置后单击确认新增授权

4. 准备镜像缓存和模型权重文件

由于本方案中ECI实例使用的镜像文件较大,因此需要在ECI控制台创建镜像缓存,以加快实例启动速度。同时还需要将模型权重文件下载到对象存储Bucket,以提升模型加载速度。

  1. 控制台创建ECI镜像缓存。

    ①②:单击创建镜像缓存

    image

    ③④:地域及可用区。地域与步骤1VPC地域保持一致,可用区与步骤1中创建的交换机可用区保持一致(任选一个)。

    ⑤⑥:网络。选择步骤1中创建的VPC和交换机(交换机任选一个)。

    ⑦:弹性公网IP。选择已有弹性公网IP,若没有,请单击弹性公网IP控制台开始创建。创建完成后,单击image刷新后重新选择弹性公网IP。

    ⑧:安全组。选择一个安全组,如果没有安全组,请单击新建安全组,创建完成后,需回到该页面重新选择安全组。

    ⑨:镜像缓存名。vllm。

    ⑩:缓存大小。100GB。

    ⑪:镜像egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm

    ⑫:版本号0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04

    image

    image

    等待镜像创建完成。镜像缓存创建需15分钟左右,请耐心等待。您可以在控制台镜像缓存页,查看创建进度。

    image

  2. 控制台启动一台临时ECI实例,用于将模型权重文件下载到对象存储。

    ①②:单击创建弹性容器组

    image

    ③:付费模式。按量付费。

    ④:地域。地域与步骤1VPC地域保持一致,本文为华东1(杭州)为例。

    ⑤:专有网络。选择步骤1中创建的专有网络VPC。

    ⑥:交换机。选择步骤1中创建的交换机。

    ⑦:安全组。根据界面提示设置。

    image

    容器组配置:

    ⑧:CPU。2vCPU。

    ⑨:内存。4GiB。

    ⑩:容器运行退出后。选择失败后重启。

    image

    容器组高级配置:

    ⑪:展开高级配置

    ⑫:开启自动匹配镜像缓存

    ⑬:选择并添加OSS持久化存储

    ⑭:名称oss-data

    ⑮:Bucket。选择步骤2创建的Bucket。

    ⑯:RAM角色。选择步骤3创建的实例RAM角色。

    ⑰:临时存储大小。设置为100GiB。

    image

    容器配置:

    ⑱:镜像egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm

    ⑲:镜像版本0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04

    ⑳:启动命令。将以下命令分别复制到如图所示位置。

    /bin/bash
    -c
    git-lfs clone https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B.git /oss-data/DeepSeek-R1-Distill-Qwen-7B
    该命令含义:使用git-lfs将模型从魔搭社区的仓库克隆到/oss-data/DeepSeek-R1-Distill-Qwen-7B目录下。

    image

    容器高级配置:

    ㉑:展开container-1 高级配置

    ㉒:CPU。2vCPU。

    ㉓:内存。4GiB。

    ㉔:开启存储功能并添加挂载。

    ㉕:选择oss-data

    ㉖:容器内挂载路径/oss-data

    ㉗:单击下一步: 其他设置

    image

    ㉘:弹性公网IP。选择自动创建

    ㉙:带宽峰值设置为200Mbps。

    ㉚:单击配置确认,根据界面提示完成ECI实例的创建。

    image

    ECI创建完成后,会自动开始下载模型权重文件。请耐心等待。您可以在等待期间,同时进行步骤5步骤6的操作。

    如何判断下载已完成

    下载完成后,在ECI控制台中,ECI实例的状态会显示为运行成功

    image

    对象存储控制台中,在Bucket下,会产生DeepSeek-R1-Distill-Qwen-7B文件夹。

    image

5. 创建应用负载均衡ALB实例

在开始创建ECI集群前,需先创建应用型负载均衡ALB作为集群访问入口。具体操作如下:

  1. 控制台创建ALB实例。

    ①②:单击创建应用型负载均衡

    image

    ③:地域。选择华东1(杭州),与步骤1中创建的VPC保持一致。

    ④:实例网络类型。选择公网,选择公网才能对外提供服务。

    ⑤:VPC。选择步骤1中创建的VPC。

    ⑥:可用区交换机。选择步骤1中创建的交换机。

    ⑦:实例名称alb-eci-deepseek-7B

    ⑧:单击立即购买,然后根据界面提示完成ALB实例创建操作。

    image

    image

  2. 控制台ALB实例创建监听及后端服务器组。

    ①②:找到上一步创建的ALB实例,单击操作列下的创建监听

    如果没有找到ALB实例,请在页面左上角切换地域。

    image

    ③:选择HTTP协议。

    ④:监听端口设置为80。

    ⑤:单击下一步

    ⑥:单击创建服务器组

    image

    image

    ⑦:服务器组类型。选择服务器类型

    ⑧:服务器组名称eci-deepseek-7B

    ⑨:VPC。选择步骤1创建的VPC,会自动选中。

    ⑩:选择后端协议。HTTP。

    ⑪⑫:开启健康检查

    ⑬:健康检查方法。选择GET

    ⑭:健康检查路径。设置为/health。后续推理服务启动后,会通过检查/health路径判断服务启动状态。

    ⑮⑯⑰:单击创建,单击下一步,单击提交,等待创建完成。

    image

    image

    image

    image

    image

6. 创建伸缩组

创建伸缩组并绑定ALB,伸缩组负责自动创建和管理ECI实例,并确保新扩容的ECI实例自动加入ALB的后端服务器组以实现负载均衡。

  1. 弹性伸缩控制台创建伸缩组并关联ALB。

    ①②③:单击创建伸缩组

    image

    ④:伸缩组名称deepseek-7B-servers

    ⑤:伸缩组类型。选择ECI

    ⑥:组内实例配置信息来源。选择从零开始创建

    ⑦:组内最小实例数。设置为0,伸缩组实例数下限。

    ⑧:组内最大实例数。设置为10,伸缩组实例数上限。

    ⑨:专有网络。选择步骤1创建的VPC。

    ⑩:交换机。选择步骤1创建的所有交换机。

    ⑪:单击展开高级配置

    image

    高级配置:

    ⑫⑬:开启期望实例数,并配置期望实例数为0,代表先创建一个空的伸缩组。

    ⑭:单击添加服务器组,并选择服务器组类型ALB

    ⑮:服务器组。选择步骤5创建的服务器组。

    ⑯:端口。选择30000。后续ECI中部署的推理服务会使用该端口对外提供服务。

    ⑰:单击创建。等待伸缩组创建完成,可根据界面提示创建伸缩配置。

    image

    image

  2. 弹性伸缩控制台创建伸缩配置。

    伸缩配置用于定义伸缩组中实例的模板,伸缩组在扩容时,会以伸缩配置为模板创建新实例。操作步骤如下。

    ①②③:找到上一步创建的伸缩组,单击伸缩组ID进入伸缩组详情页。

    image

    ④⑤⑥:单击实例配置来源 > 伸缩配置 > 创建伸缩配置

    image

    ⑦:付费模式。选择按量付费

    ⑧:选择安全组

    image

    容器组配置:

    ⑨:选择指定规格

    ⑩:实例规格ecs.gn7i-c8g1.2xlarge

    ⑪:勾选自动匹配镜像缓存

    ⑫:展开高级配置

    ⑬⑭⑮⑯:选择OSS持久化存储。并配置Bucket和实例RAM角色

    ⑰:临时存储大小。100GiB。

    ⑱:GPU驱动版本tesla=550

    image

    容器配置:

    ⑲:镜像egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm

    ⑳:镜像版本0.6.4.post1-pytorch2.5.1-cuda12.4-ubuntu22.04

    ㉑:启动命令。将以下命令分别复制到如图所示位置。

    /bin/bash
    -c
    vllm serve /oss-data/DeepSeek-R1-Distill-Qwen-7B --port 30000 --served-model-name DeepSeek-R1-Distill-Qwen-7B --tensor-parallel-size 1 --max-model-len=16384 --enforce-eager --dtype=half --api-key api-key-example-abc123
    该命令代表从对象存储中读取模型权重文件,并在30000端口启动推理服务,api-keyapi-key-example-abc123

    image

    ㉒:展开container-1 高级配置

    ㉓:CPU。设置为8vCPU。

    ㉔:内存。设置为30GiB。

    ㉕:GPU。设置为1。

    ㉖㉗:开启存储功能并添加存储。

    ㉘:容器内挂载路径。/oss-data

    ㉙:单击下一步: 其他设置

    image

    ㉚:弹性公网IP。选择自动创建

    ㉛:峰值带宽。200Mbps。

    ㉜:单击配置确认,并根据界面提示完成伸缩配置的创建。

    image

    ㉝㉞㉟:根据界面提示启用伸缩配置并启动伸缩组。

    image

    image

    image

7. 开启服务

重要

进行本步骤操作前,请确保步骤4中的模型权重文件已完成下载。

在完成上述所有步骤后,您可以通过调整伸缩组期望实例数,触发伸缩组的扩容活动。本文以扩容5ECI实例为例,具体操作如图所示。

调整期望实例数后,创建实例的操作可能会有延迟。您可以在伸缩活动页签下,查看伸缩组中正在进行的伸缩活动。

image

image

后续步骤

使用Dify与大模型对话

  1. 登录Dify

  2. 添加模型供应商

    1. 点击头像,选择设置。点击左侧模型供应商,在右侧找到OpenAI-API-compatible,点击添加模型

      如果没有安装,请根据界面提示安装模型供应商。

      image

      image

    2. 完成以下配置后单击保存

      • 模型类型:LLM。

      • 模型名称DeepSeek-R1-Distill-Qwen-7B

      • API Keyapi-key-example-abc123,与您在步骤6容器组配置的启动命令中的api-key配置保持一致。

      • API endpoint URL

        重要

        请将<alb_domain_name>替换为您ALB实例的DNS名称

        查看ALB实例的DNS名称

        进入控制台,找到步骤5创建的ALB实例,DNS名称位置如图所示。

        image

        http://<alb_domain_name>/v1
  3. 创建聊天助手应用并对话。

    image

    image

    image

释放本文资源

您可以参考以下步骤,按需释放本文相关资源,避免持续计费。

  1. 删除伸缩组。删除步骤6创建的伸缩组,其自动创建的实例也将会随之释放。

  2. 释放ALB实例删除服务器组。删除步骤5创建的应用型负载均衡ALB实例以及服务器组。

  3. 释放按量计费EIP实例。删除步骤4中创建镜像缓存时创建的EIP实例。

  4. 删除镜像缓存删除ECI实例。删除步骤4中创建的镜像缓存,以及用于下载模型文件的临时ECI实例

  5. 删除实例RAM角色删除自定义权限策略。删除步骤3创建实例RAM角色以及自定义权限策略。

  6. 删除存储空间。删除步骤2创建的对象存储的存储空间。

  7. 删除专有网络。删除步骤1创建的专有网络。

应用于生产环境

如果要将该方案应用于生产,您可以参考以下建议完善架构。

  • 建立自动伸缩机制,按业务负载自动扩缩容伸缩组实例数量,节省成本。例如基于GPU内存使用率配置报警任务实现自定扩缩容、基于ALB的单机QPS监控指标自动扩缩容

  • 使用NAT网关,无需为所有实例配置弹性公网IP。本示例中,ECI实例通过配置弹性公网IP实现拉取公网镜像。在实际生产中,您可以使用NAT网关提供ECI实例的公网访问能力。

  • ALB配置域名并添加HTTPS协议支持。推荐使用自定义域名作为集群访问入口,同时配置HTTPS协议支持以提升安全性。更多信息,请参见ALB添加CNAME记录添加HTTPS监听