文档
  • PyCaret 3.0
  • 入门
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放和转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 发布 PyCaret 1.0
      • 发布 PyCaret 2.0
      • 关于 PyCaret 你不知道的 5 件事
      • 构建并部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建你自己的 AutoML
      • 在 Google Kubernetes 上部署 ML Pipeline
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中进行异常检测
      • 在 Google Kubernetes 上部署 ML 应用
      • 在 GKE 上部署机器学习 Pipeline
      • 在 AWS Fargate 上部署机器学习 Pipeline
      • 使用 Docker 在云端部署 ML Pipeline
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 ONNX Runtime 在边缘设备上部署 PyCaret 模型
      • GitHub 是你所需要的最佳 AutoML
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 和 MLflow 实现轻松 MLOps
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 PyCaret 在 Alteryx 中进行机器学习
      • 使用 PyCaret 在 KNIME 中进行机器学习
      • 使用 PyCaret 在 SQL 中进行机器学习 第一部分
      • 使用 PyCaret 在 Power BI 中进行机器学习
      • 使用 PyCaret 在 Tableau 中进行机器学习
      • 使用 PyCaret 进行多个时间序列预测
      • 使用 PyCaret 预测客户流失
      • 使用 PyCaret 预测潜在客户得分(正确方法)
      • 使用 PyCaret 在 Python 中进行 NLP 文本分类
      • 使用 PyCaret 预测潜在客户得分(正确方法)
      • 使用 PyCaret 预测黄金价格暴跌
      • 使用机器学习预测黄金价格
      • PyCaret 2.1 功能总结
      • 使用 PyCaret 将 ML 模型部署到 SQL Server
      • 使用 PyCaret 和 Gradio 加速你的机器学习
      • 时间序列 101 - 献给初学者
      • 使用 PyCaret 进行时间序列异常检测
      • 使用 PyCaret 回归进行时间序列预测
      • 使用 PyCaret 在 Power BI 中进行主题建模
      • 使用 PyCaret 编写和训练自定义 ML 模型
      • 使用 PyCaret 和 Streamlit 构建并部署 ML 应用
      • PyCaret 2.3.6 发布啦!看看有什么新功能?
    • 📺视频
    • 🛩️速查表
    • ❓常见问题
    • 👩‍💻示例
  • 重要链接
    • 🛠️发布说明
    • ⚙️API 参考
    • 🙋 讨论
    • 📤问题
    • 👮 许可
  • 媒体
    • 💻Slack
    • 📺YouTube
    • 🔗LinkedIn
    • 😾GitHub
    • 🔅Stack Overflow
由 GitBook 提供支持
本页内容
  • 使用 ONNX Runtime 在边缘设备上部署 PyCaret 模型
  • 引言
  • PyCaret
  • skl2onnx
  • 安装
  • 不同的模型格式
  • 👉Pickle
  • 👉PMML
  • 👉ONNX
  • 什么是 ONNX?
  • 主要优势
  • 👉开始吧
  • 数据集
  • 👉 模型训练与选择
  • 👉 使用 Pickle 格式生成预测
  • 👉 ONNX 转换
  • 即将推出!
  • 重要链接
  • 更多 PyCaret 相关教程

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

使用 ONNX Runtime 在边缘设备上部署 PyCaret 模型

上一篇使用 PyCaret 在 Power BI 中进行聚类分析下一篇GitHub 是你所需要的最佳 AutoML

最后更新于 2 年前

这有帮助吗?

使用 ONNX Runtime 在边缘设备上部署 PyCaret 模型

一步步教你如何将使用 PyCaret 训练的 ML 模型转换为 ONNX,以实现高性能推理(CPU 或 GPU)

图片来源:Austin Distel on Unsplash

引言

👉 什么是 PyCaret 以及如何入门?

👉 模型格式有哪些类型(pickle, onnx, pmml 等)?

👉 什么是 ONNX(读作 ONEX)以及它的优势是什么?

👉 使用 PyCaret 训练机器学习模型并将其转换为 ONNX,以便在边缘设备上部署。

PyCaret

特点

skl2onnx

安装

你需要为本教程安装以下库。安装只需几分钟。

**# install pycaret
**pip install pycaret

**# install skl2onnx
**pip install skl2onnx

**# install onnxruntime
**pip install onnxruntime

不同的模型格式

在我介绍 ONNX 和其优势之前,让我们先看看目前有哪些可用于部署的模型格式。

👉Pickle

👉PMML

预测模型标记语言(PMML)是另一种机器学习模型格式,相对而言不如 Pickle 常见。PMML 自 1997 年问世以来,已有大量应用利用该格式。SAP **和 PEGA CRM 等应用能够利用特定版本的 PMML。有一些开源库可以将 scikit-learn 模型(PyCaret)转换为 PMML。PMML 格式最大的缺点是它不支持所有的机器学习模型。

👉ONNX

什么是 ONNX?

ONNX 得到广泛支持,可在许多框架、工具和硬件中找到。实现不同框架之间的互操作性,并简化从研究到生产的路径,有助于提高 AI 社区的创新速度。ONNX 有助于解决与 AI 模型相关的硬件依赖性挑战,并能够将相同的 AI 模型部署到多个硬件加速目标上。

来源:Microsoft

有许多优秀的机器学习库,涵盖各种语言——PyTorch、TensorFlow、scikit-learn、PyCaret 等。其理念是你可以使用任何工具、语言或框架训练模型,然后使用另一种语言或应用进行推理和预测。例如,假设你有一个使用 .Net 构建的 Web 应用、一个 Android 应用,甚至是边缘设备,并且你想将机器学习模型的预测集成到这些下游系统中。你可以通过将模型转换为 ONNX 格式来实现。使用 Pickle 或 PMML 格式无法做到这一点。

主要优势

👉 互操作性

使用你偏好的框架进行开发,无需担心下游推理的影响。ONNX 使你能够将偏好的框架与选择的推理引擎配合使用。

👉 硬件访问

ONNX 使访问硬件优化变得更容易。使用与 ONNX 兼容的运行时和库,这些库旨在最大限度地提高跨硬件的性能。这意味着如果你关心延迟,甚至可以在 GPU 上使用 ONNX 模型进行推理。

👉开始吧

数据集

**# loading dataset
**from pycaret.datasets import get_data
data = get_data('insurance')

**# initialize setup / data preparation
**from pycaret.regression import *
s = setup(data, target = 'charges')

👉 模型训练与选择

现在数据已准备好用于建模,让我们使用 compare_models 函数开始训练过程。它将训练模型库中所有可用的算法,并使用 k 折交叉验证评估多个性能指标。

**# compare all models**
best = compare_models()

基于交叉验证指标,最佳模型是 Gradient Boosting Regressor。你可以使用 save_model 函数将模型保存为 Pickle 文件。

**# save model to drive
**save_model(best, 'c:/users/models/insurance')

这将把模型保存为 Pickle 格式。

👉 使用 Pickle 格式生成预测

你可以使用 load_model 函数将保存的模型加载回 Python 环境,并使用 predict_model 函数生成推理。

**# load the model
**from pycaret.regression import load_model
loaded_model = load_model('c:/users/models/insurance')

**# generate predictions / inference
**from pycaret.regression import predict_model
pred = predict_model(loaded_model, data=data) # new data

👉 ONNX 转换

到目前为止,我们看到的是以 Pickle 格式保存和加载训练好的模型(这是 PyCaret 的默认格式)。然而,使用 skl2onnx 库,我们可以将模型转换为 ONNX

**# convert best model to onnx**
from skl2onnx import to_onnx
X_sample = get_config('X_train')[:1]
model_onnx = to_onnx(best, X_sample.to_numpy())

我们还可以将 model_onnx 保存到本地驱动器

**# save the model to drive**
with open("c:/users/models/insurance.onnx", "wb") as f:
    f.write(model_onnx.SerializeToString())

现在,为了从 insurance.onnx 生成推理,我们将使用 Python 中的 onnxruntime 库(仅为演示)。本质上,你现在可以在任何其他平台或环境中使用这个 insurance.onnx 文件。

**# generate inference on onnx**
from onnxruntime import InferenceSession
sess = InferenceSession(model_onnx.SerializeToString())
X_test = get_config('X_test').to_numpy()
predictions_onnx = sess.run(None, {'X': X_test})[0]

**# print predictions_onnx
**print(predictions_onnx)

请注意,predictions_onnx 的输出是一个 numpy 数组,而我们使用 PyCaret 的 predict_model 函数时得到的是 pandas DataFrame,但如果你比对数值,所有数字都是相同的(使用 ONNX 时,有时会发现在小数点后第 4 位之后有微小差异 — 这种情况非常罕见)。

任务完成!

即将推出!

使用这个轻量级的 Python 工作流自动化库,你可以实现无限可能。如果你觉得这有用,请别忘了在我们的 GitHub 仓库上给我们点 ⭐️。

重要链接

更多 PyCaret 相关教程

在本教程中,我将向你展示如何使用——一个开源、低代码的 Python 机器学习库——并将其转换为 ONNX 格式,以便在边缘设备或任何其他非 Python 环境中部署。例如,你可以使用 Python 中的 PyCaret 训练机器学习模型,然后在 R、Java 或 C 中部署它们。本教程的学习目标是

是一个开源、低代码的机器学习库,也是一个内置于 Python 中的端到端模型管理工具,用于自动化机器学习工作流。PyCaret 以其易用性、简单性以及快速高效地构建和部署端到端机器学习 Pipeline 的能力而闻名。要了解更多关于 PyCaret 的信息,请查看其.

PyCaret — 一个开源、低代码的 Python 机器学习库

是一个开源项目,用于将 scikit-learn 模型转换为 ONNX。一旦转换为 ONNX 格式,你就可以使用 ONNX Runtime 等工具进行高性能推理。该项目于 2017 年由 Microsoft 的工程师和数据科学家启动。要了解更多关于此项目的信息,请查看其.

这是最常见的格式,也是许多 Python 库(包括 PyCaret)将模型对象保存到文件的默认方式。将 Python 对象转换为比特流,并允许将其存储到磁盘并在以后重新加载。它提供了一种很好的格式来存储机器学习模型,前提是推理应用也是用 Python 构建的。

,开放神经网络交换格式(Open Neural Network Exchange Format)是一种开放格式,支持在不同库和语言之间存储和移植机器学习模型。这意味着你可以使用任何语言的任何框架训练机器学习模型,然后将其转换为 ONNX,以便在任何环境(无论是 Java、C、.Net、Android 等)中生成推理。ONNX 的这种语言无关能力使其比其他格式(例如,你无法在 Python 之外的任何其他语言中使用保存为 Pickle 文件的模型)强大得多。

是一种开放格式,用于表示深度学习模型和传统模型。借助 ONNX,AI 开发者可以更轻松地在最先进的工具之间迁移模型,并选择最适合他们的组合。ONNX 由 Microsoft、Facebook 和 AWS 等合作伙伴社区开发和支持。

https://msdocs.cn/ai-at-edge/docs/onnx/
兼容性 vs. 互操作性

在本教程中,我将使用 PyCaret 仓库中的一个回归数据集,名为 insurance。你可以从.

样本数据集
setup 函数的输出(为显示目的而压缩)
compare_models 的输出
在测试集上生成的预测
predictions_onnx

下周我将深入探讨 ONNX 转换,并讨论如何将整个机器学习 Pipeline(包括 imputers 和 transformers)转换为 ONNX。如果你想自动收到通知,可以在以下平台关注我:, ,和.

PyCaret — 作者图片
PyCaret — 作者图片

要了解更多关于 PyCaret 的信息,请在以下平台关注我们和.

加入我们的 Slack 频道。邀请链接.

📖
PyCaret
PyCaret
GitHub
skl2onnx
GitHub
Pickle
ONNX
ONNX
这里
Medium
LinkedIn
Twitter
LinkedIn
Youtube
这里
文档
博客
GitHub
StackOverflow
安装 PyCaret
Notebook 教程
贡献 PyCaret
使用 PyCaret 在 Alteryx 中进行机器学习 一步步教你如何使用 PyCaret 在 Alteryx Designer 中训练和部署机器学习模型towardsdatascience.com
使用 PyCaret 在 KNIME 中进行机器学习 一步步教你如何使用 PyCaret 在 KNIME 中训练和部署端到端机器学习 Pipelinetowardsdatascience.datascience.com
使用 PyCaret + MLflow 实现轻松 MLOps 一个对初学者友好的、一步步教你如何使用 PyCaret 在机器学习实验中集成 MLOps 的教程towardsdatascience.com
使用 PyCaret 编写和训练你自己的自定义机器学习模型 towardsdatascience.com
使用 PyCaret 构建,使用 FastAPI 部署 *一个一步步的、对初学者友好的教程,关于如何使用 PyCaret 构建端到端机器学习 Pipeline 并…*towardsdatascience.com
使用 PyCaret 进行时间序列异常检测 一步步教你如何使用 PyCaret 对时间序列数据进行无监督异常检测towardsdatascience.com
使用 PyCaret 和 Gradio 加速你的机器学习实验 一步步教你如何快速开发机器学习 Pipeline 并进行交互towardsdatascience.com
使用 PyCaret 进行多个时间序列预测 一步步教你如何使用 PyCaret 预测多个时间序列towardsdatascience.com