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 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:
- Windows. Az ONNX-futtatókörnyezet a Windows Machine Learning részeként van beépítve a Windowsba, és több száz millió eszközön fut.
- Azure SQL. Az Azure SQL Edge és a felügyelt Azure SQL-példány az ONNX használatával futtat natív pontozást az adatokon.
- ML.NET. Példa: Oktatóanyag: Objektumok észlelése ONNX használatával ML.NET.
Az ONNX-modellek beszerzésének módjai
Az ONNX-modellek többféleképpen is beszerezhetők:
- Új ONNX-modell betanítása az Azure Machine Learningben, vagy automatizált gépi tanulási képességek használata.
- Meglévő modell átalakítása másik formátumból ONNX formátumba. További információ: ONNX-oktatóanyagok.
- Szerezzen be egy előre betanított ONNX-modellt az ONNX Model Zoo-ból.
- Hozzon létre egy testreszabott ONNX-modellt az Azure AI Custom Vision szolgáltatásból.
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.