ONNX és Azure Machine Tanulás

Megtudhatja, hogyan segíthet az Open Neural Network Exchange (ONNX) használata a gépi tanulási modell következtetésének optimalizálásában. Az inferencia vagy a modell pontozása egy üzembe helyezett modell használatának folyamata, amely előrejelzéseket hoz létre az éles adatokon.

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 vagy peremhálózaton, CPU-n vagy GPU-n stb., 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 származó modellekkel rendelkezik, amelyeknek különböző platformokon kell futniuk. Időigényes lehet a keretrendszerek és hardverek különböző kombinációinak optimalizálása. Ezért hasznos megoldás, ha egyszer betanítja a modellt az előnyben részesített keretrendszerben, majd bárhol futtatja a felhőben vagy a peremhálózaton – ez a megoldás az ONNX helye.

Mi az AZ ONNX?

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. Számos keretrendszer modelljei, például a TensorFlow, a PyTorch, a scikit-learn, a Keras, a Chainer, az MXNet és a MATLAB exportálhatók vagy konvertálhatók szabványos ONNX formátumra. Miután a modellek ONNX formátumban vannak, különböző platformokon és eszközökön futtathatók.

Az ONNX Runtime egy nagy teljesítményű következtetési motor az ONNX-modellek éles környezetben való üzembe helyezéséhez. A felhőre és a peremhálózatra is optimalizálva van, és Linuxon, Windowson és Macen is működik. Bár az ONNX C++-ban van megírva, sok környezetben C, Python, C#, Java és JavaScript (Node.js) API-kkal is rendelkezik. 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ás, a tesztelés és a folyamatos fejlesztések előnyeit.

Az ONNX futtatókörnyezetet nagy léptékű Microsoft-szolgáltatások, például a Bingben, az Office-ban és az Azure AI-ben használják. Bár a teljesítménynövekedés számos tényezőtől függ, ezek a Microsoft-szolgáltatások átlagosan 2-szeres teljesítménynövekedést jelentenek a CPU-n. Az Azure Machine Tanulás-szolgáltatások mellett az ONNX Runtime más termékekben is fut, amelyek támogatják a gépi Tanulás számítási feladatokat, beleértve a következőket:

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

ONNX-modellek beszerzése

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

  • Új ONNX-modell betanítása az Azure Machine Tanulás (a cikk példák szakaszában leírtak szerint) vagy automatizált gépi tanulási képességek használatával.
  • Meglévő modell átalakítása másik formátumból ONNX formátumba az oktatóanyagokban látható módon.
  • 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 modell, beleértve a képosztályozást, az objektumészlelést és a szövegfeldolgozási modelleket, ONNX-modellként is megjeleníthető. Ha olyan modelltel kapcsolatos probléma merül fel, amely nem konvertálható sikeresen, küldjön egy GitHub-problémát a használt konverter adattárában. A probléma megoldásáig használhatja a meglévő modellformátumot.

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

Az Azure Machine Tanulás lehetővé teszi az ONNX-modellek üzembe helyezését, kezelését és monitorozását. A standard MLOps üzembehelyezési munkafolyamat és az ONNX Runtime használatával létrehozhat egy, a felhőben üzemeltetett REST-végpontot. Gyakorlati példákért tekintse meg ezeket a Jupyter-jegyzetfüzeteket.

Az ONNX-futtatókörnyezet telepítése és használata a Pythonnal

Az ONNX-futtatókörnyezethez készült Python-csomagok PyPi.org (CPU és GPU) érhetőek 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-futtatókörnyezet meghívásához használja a következőt a Python-szkriptben:

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 is 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 át a visszaadni kívánt kimenetek listáját (vagy hagyja üresen a listát, ha az összeset szeretné), valamint a bemeneti értékek térképé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 Python API-referenciaért tekintse meg az ONNX runtime referencia-dokumentációt.

Példák

További információ az ONNX-ről vagy a projekthez való hozzájárulásról:

További információ az ONNX-futtatókörnyezetről vagy a projekthez való hozzájárulásról: