You need to enable JavaScript to run this app.
导航
部署模型服务 - 自定义框架
最近更新时间:2025.01.09 15:53:24首次发布时间:2024.09.05 20:01:20

本文介绍了如何向边缘节点部署基于自定义推理框架(非 Triton 框架)的模型服务。自定义框架在服务大语言、视觉语言等模型上更具优势。

预置推理框架镜像

推理框架提供了模型的运行环境。要为模型应用自定义推理框架,您必须提供自定义框架的镜像地址。边缘智能在部署您的模型时,会先自动拉取镜像进行安装,然后再部署模型。
边缘智能预置了一些来自第三方的推理框架镜像,方便您直接使用;若预置镜像无法满足您的需求,请自行准备好推理框架镜像。
下表罗列了边缘智能预置的推理框架。预置推理框架均来自第三方开源系统。在选择框架时,请注意以下内容:

  • 不同推理框架有不同的安装要求。选择特定框架时,请自行评估边缘节点是否满足其安装要求。
  • 不同推理框架支持的模型不同。选择特定框架时,请自行评估要部署的模型是否被支持。

推理框架

简介

预置

LMDeploy

LMDeploy 是一个用于压缩、部署和服务大型语言模型 (LLM) 和视觉语言模型 (VLM) 的 Python 库。其核心推理引擎包括 TurboMind Engine 和 PyTorch Engine。前者由 C++ 和 CUDA 开发,力求推理性能的极致优化,而后者纯 Python 开发,旨在降低开发人员的门槛。

r-veen.volces.com/library/msc/lmdeploy:v0.5.2.post1

vLLM

vLLM 是一个快速且易于使用的 LLM 推理和服务库。

  • GitHub 仓库地址:https://github.com/vllm-project/vllm
  • 开源许可协议:Apache-2.0 license
  • 安装要求:
    https://docs.vllm.ai/en/latest/getting_started/installation.html#requirements
  • 支持的模型:
    Supported Models — vLLM
r-veen.volces.com/library/msc/vllm-openai:v0.5.4
r-veen.volces.com/library/msc/vllm-openai:v0.4.0

TGI

文本生成推理 (TGI) 是一个用于部署和提供大型语言模型 (LLM) 的工具包。TGI 为最流行的开源 LLM(包括 Llama、Falcon、StarCoder、BLOOM、GPT-NeoX 和 T5)提供高性能文本生成功能。

r-veen.volces.com/library/msc/text-generation-inference:v2.2.0

前提条件

  • 您已经为项目绑定了边缘节点。相关操作,请参见绑定节点
  • 如果您使用边缘节点型 aPaaS 工具,则 aPaaS 工具必须是 高级版
    边缘节点 - 基础版 aPaaS 工具不包含边缘推理功能。更多信息,请参见资源包(aPaaS 工具)计费说明
  • 如果您要部署自定义模型,您必须完成以下任务:创建自定义模型并为自定义模型创建和发布版本。相关操作,请参见创建自定义模型创建一个版本

操作步骤

  1. 登录边缘智能控制台

  2. 在左侧导航栏,从 我的项目 下拉列表选择一个项目。

  3. 在左侧导航栏,选择 边缘推理 > 模型服务
  4. 单击 自定义框架 页签,然后单击 部署模型服务
  5. 部署模型服务 页面,配置以下参数,然后单击 确认
    Image

完成以上操作后,您可以在 模型服务 列表看到刚刚部署的模型服务。此时,模型服务的状态是 部署中。您可以将光标放置在状态旁边的问号图标上,了解部署进度。

  • 当模型服务的状态变为 运行中,表示模型服务已经部署成功。
  • 如果模型服务的状态是 部署失败,您可以将光标放置在 部署失败 上,然后单击 查看原因,以获取具体的错误消息。

配置说明

区域参数说明
基本信息所属项目默认为当前选择的项目。

部署位置

选择将模型服务部署到指定的 节点节点组

节点

说明

只有当 部署位置节点 时,该参数才会出现。

选择一个或多个节点,将模型服务部署到指定的节点。

节点组

说明

只有当 部署位置节点组 时,该参数才会出现。

选择一个节点组,将模型服务部署到指定的节点组。

  • 请确保节点组中所有节点架构相同,否则可能部署失败。
  • 模型服务只会部署到节点组中的在线节点上。

服务名称

为模型服务设置一个名称。您可以使用以下字符:英文字母、数字、汉字、下划线(_)和连字符(-)。请注意以下规则:

  • 长度限制为 32 个字符以内。
  • 下划线和连字符不能用在开头或结尾,也不能连续使用。
  • 名称不能与边缘节点上其他模型服务名称重复。

副本数量

设置要创建的副本数量。取值范围:1~10。默认值:1。

模型信息

模型

选择要使用的模型。您可以选择边缘智能的官方模型,也可以选择您创建的自定义模型。

模型版本

选择要使用的模型版本。

服务配置

镜像来源

