ONNX és Azure Machine Learning: ML modellek létrehozása és felgyorsításaONNX and Azure Machine Learning: Create and accelerate ML models

Ismerje meg, hogyan használható a nyílt neurális hálózati Exchange (ONNX) a gépi tanulási modell következtetésének optimalizálásához.Learn how using the Open Neural Network Exchange (ONNX) can help optimize the inference of your machine learning model. A következtetés vagy a modell pontozása az a fázis, ahol az üzembe helyezett modellt az előrejelzéshez használják, leggyakrabban a termelési adatforgalomban.Inference, or model scoring, is the phase where the deployed model is used for prediction, most commonly on production data.

A gépi tanulási modellek a következtetésekhez való optimalizálása (vagy a modell pontozása) nehéz, mivel a modell és a következtetési könyvtár összehangolása szükséges a legtöbb hardveres funkció kihasználásához.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. A probléma rendkívül nehéz lesz, ha a különböző típusú platformokon (felhő/Edge, CPU/GPU stb.) optimális teljesítményt szeretne kapni, mivel mindegyik különböző képességekkel és jellemzőkkel rendelkezik.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. A bonyolultság akkor növekszik, ha számos különböző keretrendszerből származó modellekkel rendelkezik, amelyek számos különböző platformon futnak.The complexity increases if you have models from a variety of frameworks that need to run on a variety of platforms. Nagyon sok időt kell igénybe venni a keretrendszerek és a hardverek különböző kombinációinak optimalizálására.It's very time consuming to optimize all the different combinations of frameworks and hardware. Egy olyan megoldás, amelyet egyszer kell betanítani az előnyben részesített keretrendszerben, és a felhőben vagy az Edge-ben bárhol futnia kell.A solution to train once in your preferred framework and run anywhere on the cloud or edge is needed. Itt jön a ONNX.This is where ONNX comes in.

A Microsoft és a partnerek egyik közössége nyílt szabványként hozta létre a gépi tanulási modelleket képviselő ONNX.Microsoft and a community of partners created ONNX as an open standard for representing machine learning models. A számos keretrendszerből származó modellek, például a TensorFlow, a PyTorch, a SciKit, a kerasz, a chainer, a MXNet és a MATLAB, a szabványos ONNX formátumba exportálhatók vagy konvertálhatók.Models from many frameworks including TensorFlow, PyTorch, SciKit-Learn, Keras, Chainer, MXNet, and MATLAB can be exported or converted to the standard ONNX format. Ha a modellek ONNX formátumúak, különböző platformokon és eszközökön is futtathatók.Once the models are in the ONNX format, they can be run on a variety of platforms and devices.

A ONNX Runtime egy nagy teljesítményű, a ONNX-modellek éles környezetben történő üzembe helyezéséhez használható.ONNX Runtime is a high-performance inference engine for deploying ONNX models to production. A felhő és a peremhálózat számára egyaránt optimalizált, és Linux, Windows és Mac rendszereken is működik.It's optimized for both cloud and edge and works on Linux, Windows, and Mac. A C++ nyelvben írt C, Python és C# API-kkal is rendelkezik.Written in C++, it also has C, Python, and C# APIs. Az ONNX Runtime támogatást nyújt az összes ONNX-ML specifikációhoz, és a különböző hardverek, például az NVidia GPU-k TensorRT is integrálható a gyorssegédekkel.ONNX Runtime provides support for all of the ONNX-ML specification and also integrates with accelerators on different hardware such as TensorRT on NVidia GPUs.

A ONNX futtatókörnyezet nagy léptékű Microsoft-szolgáltatásokban, például a Bing, az Office és a Cognitive Servicesban használatos.The ONNX Runtime is used in high scale Microsoft services such as Bing, Office, and Cognitive Services. A teljesítménybeli nyereség számos tényezőtől függ, de ezek a Microsoft-szolgáltatások átlagosan 2x teljesítménybeli nyereséget észleltek a CPU-ban.Performance gains are dependent on a number of factors but these Microsoft services have seen an average 2x performance gain on CPU. A ONNX Runtime a Windows ML részeként is használatos több száz millió eszközön.ONNX Runtime is also used as part of Windows ML on hundreds of millions of devices. A futtatókörnyezetet Azure Machine Learning használatával használhatja.You can use the runtime with Azure Machine Learning. A ONNX Runtime használatával kihasználhatja a nagy teljesítményű optimalizálási, tesztelési és folyamatos fejlesztéseket.By using ONNX Runtime, you can benefit from the extensive production-grade optimizations, testing, and ongoing improvements.

