在 Kubernetes 上部署一个深度学习模型
了解如何使用KubermaticKubernetes平台来部署、扩展与管理图像识别预测的深度学习模型 。
文章图片
随着企业增加了对人工智能(AI)、机器学习(ML)与深度学习(DL)的使用 , 出现了一个关键问题:如何将机器学习的开发进行规模化与产业化?这些讨论经常聚焦于机器学习模型本身;然而 , 模型仅仅只是完整解决方案的其中一环 。 为了达到生产环境的应用和规模 , 模型的开发过程必须还包括一个可以说明开发前后关键活动以及可公用部署的可重复过程 。
本文演示了如何使用KubermaticKubernetes平台对图像识别预测的深度学习模型进行部署、扩展与管理 。
KubermaticKubernetes平台是一个生产级的开源Kubernetes集群管理工具 , 提供灵活性和自动化 , 与机器学习/深度学习工作流程整合 , 具有完整的集群生命周期管理 。
开始
这个例子部署了一个用于图像识别的深度学习模型 。 它使用了CIFAR-10数据集 , 包含了60,000张分属10个类别的32x32彩色图 , 同时使用了ApacheMXNet的Gluon与NVIDIAGPU进行加速计算 。 如果你希望使用CIFAR-10数据集的预训练模型 , 可以查阅其入门指南 。
使用训练集中的样本对模型训练200次 , 只要训练误差保持缓慢减少 , 就可以保证模型不会过拟合 。 下方图展示了训练的过程:
文章图片
训练结束后 , 必须保存模型训练所得到的参数 , 以便稍后可以加载它们:
file_name=''net.params''net.save_parameters(file_name)一旦你的模型训练好了 , 就可以用Flask服务器来封装它 。 下方的程序演示了如何接收请求中的一张图片作为参数 , 并在响应中返回模型的预测结果:
fromgluoncv.model_zooimportget_modelimportmatplotlib.pyplotaspltfrommxnetimportgluon,nd,imagefrommxnet.gluon.data.visionimporttransformsfromgluoncvimportutilsfromPILimportImageimportioimportflaskapp=flask.Flask(__name__)@app.route(''/predict'',methods=[''POST''])defpredict:ifflask.request.method==''POST'':ifflask.request.files.get(''img''):img=Image.open(io.BytesIO(flask.request.files[''img''].read))transform_fn=transforms.Compose([transforms.Resize(32),transforms.CenterCrop(32),transforms.ToTensor,transforms.Normalize([0.4914,0.4822,0.4465],[0.2023,0.1994,0.2010])])img=transform_fn(nd.array(img))net=get_model('cifar_resnet20_v1',classes=10)net.load_parameters('net.params')pred=net(img.expand_dims(axis=0))class_names=['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']ind=nd.argmax(pred,axis=1).astype('int')prediction='Theinputpictureisclassifiedas[%s],withprobability%.3f.'%(class_names[ind.asscalar()],nd.softmax(pred)[0][ind].asscalar)returnpredictionif__name__=='__main__':app.run(host='0.0.0.0')【在 Kubernetes 上部署一个深度学习模型】容器化模型
在将模型部署到Kubernetes前 , 你需要先安装Docker并使用你的模型创建一个镜像 。
下载、安装并启动Docker:
sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2sudoyum-config-manager--add-repo创建一个你用来管理代码与依赖的文件夹:
mkdirkubermatic-dlcdkubermatic-dl创建requirements.txt文件管理代码运行时需要的所有依赖:
flaskgluoncvmatplotlibmxnetrequestsPillow创建Dockerfile , Docker将根据这个文件创建镜像:
FROMpython:3.6WORKDIR/appCOPYrequirements.txt/appRUNpipinstall-r./requirements.txtCOPYapp.py/appCMD[''python'',''app.py'']这个Dockerfile主要可以分为三个部分 。 首先 , Docker会下载python的基础镜像 。 然后 , Docker会使用Python的包管理工具pip安装requirements.txt记录的包 。 最后 , Docker会通过执行pythonapp.py来运行你的脚本 。
- 苹果|库克压力确实大,在众多国产厂家对标下,iPhone13迎来“真香价”!
- 设计师|UI设计岗位薪资怎么样
- 芯片|上市仅4个月,跌价1000元,微云台主摄+6nm芯片+4400mAh
- AMD|AMD预告新款Radeon Pro专业卡:第一次用上6nm工艺
- 京东正式上线“年礼无忧”服务
- 华为鸿蒙系统|华为偷偷上架新机,鸿蒙系统+5000mAh大电池,仅售1399元
- 红米手机|卢伟冰换上新手机,Redmi K50官宣:三个惊喜
- gtx1060|GTX1060上古神器?
- ios|华为迎来新里程碑,在新领域旗开得胜!
- 打脸!华为在美国,用专利把英特尔、苹果、微软、高通打败了