ONNX i Azure Machine Learning: Tworzenie i przyspieszenie modeli MLONNX and Azure Machine Learning: Create and accelerate ML models

Dowiedz się, jak za pomocą programu Open neuronowych Network Exchange (ONNX) można zoptymalizować wnioskowanie o modelu uczenia maszynowego.Learn how using the Open Neural Network Exchange (ONNX) can help optimize the inference of your machine learning model. Wnioskowanie lub ocenianie modelu to faza, w której wdrożony model jest używany do prognozowania, najczęściej dotyczący danych produkcyjnych.Inference, or model scoring, is the phase where the deployed model is used for prediction, most commonly on production data.

Optymalizacja modeli uczenia maszynowego na potrzeby wnioskowania (lub oceniania modelu) jest trudna, ponieważ należy dostroić model i bibliotekę wnioskowania w celu zapewnienia większości możliwości sprzętowych.Optimizing machine learning models for inference (or model scoring) is difficult since you need to tune the model and the inference library to make the most of the hardware capabilities. Problem jest niezwykle trudno, jeśli chcesz uzyskać optymalną wydajność na różnych typach platform (chmura/Edge, procesor CPU/GPU itp.), ponieważ każdy z nich ma różne możliwości i cechy.The problem becomes extremely hard if you want to get optimal performance on different kinds of platforms (cloud/edge, CPU/GPU, etc.), since each one has different capabilities and characteristics. Złożoność zwiększa się, jeśli masz modele z różnych platform, które muszą działać na różnych platformach.The complexity increases if you have models from a variety of frameworks that need to run on a variety of platforms. Jest to bardzo czasochłonne, aby zoptymalizować wszystkie różne kombinacje platform i sprzętu.It's very time consuming to optimize all the different combinations of frameworks and hardware. Konieczne jest rozwiązanie do uczenia się jednokrotnie w preferowanej strukturze i działające w dowolnym miejscu w chmurze lub na krawędzi.A solution to train once in your preferred framework and run anywhere on the cloud or edge is needed. Jest to miejsce, w którym znajduje się ONNX.This is where ONNX comes in.

Firma Microsoft i społeczność partnerów utworzyli ONNX jako otwarty standard do reprezentowania modeli uczenia maszynowego.Microsoft and a community of partners created ONNX as an open standard for representing machine learning models. Modele z wielu platform , w tym TensorFlow, PyTorch, SciKit-nauka, Keras, łańcucher, MXNET, MATLAB i SparkML, można wyeksportować lub przekonwertować do formatu standardowego ONNX.Models from many frameworks including TensorFlow, PyTorch, SciKit-Learn, Keras, Chainer, MXNet, MATLAB, and SparkML can be exported or converted to the standard ONNX format. Gdy modele są w formacie ONNX, można je uruchamiać na różnych platformach i urządzeniach.Once the models are in the ONNX format, they can be run on a variety of platforms and devices.

Środowisko uruchomieniowe ONNX to aparat wnioskowania o wysokiej wydajności służący do wdrażania modeli ONNX w środowisku produkcyjnym.ONNX Runtime is a high-performance inference engine for deploying ONNX models to production. Jest zoptymalizowany pod kątem chmury i brzegowej oraz działa w systemach Linux, Windows i Mac.It's optimized for both cloud and edge and works on Linux, Windows, and Mac. Pisanie w języku C++ zawiera również interfejsy API języka C, Python, C#, Java i JavaScript (Node.js) do użycia w różnych środowiskach.Written in C++, it also has C, Python, C#, Java, and Javascript (Node.js) APIs for usage in a variety of environments. Środowisko uruchomieniowe ONNX obsługuje zarówno DNN, jak i tradycyjne modele ML oraz integruje się z akceleratorami na różnych urządzeniach, takich jak TensorRT w procesorach GPU NVidia, OpenVINO na procesorach Intel, DirectML w systemie Windows i innych.ONNX Runtime supports both DNN and traditional ML models and integrates with accelerators on different hardware such as TensorRT on NVidia GPUs, OpenVINO on Intel processors, DirectML on Windows, and more. Za pomocą środowiska uruchomieniowego ONNX można korzystać z zalet optymalizacji, testowania i ciągłego ulepszania klasy produkcyjnej.By using ONNX Runtime, you can benefit from the extensive production-grade optimizations, testing, and ongoing improvements.

Środowisko uruchomieniowe ONNX jest używane w usługach firmy Microsoft o dużej skali, takich jak Bing, Office i Azure Cognitive Services.ONNX Runtime is used in high-scale Microsoft services such as Bing, Office, and Azure Cognitive Services. Zyski wydajności są zależne od wielu czynników, ale te usługi firmy Microsoft miały średni wzrost wydajności procesora CPU.Performance gains are dependent on a number of factors, but these Microsoft services have seen an average 2x performance gain on CPU. Oprócz usług Azure Machine Learning środowisko uruchomieniowe ONNX działa również w innych produktach, które obsługują Machine Learning obciążeń, w tym:In addition to Azure Machine Learning services, ONNX Runtime also runs in other products that support Machine Learning workloads, including:

