Megosztás a következőn keresztül:


ONNX és Azure Machine Learning

Ez a cikk azt ismerteti, hogyan segíthet az Open Neural Network Exchange (ONNX) a gépi tanulási modellek következtetésének optimalizálásában. A következtetés vagy a modell pontozása egy üzembe helyezett modell használatának folyamata az éles adatokra vonatkozó előrejelzések létrehozásához.

A gépi tanulási modellek következtetésre való optimalizálásához a modell és a következtetési kódtár finomhangolásával kell a lehető legtöbbet kihozni a hardver képességeiből. Ez a feladat összetettebbé válik, ha optimális teljesítményt szeretne elérni különböző platformokon, például felhőben, peremhálózaton, CPU-n vagy GPU-n, mivel mindegyik platform különböző képességekkel és jellemzőkkel rendelkezik. Az összetettség akkor nő, ha különböző keretrendszerekből kell modelleket futtatnia különböző platformokon. Időigényes lehet a keretrendszerek és hardverek különböző kombinációinak optimalizálása.

Hasznos megoldás, ha egyszer betanítja a modellt az előnyben részesített keretrendszerben, majd exportálja vagy ONNX-be konvertálja, hogy bárhol futtathassa a felhőben vagy a peremhálózaton. A Microsoft és a partnerek közössége nyílt szabványként hozta létre az ONNX-et a gépi tanulási modellek ábrázolása érdekében. A modelleket számos keretrendszerből exportálhatja vagy konvertálhatja szabványos ONNX formátumba. A támogatott keretrendszerek közé tartozik a TensorFlow, a PyTorch, a scikit-learn, a Keras, a Chainer, az MXNet és a MATLAB. Különböző platformokon és eszközökön ONNX formátumban futtathat modelleket.

Ez az ONNX-folyamatábra az elérhető keretrendszereket és üzembehelyezési lehetőségeket mutatja be.

ONNX-folyamatábra, amely betanítást, konvertereket és üzembe helyezést mutat be.

ONNX Runtime

Az ONNX Runtime egy nagy teljesítményű következtetési motor az ONNX-modellek éles környezetben való üzembe helyezéséhez. Az ONNX Runtime a felhőre és a peremhálózatra is optimalizálva van, és Linuxon, Windowson és macOS-en is működik. Az ONNX C++-ban van megírva, de C, Python, C#, Java és JavaScript (Node.js) API-kkal is rendelkezik ezekben a környezetekben.

Az ONNX Runtime támogatja a mély neurális hálózatokat (DNN) és a hagyományos gépi tanulási modelleket, és integrálható a különböző hardvereken futó gyorsítókkal, például az Nvidia GPU-ján futó TensorRT-tal, az Intel processzorokon futó OpenVINO-val és a Windows DirectML-sel. Az ONNX Runtime használatával kihasználhatja az éles üzemű optimalizálások, a tesztelés és a folyamatos fejlesztések előnyeit.

A nagy léptékű Microsoft-szolgáltatások, például a Bing, az Office és az Azure AI ONNX Futtatókörnyezetet használnak. Bár a teljesítménynövekedés számos tényezőtől függ, ezek a Microsoft-szolgáltatások az ONNX használatával átlagosan 2-szeres teljesítménynövekedést jelentenek a CPU-n. Az ONNX futtatókörnyezet az Azure Machine Learningben és más, gépi tanulási számítási feladatokat támogató Microsoft-termékekben fut, többek között a következőket:

Az ONNX-modellek beszerzésének módjai

Az ONNX-modellek többféleképpen is beszerezhetők:

Számos modellt jelölhet ONNX-ként, beleértve a képbesorolást, az objektumészlelést és a szövegfeldolgozási modelleket. Ha nem tudja sikeresen konvertálni a modellt, küldjön egy GitHub-problémát a használt konverter adattárába.

ONNX-modell üzembe helyezése az Azure-ban

Az ONNX-modellek üzembe helyezését, kezelését és monitorozását az Azure Machine Learningben végezheti el. Az ONNX Runtime standard MLOps-üzembehelyezési munkafolyamatával létrehozhat egy felhőben üzemeltetett REST-végpontot.

Python-csomagok ONNX-futtatókörnyezethez

A PROCESSZOR- és GPU ONNX-futtatókörnyezethez készült Python-csomagok PyPi.org érhetők el. A telepítés előtt mindenképpen tekintse át a rendszerkövetelményeket.

A PythonHOZ készült ONNX-futtatókörnyezet telepítéséhez használja az alábbi parancsok egyikét:

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

Az ONNX Runtime meghívásához a Python-szkriptben használja a következő kódot:

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

A modellt kísérő dokumentáció általában a modell használatához szükséges bemeneteket és kimeneteket ismerteti. A modell megtekintéséhez egy vizualizációs eszközt, például a Netront is használhatja.

Az ONNX Futtatókörnyezet lehetővé teszi a modell metaadatainak, bemeneteinek és kimeneteinek lekérdezését az alábbiak szerint:

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

Ha következtetést szeretne végrehajtani a modellen, használja run és adja meg a visszaadni kívánt kimenetek listáját, valamint a bemeneti értékek térképét. Ha az összes kimenetet szeretné, hagyja üresen a kimeneti listát. Az eredmény a kimenetek listája.

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

A teljes ONNX Runtime API-referenciaért tekintse meg a Python API dokumentációját.