一、簡介
PythonONNX 是 Kubernetes/OpenShift 上應用程序部署的模型交付工具。它是一種用於打通算法和模型交付關鍵路徑的開源工具,可將數據科學家編寫的 Python 代碼和深度學習框架(如 PyTorch, TensorFlow)生成的 ONNX 模型轉換成 Docker 容器鏡像,為 ML 開發周期的每個階段提供可重複性。
PythonONNX 旨在幫助開發人員和數據科學家將其機器學習算法和模型交付到生產環境的製造流程中。在這個流程中,代碼可以導出為 ONNX 模型,並利用 PythonONNX 的自定義腳本將其轉換為運行模型容器的鏡像。這些鏡像可以通過容器運行時(如 Docker 或 Kubernetes)在雲上或本地環境中部署和運行,並且支持常見的生產環境特性,如橫向擴展部署(scaling),容錯和監視。
二、主要功能特點
1、ONNX 模型的導出、導入
import torch
import onnx
from onnx import shape_inference
# Prepare the inputs as an ONNX tensor
input_shape = (1, 3, 64, 64)
input_data = torch.randn(input_shape)
onnx_input = torch.onnx.export(torch.from_numpy(input_data.copy()),
(input_shape), 'example.onnx', verbose=True)
2、容器化模型鏡像構建和部署
FROM python:3.7-slim-buster
WORKDIR /app
ADD . /app
RUN pip install mylibrary
RUN pip install onnxruntime==1.3.0
CMD ["python", "service.py"]
3、部署模型容器並進行模型服務化
from flask import Flask, request, jsonify
import onnxruntime as rt
import numpy as np
import json
app = Flask(__name__)
@app.route('/predict', methods=['POST'])
def predict():
sess = rt.InferenceSession("example.onnx")
input_name = sess.get_inputs()[0].name
input_shape = sess.get_inputs()[0].shape
# Read input data
input_data = json.loads(request.data.decode())
input_data = np.array(input_data['data']).reshape(input_shape)
# Run prediction
output = sess.run(None, {input_name: input_data})
# Format output data to JSON
output_data = {'result': str(output)}
return jsonify(output_data)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
三、應用場景
1、模型導出與轉換
PythonONNX 支持從各種常見深度學習框架中,如 TensorFlow、PyTorch 中導出 ONNX 模型格式。通過將模型導出為 ONNX 格式,可以方便地將該模型導入到 PythonONNX 中進行容器鏡像構建、模型服務化等操作。
2、模型容器化部署
PythonONNX 具備將 ONNX 模型轉化為 Docker 容器鏡像的能力,通過該鏡像可以直接部署到本地 Kubernetes/OpenShift 環境或阿里雲等雲服務上。用戶可以添加額外的依賴項(如 python 庫、系統庫、資源文件等)到容器鏡像中。
3、模型服務化
PythonONNX 可以將 ONNX 模型服務化,即生成 RESTful API 接口,支持遠程調用,可輕鬆支持豐富的應用場景。
四、總結
本文介紹了 PythonONNX 工具的主要功能和應用場景,以及相關代碼示例。 PythonONNX 可以極大地提高機器學習算法和模型的交付速度和可擴展性,降低了在生產部署中的複雜性,提高了生產效率和可維護性。在企業建立全流程的人工智能平台中,PythonONNX 是非常重要的一個環節。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/189530.html