使用ResNet50預置算法訓練美食分類模型-優化建議
1862
2025-03-31
前言
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],選擇剛才部署上去的模型,和版本號(如果多次部署的話),即可創建成功
等待在線服務部署完成會出現,‘運行中’,便是成功上線了:
AI AI開發平臺ModelArts 機器學習 深度學習 神經網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。