ONNX és Azure Machine Learning
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 Learning-szolgáltatások mellett az ONNX Runtime más, a Machine Learning számítási feladatokat támogató termékekben is fut, például:
- Windows: A 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-termékcsalád: Natív pontozás futtatása adatokon az Azure SQL Edge-ben és a felügyelt Azure SQL-példányban.
- ML.NET: ONNX-modellek futtatása ML.NET.
ONNX-modellek beszerzése
Az ONNX-modellek többféleképpen is beszerezhetők:
- Új ONNX-modell betanítása az Azure Machine Learningben (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 Learning segítségével üzembe helyezheti, kezelheti és figyelheti ONNX-modelljeit. 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
- A szolgáltatás megismerése Jupyter-notebookok használatával cikk útmutatását követve megtanulhatja, hogyan futtathat notebookokat.
- Az ONNX más nyelveken történő használatát bemutató mintákért tekintse meg az ONNX Runtime GitHubot.
Kapcsolódó tartalom
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: