本文介绍如何在 KubeRMatic KubeRnetes 平台上部署、扩展与管理用于图像识别的深度学习模型。
随着企业对人工智能、机器学习与深度学习的需求增加,生产化与规模化成为关键挑战。这不仅仅涉及模型本身,还需要可重复、可公用的开发和部署流程,以实现从研发到生产环境的顺畅过渡。
下文演示了在 KubeRMatic KubeRnetes 平台上对图像识别模型的部署、扩展与运维方法。下面的步骤涵盖从数据、训练到服务化的完整流程。
示例概览
示例使用图像识别的深度学习模型,基于 CIFAR-10 数据集(包含 60,000 张 32×32 彩色图,分成 10 个类别),并借助 Apache MXNet 的 Gluon 框架及 GPU 加速实现。如果你需要 CIFAR-10 的预训练模型,可以参考相应的入门资料。
通过对训练集样本进行 200 次迭代,若训练误差持续下降,则可降低过拟合风险。下图展示了训练过程:
深度学习模型训练 loSS 图
训练完成后,需要保存模型参数,以便后续加载与使用:
模型训练完成后,可以使用 Flask 将其封装成一个 REST 服务。下例展示如何接收请求中的图片并返回预测结果:
在将模型部署到 Kubernetes 之前,需要先准备镜像。首先安装 Docker,并基于模型创建镜像。
准备工作步骤如下:
- 创建用于管理代码与依赖的工作目录
- 编写 requirements.txt,列出运行时所需依赖
- 添加 Dockerfile,指导镜像构建过程
Dockerfile 主要包含三部分:先拉取基础 Python 镜像;再通过 pip 安装需求包;最后执行 python app.py 启动应用。
构建 Docker 容器的命令如下:
这条命令基于 kettle 镜像在当前工作目录创建容器,供后续部署使用 [[[IMG_1]]]]
镜像与云端准备
部署前需要将镜像上传至镜像仓库以便公开访问。将模型上传至镜像仓库以实现版本管理与公开访问;若尚未注册账号,请先创建一个账户。
在终端登录镜像仓库账号:
为镜像打标签,以在仓库中实现版本区分与追踪:
使用以下命令查看镜像 ID,以便后续部署时引用:
将模型部署到 Kubernetes 集群
在平台中创建一个项目,并按照快速入门创建一个 Kubernetes 集群。
下载集群访问所需的 kubeconfig 文件并放置于指定路径,同时设置环境变量确保系统能正确定位配置文件。
使用 kubectl 检查集群信息,例如确认集群组件是否正常启动,例如执行命令以获取集群信息:kubectl cluster-info
查看集群状态
为了在集群中运行容器,需要提供一个部署配置文件(deployment.yaml),并通过应用命令将其部署到集群中:
为使部署公开可访问,需要创建一个服务,分配外部可达的 IP 地址:
部署接近完成阶段,请先检查服务状态,然后通过外部 IP 调用模型预测 API:
获取服务的外部 IP 地址
接下来用外部 IP 对两张示例图片进行接口测试,以验证服务的可用性:
图片 1
图片 2
API 测试总结
本教程展示了如何构建一个带有 REST API 的深度学习模型服务,包含容器化、镜像托管以及在 Kubernetes 上的部署与暴露。通过简单命令即可完成从开发到生产的完整流程,帮助团队实现快速上线与对外服务。 [[[IMG_2]]]
