跳到主要内容

模型部署介绍

在完成了模型的训练后可以将模型以某种方式部署到服务端或者存放到设备端对外提供实时的模型推理服务。「模型部署(Serving)」就是 OpenBayes 提供的服务端模型推理功能。

部署模式

OpenBayes 模型部署采用 start.sh 自定义启动脚本的方式,你可以完全控制服务启动流程。

API Key 认证

OpenBayes 模型部署支持使用 API Key 进行安全认证。相比 JWT Token 认证方式,API Key:

  • 提供更细粒度的访问控制
  • 支持独立的密钥管理和追踪
  • 符合业界标准实践(如 OpenAI、HuggingFace 等)

你可以在模型部署的设置页面中创建和管理 API Key。详细信息请参考 API Key 管理

自定义部署方式(推荐)

这是最简单和灵活的部署方式。你只需要:

  1. 准备好模型文件
  2. 编写一个 start.sh 脚本来启动你的服务

自定义部署要求

  1. 必需文件:

    • start.sh - 启动脚本,需要确保:
      • 监听 80 端口
      • 处理 HTTP 请求
    • 模型文件及其他依赖文件
  2. 可选文件:

    • requirements.txt - 用于安装 Python 依赖
    • conda-packages.txt - 用于安装 Conda 依赖
    • dependencies.sh - 用于安装系统依赖
    • .env - 用于设置环境变量

示例

你可以使用任何框架(如 FastAPI、Flask、Gradio 等)来提供服务。这里是一个使用 FastAPI 的简单示例:

# app.py
from fastapi import FastAPI
import uvicorn

app = FastAPI()

@app.get("/")
def predict():
return {"message": "Hello World"}
# start.sh
#!/bin/bash
pip install fastapi uvicorn
uvicorn app:app --host 0.0.0.0 --port 80

数据绑定

在创建模型部署时,你可以绑定一个或多个数据目录。数据绑定的方式与模型训练的数据绑定基本相同,可以选择以下来源:

  • 公开数据集或模型
  • 个人私有的数据集或模型
  • 算力容器的工作目录
  • 通过文件上传的数据仓库

数据绑定格式与 Job 基本一致,常见写法如下:

  • 数据集版本:<owner>/<dataset-ref>/<version>
  • Job 输出:<owner>/jobs/<job-ref>/output

手工编写 CLI、YAML 或 API 参数时,推荐优先使用数据集 ID 或 Job ID 作为 ref,避免名称中的空格、转义或歧义问题。更完整的格式说明见数据绑定

数据绑定特点

模型部署的数据绑定与模型训练有以下区别:

  1. 只读绑定:所有数据绑定都是只读模式,无法进行写入或修改操作
  2. 多目录绑定:可以同时绑定多个数据目录到不同的挂载点:
    • /openbayes/input/input0
    • /openbayes/input/input1
    • /openbayes/input/input2
    • /openbayes/input/input3
    • /openbayes/input/input4
  3. 工作目录特性
    • 工作目录(/openbayes/home)中的内容是在部署启动时从绑定源拷贝而来
    • 重要提示:由于工作目录的内容在重启后会丢失,建议将所有必要的模型文件和依赖放在绑定的数据目录中

Serving 的额外限制

与 Job 相比,Serving 的数据绑定还有以下约束:

  1. 仅支持两类绑定源:只支持数据集版本和 Job 输出,不支持其他特殊绑定方式
  2. 必须存在 /output 绑定:创建 ServingVersion 时,至少需要有一个绑定挂载到 /output
  3. /output 必须包含启动文件:挂载到 /output 的绑定源中必须存在 start.sh
  4. 挂载路径不能重复:同一个 ServingVersion 中,/output/input0 ~ /input4 不能重复使用

其中 /output 对应容器内的工作目录 /openbayes/home,通常用于放置部署启动所需的代码、模型文件和依赖描述文件。

选择绑定目录

绑定时的选取方式与算力容器类似:

serving 数据绑定

版本管理

模型部署支持版本管理:

  • 版本之间相互独立,可以支持不同的运行时环境、资源类型以及部署内容
  • 当部署新版本时,老版本会自动下线
  • 版本号以数字序号递增

详细的操作在 模型部署的管理 有介绍。

启动脚本约定

start.sh 中通常包含以下步骤:

  1. 准备运行环境(例如安装依赖、激活 Conda 环境)
  2. 加载模型与配置
  3. 启动 HTTP 服务并监听 80 端口

更多细节请参考 快速上手依赖管理