ml.net例子笔记7-ml.net与OMNX

在整个模型生成过程中,模型位于内存中,并且可以在整个应用程序生命周期中访问。 但是,一旦应用程序停止运行,而模型未在本地或远程的某个位置保存,则无法再访问该模型。
通常情况下,在其他应用程序中训练模型之后,某些时候会使用模型进行推理或重新训练。 因此,存储模型很重要。
详细信息参考:
https://learn.microsoft.com/zh-cn/dotnet/machine-learning/how-to-guides/save-load-machine-learning-models-ml-net

1 模型保存

// Train model
ITransformer trainedModel = pipelineEstimator.Fit(data);
// Save model
mlContext.Model.Save(trainedModel, data.Schema, "model.zip");

保存模型时,需要以下两项:

保存为OMNX格式

需要使用这个Microsoft.ML.OnnxConverter 包
https://www.nuget.org/packages/Microsoft.ML.OnnxConverter#versions-body-tab

using FileStream stream = File.Create("./onnx_model.onnx");
mlContext.Model.ConvertToOnnx(trainedModel, data, stream);

但是,并非所有训练器和转换器都可导出到 ONNX。 有关完整列表,请访问转换如何选择 ML.NET 算法指南。
https://learn.microsoft.com/zh-cn/dotnet/machine-learning/how-to-choose-an-ml-net-algorithm

2 模型加载

//Define DataViewSchema for data preparation pipeline and trained model
DataViewSchema modelSchema;
// Load trained model
ITransformer trainedModel = mlContext.Model.Load("model.zip", out modelSchema);

加载OMNX格式

需要使用Microsoft.ML.OnnxTransformer包
https://www.nuget.org/packages/Microsoft.ML.OnnxTransformer

OnnxScoringEstimator estimator = mlContext.Transforms.ApplyOnnxModel("./onnx_model.onnx");

OMNX的使用也可以参考这个
在 .NET 中使用 AutoML ONNX 模型进行预测
https://learn.microsoft.com/zh-cn/azure/machine-learning/how-to-use-automl-onnx-model-dotnet?view=azureml-api-2

3 ONNX

ONNX 是 AI 模型的开源格式。 ONNX 支持框架之间的互操作性。 这意味着你可在众多常见的机器学习框架(如 PyTorch)中训练模型,将其转换为 ONNX 格式,并在 ML.NET 等不同框架中使用 ONNX 模型。 有关详细信息,请参阅 ONNX 网站
https://onnx.ai/supported-tools.html#buildModel

ONNX 模型存储库

ONNX 模型存储库托管多个预先训练的 ONNX 模型,这些模型可用于各种任务中的推理。
使用 ML.NET,可以采用这些预先训练的 ONNX 模型,并将其用于在 .NET 应用程序内进行推理。
https://github.com/onnx/models

Netron

https://github.com/lutzroeder/netron
Netron is a viewer for neural network, deep learning and machine learning models.
Netron supports ONNX, TensorFlow Lite, Core ML, Keras, Caffe, Darknet, MXNet, PaddlePaddle, ncnn, MNN and TensorFlow.js.
Netron has experimental support for PyTorch, TorchScript, TensorFlow, OpenVINO, RKNN, MediaPipe, ML.NET and scikit-learn.

Omnx使用

https://github.com/onnx/tutorials

4 深度学习

https://learn.microsoft.com/zh-cn/dotnet/machine-learning/deep-learning-overview
深度学习是使用“深度”神经网络的机器学习技术的总称。 如今,深度学习是机器学习最显著的领域之一,因为它在计算机视觉、自然语言处理等领域以及应用于强化学习、游戏玩法、决策制定和模拟等场景方面都取得了成功。

深度学习成功的关键因素是数据、计算、软件框架和运行时的可用性,它们有助于创建神经网络模型及其推理的执行。 此类框架的示例包括 Tensorflow、(Py) Torch 和 ONNX。
ML.NET 提供对其中一些框架的访问权限。 因此,ML.NET 用户无需从头开始即可利用深度学习模型。

深度学习与机器学习?

深度学习依赖于神经网络算法。 这与传统或经典机器学习技术形成对比,后者使用更广泛的算法,例如通用线性模型、决策树或支持向量机(SVM)。 这种差异最直接、最实际的影响是深度学习方法可能更适合某种数据。 在一些情况下,传统的机器学习技术(例如梯度提升树 (XGBoost、LightGBM 和 CatBoost) )似乎在表格数据方面具有优势。
对于结构化程度较低的数据(例如文本和图像),神经网络往往表现得更好。
最佳方法是始终试验特定数据源和用例,从而确定哪些技术最适合你的问题。
**对于经典机器学习任务,ML.NET 通过自动化机器学习(AutoML)简化了此试验过程。 **

神经网络体系结构

深度学习的主要区别特征之一是使用人工神经网络算法。
概括而言,可以将神经网络视为“处理单元”的配置,其中每个单元的输出构成另一个单元的输入。 其中每个单元都可以接受一个或多个输入,并实质上执行其输入的加权总和,应用偏移(或“偏差”),然后应用非线性转换函数(称为“激活”)。 这些组件的不同排列方式用于描述分类、回归函数和其他机器学习任务核心结构中的决策边界。

在过去的十年里,深度学习的案例、应用和技术都有所增长。 这种增长的部分原因是可纳入神经网络的操作种类不断增加,这些操作可以配置在更丰富的安排中,并且改进了对这些改进的计算支持。 通常,神经网络体系结构可以分为以下类别:

  • 前馈神经网络
  • 卷积神经网络
  • 递归神经网络
  • 生成对抗网络
  • Transformers

深度学习的用途是什么?

深度学习体系结构在涉及图像、音频和自由格式文本等“非结构化数据”的任务中表现良好。 因此,深度学习已用于解决如下问题:

  • 图像分类
  • 音频分类
  • 翻译
  • 文本生成
  • 文本分类

ML.NET 中的深度学习

从头开始训练深度学习模型需要设置多个参数、大量已标记的训练数据和海量计算资源(数百个 GPU 小时)。 ML.NET 使你能够使用预先训练的模型和知识转移技术(例如迁移学习和微调)来缩短此过程。
ML.NET 还使你能够导入在其他框架中训练的模型,并将其用于 .NET 应用程序。
根据具体场景,可以使用本地 GPU 和 Azure GPU 计算资源来训练和使用深度学习模型。

5 深度学习模型库

Hugging Face

Hugging Face是一个开源的深度学习模型库,它提供了许多预训练的模型供用户使用和探索。这些模型涵盖了各种领域和任务,包括自然语言处理、计算机视觉、语音识别等。
虽然Hugging Face主要关注深度学习模型,但它并不是所有模型都是深度学习模型。在Hugging Face的库中,也包括一些传统的机器学习算法和模型,例如线性回归、逻辑回归、支持向量机等。
https://huggingface.co/ https://aifasthub.com/

OMNX模型库

https://github.com/onnx/models

阿里ModelScope

https://www.modelscope.cn/
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!
通义的一些开源模型和社数据集也可以在这找到。

百度飞桨

https://aistudio.baidu.com/modelsoverview?lang=zh_CN#
百度飞桨、文心模型等仓库
计算机视觉、自然语言处理、智能语音、文心大模型、科学计算、量子计算等任务方向算法,覆盖智慧金融、智慧安防、智慧工业/能源、智慧城市、智慧交通等多行业场景范例

posted @ 2023-12-22 08:49  2012  阅读(41)  评论(0编辑  收藏  举报