ONNX-folyamatábra, amely bemutatja a képzést, a konvertereket és az üzembe helyezéstONNX flow diagram showing training, converters, and deployment

ONNX-modellek beolvasásaGet ONNX models

A ONNX-modelleket többféleképpen is beszerezheti:You can obtain ONNX models in several ways:

  • Új ONNX-modell betanítása Azure Machine Learningban (lásd a cikk alján található példákat)Train a new ONNX model in Azure Machine Learning (see examples at the bottom of this article)
  • Meglévő modell átalakítása más formátumból ONNX (lásd az oktatóanyagokat)Convert existing model from another format to ONNX (see the tutorials)
  • Egy előre betanított ONNX-modell beszerzése a ONNX Model Zoo -ból (lásd a cikk alján található példákat)Get a pre-trained ONNX model from the ONNX Model Zoo (see examples at the bottom of this article)
  • Testreszabott ONNX-modell létrehozása az Azure Custom Vision szolgáltatásbólGenerate a customized ONNX model from Azure Custom Vision service

Számos modell, beleértve a képbesorolást, az objektumok észlelését és a ONNX modellként is megjeleníthető.Many models including image classification, object detection, and text processing can be represented as ONNX models. Előfordulhat azonban, hogy egyes modellek nem alakíthatók át sikeresen.However some models may not be able to be converted successfully. Ha ebben a helyzetben fut, a megfelelő konverter GitHubján egy problémát kell megadnia.If you run into this situation, please file an issue in the GitHub of the respective converter that you used. A probléma megoldása előtt továbbra is használhatja a meglévő Format modellt.You can continue using your existing format model until the issue is addressed.

ONNX-modellek üzembe helyezése az Azure-banDeploy ONNX models in Azure

A Azure Machine Learning segítségével üzembe helyezheti, kezelheti és figyelheti a ONNX-modelljeit.With Azure Machine Learning, you can deploy, manage, and monitor your ONNX models. A normál üzembe helyezési munkafolyamat és a ONNX futtatókörnyezet használatával létrehozhat egy felhőben üzemeltetett Rest-végpontot.Using the standard deployment workflow and ONNX Runtime, you can create a REST endpoint hosted in the cloud. Tekintse meg a cikk végén található példa Jupyter jegyzetfüzeteket a kipróbáláshoz.See example Jupyter notebooks at the end of this article to try it out for yourself.

A ONNX Runtime telepítése és használata a Python használatávalInstall and use ONNX Runtime with Python

A ONNX Runtime Python-csomagjai a PyPi.org (CPU, GPU) szolgáltatásban érhetők el.Python packages for ONNX Runtime are available on PyPi.org (CPU, GPU). A telepítés előtt olvassa el a rendszerkövetelményeket .Please read system requirements before installation.

A Pythonhoz készült ONNX Runtime telepítéséhez használja az alábbi parancsok egyikét:To install ONNX Runtime for Python, use one of the following commands:

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

A ONNX Runtime a Python-szkriptben való meghívásához használja a következőt:To call ONNX Runtime in your Python script, use:

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

A modellt kísérő dokumentáció általában megadja a modell használatának bemeneteit és kimeneteit.The documentation accompanying the model usually tells you the inputs and outputs for using the model. A modell megjelenítéséhez olyan vizualizációs eszközt is használhat, mint például a Netron .You can also use a visualization tool such as Netron to view the model. A ONNX Runtime lehetővé teszi a modell metaadatainak, bemenetének és kimenetének lekérdezését is: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

A modell kiszámításához használja run a és a pass értéket a visszaadni kívánt kimenetek listájában (hagyja üresen, ha az összeset meg szeretné jeleníteni) és a bemeneti értékek egy térképét.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. Az eredmény a kimenetek listája.The result is a list of the outputs.

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

A Python API teljes leírását a ONNX futásidejűdokumentációjában találhatja meg.For the complete Python API reference, see the ONNX Runtime reference docs.

PéldákExamples

Lásd: útmutató – azureml/Deployment/Onnx , például Onnx-modelleket létrehozó és telepítő jegyzetfüzetek.See how-to-use-azureml/deployment/onnx for example notebooks that create and deploy ONNX models.

Útmutató a jegyzetfüzetek futtatásához a Jupyter notebookok használata a szolgáltatás megismeréséhezcímű cikkben ismertetett módon.Learn how to run notebooks by following the article Use Jupyter notebooks to explore this service.

További információMore info

További információ a ONNX vagy a projekthez való hozzájárulásról:Learn more about ONNX or contribute to the project:

További információ a ONNX Futtatókörnyezetről vagy a projekthez való hozzájárulásról:Learn more about ONNX Runtime or contribute to the project: