大數據

阿里雲機器學習平臺DSW2:keras 模型訓練與EAS部署

Step By Step

一、模型訓練與保存

1.1 DSW控制檯創建DSW2實例

圖片.png

1.2 Terminal更新TensorFlow(2.3.1當期最新版本)

pip install tensorflow

圖片.png

1.3、python code

# 安裝 TensorFlow
import tensorflow as tf

print(tf.__version__)

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test,  y_test, verbose=2)

# 將整個模型另存為 SavedModel。
model.save('saved_model_2/my_model') 

圖片.png

4、模型格式
圖片.png

二、eascmd部署模型

2.1 壓縮模型到zip包

zip -r model ./

圖片.png

2.2 eascmd 用戶認證

eascmd64 config -i -k -e pai-eas.cn-hangzhou.aliyuncs.com

圖片.png

2.3 上傳文件

eascmd upload [filename] --inner

圖片.png

2.4 創建模型部署json文件

{

"name": "taro_eas_keras_demo",
"generate_token": "true",
"model_path": "oss://eas-model-hangzhou/18482178/model.zip",
"processor": "tensorflow_cpu_1.14",
"metadata": {

"instance": 1,
"cpu": 1

}
}

更多參考:EASCMD客戶端使用說明

2.5 部署模型

eascmd create [service_desc_json]

圖片.png

2.6 eas 控制檯查看成功部署的模型
圖片.png

三、sdk 調用模型

3.1 獲取模型信息。

通過GET請求可以獲取模型的相關信息,包括signature_name、name、type及shape,示例如下: curl <訪問地址> -H 'Authorization:' | python -mjson.tool

圖片.png

3.2 Python SDK調用 Code Sample

#!/usr/bin/env python
from eas_prediction import PredictClient, TFRequest
import cv2
import numpy as np

with open('2.jpg', 'rb') as infile:
    buf = infile.read()
    # 使用numpy將字節流轉換成array
    x = np.fromstring(buf, dtype='uint8')
    # 將讀取到的array進行圖片解碼獲得28 × 28的矩陣
    img = cv2.imdecode(x, cv2.IMREAD_UNCHANGED)
    # 由於預測服務API需要長度為784的一維向量將矩陣reshape成784
    img = np.reshape(img, 784)

if __name__ == '__main__':

    # http://1848217*********.cn-shanghai.pai-eas.aliyuncs.com/api/predict/kears_model
    client = PredictClient('1848217*********.cn-shanghai.pai-eas.aliyuncs.com', 'kears_model')
    #  注意上面的client = PredictClient()內填入的信息,是通過對調用信息窗口(下圖)中獲取的訪問地址的拆分
    client.set_token('*********')
    #  Token信息在“EAS控制檯—服務列表—服務—調用信息—公網地址調用—Token”中獲取
    client.init()

    req = TFRequest('serving_default') # signature_name 參數:serving_default
    req.add_feed('flatten_input', [1, 28, 28], TFRequest.DT_FLOAT, img)

    resp = client.predict(req)
    print(resp)

3.3 測試結果

outputs {
  key: "dense_1"
  value {
    dtype: DT_FLOAT
    array_shape {
      dim: 1
      dim: 10
    }
    float_val: 0.0
    float_val: 0.0
    float_val: 1.0
    float_val: 0.0
    float_val: 0.0
    float_val: 0.0
    float_val: 0.0
    float_val: 0.0
    float_val: 0.0
    float_val: 0.0
  }
}

參考鏈接:阿里雲機器學習PAI EAS部署TensorFlow Model

參考鏈接

阿里雲機器學習PAI EAS部署TensorFlow Model
TensorFlow服務請求構造
EASCMD客戶端使用說明

Leave a Reply

Your email address will not be published. Required fields are marked *