手把手教你用ModelArts模型部署上线&在线推理(一)【我的华为云体验之旅】

网友投稿 1689 2022-05-30

前言

ModelArts是面向开发者的一站式AI开发平台,为机器学习与深度学习提供海量数据预处理及半自动化标注、大规模分布式Training、自动化模型生成,及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。

本文的主要目的是带想用ModelArts的同学过遍ModelArts的基础功能并部署属于你自己的模型在云上,并且能够本地通过python代码调API的方式在线推理【本文以tensorflow 1.13为例】。

模型部署阶段

1、模型格式要求

因为模型部署在云上需要在AI框架[tf/pytorch/mxnet]上再套一个serving框架,本文主要利用tensorflow框架,上层的serving框架会对tensorflow的saved model形式比较亲和[推理比较快],所以需要把模型先转成saved model格式的模型,可能的路线是pb--->saved model / ckpt --->saved model  /h5--->saved model,具体转法同学们可以参考网上的教程~

最终生成的saved model文件树如下:

variables目录里如下:

值得注意的是,saved model.pb文件只包含了图,不包含权重,权重全部存在了variables目录下,如果同学们转换出来variables里面是空的,pb文件很大,是有问题的,应该是转换代码的问题。

2、配置文件编写

config.json:

如下是一个简单的config.json文件的内容,runtime 参数定义运行的ai引擎、和推理的环境,reques参数定义当通过request调用这个api时的格式,需要是form-data还是其他,传的是图片file还是string,response定义了推理完模型后返回给请求的格式,dependency是额外需要的一些依赖环境的配置。

具体的其他场景怎么编写可以参考官网文档:模型配置文件编写说明_AI开发平台ModelArts_推理部署_推理规范说明_模型包规范_华为云 (huaweicloud.com)

{ "model_type": "TensorFlow", "model_algorithm": "test-resnet", "runtime":"tf1.13-python3.6-cpu", "apis": [{ "protocol": "http", "url": "/", "method": "post", "request": { "Content-type": "multipart/form-data", "data": { "type": "object", "properties": { "sentence": { "type": "string" } } } }, "response": { "Content-type": "applicaton/json", "data": { "type": "object", "properties": { } } } }] "dependencies": [{ "installer": "pip", "packages": [{ "restraint": "EXACT", "package_version": "1.1.5", "package_name": "pandas" },

2、customize_service.py编写

这部分主要是定义模型的数据前处理、后处理和推理的接口,以及返回什么内容应该怎么写,下模板是一个无需前后处理,返回QPS和推理结果、时间的例子,更详细的说明可以参考官方文档:模型推理代码编写说明_AI开发平台ModelArts_推理部署_推理规范说明_模型包规范_华为云 (huaweicloud.com)

import logging import threading import numpy as np import os import pandas as pd import tensorflow as tf # 导入tensorflow from PIL import Image from model_service.tfserving_model_service import TfServingBaseService from config import * import time logger = logging.getLogger() logger.setLevel(logging.INFO) class mnist_service(TfServingBaseService): def __init__(self, model_name, model_path): self.ctx = None self.use_time = 0 def _preprocess(self, data): return data def _inference(self, data): print('ready to infer') time_list = [] start_time = time.time() predict_result = self.sess.run(self.model_outputs, feed_dict=self.model_inputs) time_list.append(time.time() - start_time) use_time = np.mean(time_list) result = {} result['output'] = predict_result.tolist() result['aver_use_time'] = use_time result['QPS'] = 1 / use_time return result def _postprocess(self, data): return data

3、打包上传OBS

将上述文件按如下图打包到一个文件夹里:

上传OBS:

4、模型部署

选择ModelArts里的模型管理---模型

然后在‘’我的模型‘’里选择‘’导入‘’,然后再模型创建界面中的‘元模型来源’选择从OBS导入,如下图,除了红框需要选择外,其他配置是读取config.json文件自动配置的,然后点击创建即可完成模型部署:

然后等到模型创建成功:

模型上线阶段

选择部署上线---在线服务---部署

选择把模型在什么样的资源下上线[gpu/cpu],选择刚才部署上去的模型,和版本号(如果多次部署的话),即可创建成功

手把手教你用ModelArts模型部署上线&在线推理(一)【我的华为云体验之旅】

等待在线服务部署完成会出现,‘运行中’,便是成功上线了:

AI AI开发平台ModelArts 机器学习 深度学习 神经网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:257_Mongodb_集合_副本集
下一篇:MongoDB安装和部署
相关文章