部署 PyTorch 模型

本教程演示使用 MLService 将 PyTorch 模型归档(model archive)文件部署为推理服务(使用 TorchServe 工具)。本教程对应示例部署用于生产环境的模型推理服务(PyTorch 模型)

本教程的 Apps 架构如下图所示:

app-arch

准备工作

创建一个名为 tutorial、大小 1 Gi 的 PVC,然后安装一个同样名为 tutorial 的 JupyterLab App 挂载该 PVC,镜像和资源不限。

进入 JupyterLab,启动一个终端,执行以下命令以克隆 t9k/tutorial-examples 仓库:

cd ~
git clone https://github.com/t9k/tutorial-examples.git

创建 MLServiceRuntime

安装一个 Service Manager App(如有 Service Manager 则直接复用),进入 Service Manager 的网页 UI(控制台)。在左侧导航菜单点击 MLServiceRuntime 进入 MLServiceRuntime 管理页面,这里展示了所有已创建的 MLServiceRuntime。点击右上角的创建进入创建页面:

create-runtime

在 MLServiceRuntime 创建页面,填写配置如下:

  • 名称填写 torchserve
  • 打开启用
  • 镜像填写 t9kpublic/pytorch-serve:0.4.2-cpu
  • 参数填写 torchserve "--start" "--model-store=/var/lib/t9k/model" "--models={{if .MODEL_PATH}}{{.MODEL_PATH}}{{else}}all{{end}}"
  • 资源模板选择 small

然后点击创建

create-runtime-details

启动推理服务(创建 MLService)

在左侧导航菜单点击 MLService 进入 MLService 管理页面。点击右上角的创建进入创建页面:

create

在 MLServiceRuntime 创建页面,填写配置如下:

  • 基本信息部分:
    • 名称填写 torchserve-mnist
    • 默认版本选择 version1(需要先填写 Release-1 部分的名称)
  • Release-1 部分:
    • 名称填写 version1
    • 最小副本数量填写 1
    • MLServiceRuntime选择 torchserve
    • 添加一个 MLServiceRuntime 参数填写 MODEL_PATH填写 mnist=model.mar
    • 打开存储类型选择 PVC名称选择 tutorial子路径填写 tutorial-examples/deployment/mlservice/torch-pvc/

然后点击创建

create-details

查看推理服务信息(查看 MLService 详情)

回到 MLService 管理页面,可以看到名为 torchserve-mnist 的 MLService,点击其名称进入详情页面:

created

可以看到刚才创建的 MLService 的基本信息,以及 Release、状况和事件信息:

details

点击上方的版本标签页,进一步查看各个版本的详细信息,包括 Runtime 信息、模型存储和 Pod 信息:

version

点击上方的资源监测标签页,查看 MLService 运行过程中使用集群计算资源、网络资源和存储资源的情况:

resources

若 MLService 的状态为 False,且原因不是 PredictorNotReady,则需要根据状态和事件信息部分给出的错误信息进行问题排查。

测试推理服务

待 MLService 的状态为 True 后,回到 JupyterLab,在终端中执行以下命令,注意将 <MLSERVICE_URL> 替换为 MLService 的 URL(在 MLService 的详情页面复制得到):

cd ~/tutorial-examples/deployment/mlservice/torch-pvc
curl -T test_data/0.png <MLSERVICE_URL>/v1/models/mnist:predict # or use `1.png`, `2.png`

响应体应是一个类似于下面的 JSON,其预测了图片最有可能是的 5 个数字以及相应的概率:

{
  "0": 1.0,
  "2": 1.3369878815172598e-10,
  "6": 7.102208632401436e-14,
  "5": 5.859716330864836e-14,
  "9": 3.2580891499658536e-15
}

关闭推理服务(删除 MLService)

回到 MLService 管理页面,点击 MLService 右侧的 > 删除,确认以删除 MLService:

delete