Diagram przepływu ONNX przedstawiający szkolenia, konwertery i wdrażanieONNX flow diagram showing training, converters, and deployment

Pobierz modele ONNXGet ONNX models

Modele ONNX można uzyskać na kilka sposobów:You can obtain ONNX models in several ways:

Wiele modeli, w tym Klasyfikacja obrazu, wykrywanie obiektów i przetwarzanie tekstu, można reprezentować jako modele ONNX.Many models including image classification, object detection, and text processing can be represented as ONNX models. W przypadku wystąpienia problemu z modelem, którego nie można pomyślnie przekonwertować, należy rozwiązać problem w usłudze GitHub odpowiedniego konwertera, który został użyty.If you run into an issue with a model that cannot be converted successfully, please file an issue in the GitHub of the respective converter that you used. Możesz kontynuować korzystanie z istniejącego modelu formatu do momentu rozwiązania problemu.You can continue using your existing format model until the issue is addressed.

Wdrażanie modeli ONNX na platformie AzureDeploy ONNX models in Azure

Za pomocą Azure Machine Learning można wdrażać i monitorować modele ONNX oraz zarządzać nimi.With Azure Machine Learning, you can deploy, manage, and monitor your ONNX models. Korzystając ze standardowego przepływu pracy wdrażania i środowiska uruchomieniowego ONNX, można utworzyć punkt końcowy REST hostowany w chmurze.Using the standard deployment workflow and ONNX Runtime, you can create a REST endpoint hosted in the cloud. Zobacz przykładowe notesy Jupyter na końcu tego artykułu, aby wypróbować je samodzielnie.See example Jupyter notebooks at the end of this article to try it out for yourself.

Instalowanie i używanie środowiska uruchomieniowego ONNX z językiem PythonInstall and use ONNX Runtime with Python

Pakiety Python dla środowiska uruchomieniowego ONNX są dostępne w PyPi.org (procesor CPU, procesor GPU).Python packages for ONNX Runtime are available on PyPi.org (CPU, GPU). Przed instalacją zapoznaj się z wymaganiami systemowymi .Please read system requirements before installation.

Aby zainstalować środowisko uruchomieniowe ONNX dla języka Python, użyj jednego z następujących poleceń:To install ONNX Runtime for Python, use one of the following commands:

pip install onnxruntime       # CPU build
pip install onnxruntime-gpu   # GPU build

Aby wywołać środowisko uruchomieniowe ONNX w skrypcie języka Python, użyj:To call ONNX Runtime in your Python script, use:

import onnxruntime
session = onnxruntime.InferenceSession("path to model")

Dokumentacja towarzysząca modelowi zwykle informuje dane wejściowe i wyjściowe dotyczące korzystania z modelu.The documentation accompanying the model usually tells you the inputs and outputs for using the model. Możesz również użyć narzędzia do wizualizacji, takiego jak Netron , aby wyświetlić model.You can also use a visualization tool such as Netron to view the model. Środowisko uruchomieniowe ONNX umożliwia również wykonywanie zapytań dotyczących metadanych modelu, danych wejściowych i wyjść:ONNX Runtime also lets you query the model metadata, inputs, and outputs:

session.get_modelmeta()
first_input_name = session.get_inputs()[0].name
first_output_name = session.get_outputs()[0].name

Aby wywnioskować model, użyj run i przekaż listę danych wyjściowych, które chcesz zwrócić (pozostaw puste, jeśli chcesz wszystkie), i mapę wartości wejściowych.To inference your model, use run and pass in the list of outputs you want returned (leave empty if you want all of them) and a map of the input values. Wynik jest listą danych wyjściowych.The result is a list of the outputs.

results = session.run(["output1", "output2"], {
                      "input1": indata1, "input2": indata2})
results = session.run([], {"input1": indata1, "input2": indata2})

Aby uzyskać pełną dokumentację interfejsu API języka Python, zobacz dokumenty referencyjne środowiska uruchomieniowego ONNX.For the complete Python API reference, see the ONNX Runtime reference docs.

PrzykładyExamples

Zapoznaj się z artykułem How to-use-Azure/Deployment/Onnx na przykład notesów Python, które tworzą i wdrażają modele Onnx.See how-to-use-azureml/deployment/onnx for example Python notebooks that create and deploy ONNX models.

Instrukcję uruchamiania notesów znajdziesz w artykule Use Jupyter notebooks to explore this service (Eksplorowanie tej usługi za pomocą notesów Jupyter).Learn how to run notebooks by following the article Use Jupyter notebooks to explore this service.

Przykłady użycia w innych językach można znaleźć w witrynie GitHub środowiska uruchomieniowego ONNX.Samples for usage in other languages can be found in the ONNX Runtime GitHub.

Więcej informacjiMore info

Dowiedz się więcej na temat ONNX lub współtworzenia projektu:Learn more about ONNX or contribute to the project:

Dowiedz się więcej na temat środowiska uruchomieniowego ONNX lub współtworzenia projektu:Learn more about ONNX Runtime or contribute to the project: