一、简介
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/n/189716.html