模型部署介绍
在完成了模型的训练后可以将模型以某种方式部署到服务端或者存放到设备端对外提供实时的模型推理服务。「模型部署(Serving)」就是 OpenBayes 提供的服务端模型推理功能。
部署模式
OpenBayes 模型部署支持两种部署模式:
- 自定义部署(推荐):通过编写
start.sh
启动脚本,完全自定义服务的启动方式 - 传统的
predictor.py
方式:使用 OpenBayes 提供的预定义框架
API Key 认证
OpenBayes 模型部署支持使用 API Key 进行安全认证。相比 JWT Token 认证方式,API Key:
- 提供更细粒度的访问控制
- 支持独立的密钥管理和追踪
- 符合业界标准实践(如 OpenAI、HuggingFace 等)
你可以在模型部署的设置页面中创建和管理 API Key。详细信息请参考 API Key 管理。
自定义部署方式(推荐)
这是最简单和灵活的部署方式。你只需要:
- 准备好模型文件
- 编写一个
start.sh
脚本来启动你的服务
自定义部署要求
-
必需文件:
start.sh
- 启动脚本,需要确保:- 监听 80 端口
- 处理 HTTP 请求
- 模型文件及其他依赖文件
-
可选文件:
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
数据绑定
在创建模型部署时,你可以绑定一个或多个数据目录。数据绑定的方式与模型训练的数据绑定基本相同,可以选择以下来源:
- 公开数据集或模型
- 个人私有的数据集或模型
- 算力容器的工作目录
- 通过文件上传的数据仓库
数据绑定特点
模型部署的数据绑定与模型训练有以下区别:
- 只读绑定:所有数据绑定都是只读模式,无法进行写入或修改操作
- 多目录绑定:可以同时绑定多个数据目录到不同的挂载点:
/openbayes/input/input0
/openbayes/input/input1
/openbayes/input/input2
/openbayes/input/input3
/openbayes/input/input4
- 工作目录特性:
- 工作目录(
/openbayes/home
)中的内容是在部署启动时从绑定源拷贝而来 - 重要提示:由于工作目录的内容在重启后会丢失,建议将所有必要的模型文件和依赖放在绑定的数据目录中
- 工作目录(
选择绑定目录
绑定时的选取方式与算力容器类似:
版本管理
模型部署支持版本管理:
- 版本之间相互独立,可以支持不同的运行时环境、资源类型以及部署内容
- 当部署新版本时,老版本会自动下线
- 版本号以数字序号递增
详细的操作在 模型部署的管理 有介绍。
传统部署方式(predictor.py)
如果你希望使用 OpenBayes 提供的预定义框架,可以选择这种方式。
-
必需文件:
predictor.py
- 包含Predictor
类的模型部署脚本- 模型文件
-
可选文件:
requirements.txt
、conda-packages.txt
- 用于安装依赖dependencies.sh
- 用于安装系统依赖.env
- 用于设置环境变量
详细的编写规则在 Serving 服务编写 有介绍,在 openbayes-serving-examples 模型仓库中有编写样例作为参考。