从以下两种推理框架镜像来源中选择一种:

  • 平台预置镜像:边缘智能预置镜像,可直接选择镜像。
  • 自定义镜像:您的自定义镜像,需提供镜像地址。

镜像选择

说明

镜像来源平台预置镜像 时,该配置项才会出现。

选择一个预置镜像。关于不同镜像的介绍,请参见预置推理框架镜像

镜像地址

说明

镜像来源自定义镜像 时,该配置项才会出现。

输入您的推理框架镜像的 URL 地址。地址需符合 URL 格式。长度不超过 1024 个字符。

说明

您可以将制作好的应用镜像托管在某个镜像仓库,获取镜像的 URL。我们推荐您将镜像托管到火山引擎镜像仓库

若您提供的私有镜像仓库地址,请单击 输入,并提供您的 仓库密钥。否则,边缘智能无法访问您的镜像,这将导致服务部署失败。仓库密钥 包含 用户名密码

注意

不使用免密组件,且需要拉取私有镜像时,必须配置 仓库密钥

Python三方库配置

设置您希望在边缘节点上安装的第三方 Python 库。格式为 <库名>==<版本号>,多个库通过换行分隔。示例:

numpy==1.22.0
pandas==1.5.3

环境变量

您可以手动设置环境变量。Kubernetes 在创建 Pod 时,会将环境变量的信息注入到容器中。
单击 + 添加一个环境变量。可以添加多个环境变量。

启动命令

输入容器启动前运行的命令。多行命令使用换行符分隔。

GPU算力

设置允许此模型服务使用的 GPU 数量。取值范围:1~8。

注意

要使用 GPU 算力调度能力,必须确保您的节点已经启用了 NVIDIA device plugin 组件。更多信息,请参见绑定节点

端口

将容器内端口与宿主机(即边缘节点)的端口进行映射。单击 + 添加端口映射。可以添加多个端口映射。

健康检查

您可选择启用 Kubernetes 健康检查,即配置存活、就绪、启动探针。

  • 存活检查:启用后可配置存活探针。

    存活探针决定何时重启容器。例如,当应用在运行但无法取得进展时,存活探针可以捕获这类死锁。存活检查失败时,kubelet 会杀死容器再重新启动容器。

  • 就绪检查:启用后可配置就绪探针。

    就绪探针决定何时容器准备好开始接受流量。这种探针在等待应用执行耗时的初始任务时非常有用,例如建立网络连接、加载文件和预热缓存。就绪检查失败时,Pod 将被标记为未就绪,且不会接收来自任何服务的流量。

  • 启动检查:启用后可配置启动探针。

    启动探针检查容器内的应用是否已启动。启动探针可以用于对慢启动容器进行存活检查,避免它们在启动运行之前就被 kubelet 杀掉。

三类探针具有相同的配置项,具体说明如下。
更多信息,请参见 Kubernetes 官方文档:存活、就绪和启动探针配置存活、就绪和启动探针

检查方式

  • HTTP 请求检查:kubelet 向容器发送一个 HTTP(S) Get 请求来执行探测。如果响应状态码为 200~399,则认为检查成功;否则认为检查失败。您需要进行如下检查配置:
    • 协议HTTPHTTPS
    • HTTP Headers:HTTP(S) 请求中自定义的请求头。单击 添加 并输入键值对进行配置。
    • 路径:访问 HTTP(S) Server 的路径。
    • 端口:容器暴露的访问端口号。
  • TCP 端口检查:kubelet 尝试在指定端口和容器建立 TCP Socket 连接。如果可以建立连接,则认为检查成功;否则认为检查失败。您需要进行如下检查配置:
    • 端口:容器暴露的访问端口号。
  • 执行命令检查:kubelet 在容器内执行指定的命令。如果命令执行成功并且返回值为 0,则认为检查成功;否则认为检查失败。您需要进行如下检查配置:
    • 命令:探测命令。

时间设置

  • 初始等待:容器启动后要等待多少秒后才启动启动、存活和就绪探针。默认为 0 秒。
    如果定义了启动探针,则存活探针和就绪探针的延迟将在启动探针已成功之后才开始计算。如果 超时时间 的值大于 初始等待,则 初始等待 将被忽略。
  • 超时时间:探测开始后超过多少秒无响应认为请求超时。默认为 1 秒。
  • 检查间隔:执行探测的时间间隔(单位是秒)。默认为 10 秒。

阈值设置

  • 成功阈值:使探测目标的状态标记为成功(如“存活”、“就绪”、“启动”)必须经历的连续检查成功次数。默认为 1 次。
    • 对于不同类型探针,目标状态的含义不同。例如,对于存活探针,默认值表示只要一次检查成功,则认为容器存活。
    • 对于存活探针和启动探针,成功阈值必须为 1。
  • 失败阈值:使探测目标的状态标记为失败(如“不存活”、“未就绪”、“未启动”)必须经历的连续检查失败次数。默认为 3 次。
    对于不同类型探针,目标状态的含义不同。例如,对于存活探针,默认值表示只有连续三次检查失败,才认为容器不存活。