部署 PyTorch 模型
本教程演示使用 MLService 将 PyTorch 模型归档(model archive)文件部署为推理服务(使用 TorchServe 工具)。本教程对应示例部署用于生产环境的模型推理服务(PyTorch 模型)。
本教程的 Apps 架构如下图所示:
准备工作
创建一个名为 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。点击右上角的创建进入创建页面:

在 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
然后点击创建:

启动推理服务(创建 MLService)
在左侧导航菜单点击 MLService 进入 MLService 管理页面。点击右上角的创建进入创建页面:

在 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/
。
- 名称填写
然后点击创建:

查看推理服务信息(查看 MLService 详情)
回到 MLService 管理页面,可以看到名为 torchserve-mnist 的 MLService,点击其名称进入详情页面:

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

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

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

若 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:
