Edukacja ONNX i Azure Machine

Dowiedz się, jak korzystanie z programu Open Neural Network Exchange (ONNX) może pomóc w optymalizacji wnioskowania modelu uczenia maszynowego. Wnioskowanie lub ocenianie modelu to proces używania wdrożonego modelu do generowania przewidywań na danych produkcyjnych.

Optymalizacja modeli uczenia maszynowego na potrzeby wnioskowania wymaga dostosowania modelu i biblioteki wnioskowania, aby jak najlepiej wykorzystać możliwości sprzętowe. To zadanie staje się złożone, jeśli chcesz uzyskać optymalną wydajność na różnych platformach, takich jak chmura, procesor CPU lub procesor GPU itd., ponieważ każda platforma ma różne możliwości i cechy. Złożoność zwiększa się, jeśli masz modele z różnych platform, które muszą być uruchamiane na różnych platformach. Może to być czasochłonne, aby zoptymalizować wszystkie różne kombinacje struktur i sprzętu. W związku z tym przydatne rozwiązanie polega na wytrenowaniu modelu raz w preferowanej strukturze, a następnie uruchomieniu go w dowolnym miejscu w chmurze lub brzegu — to rozwiązanie jest miejscem, w którym jest dostępny system ONNX.

Co to jest ONNX?

Firma Microsoft i społeczność partnerów stworzyły program ONNX jako otwarty standard reprezentujący modele uczenia maszynowego. Modele z wielu platform , w tym TensorFlow, PyTorch, scikit-learn, Keras, Chainer, MXNet i MATLAB można eksportować lub konwertować na standardowy format ONNX. Gdy modele są w formacie ONNX, mogą być uruchamiane na różnych platformach i urządzeniach.

Środowisko uruchomieniowe ONNX to aparat wnioskowania o wysokiej wydajności do wdrażania modeli ONNX w środowisku produkcyjnym. Jest ona zoptymalizowana pod kątem chmury i krawędzi oraz działa w systemach Linux, Windows i Mac. Chociaż język ONNX jest napisany w języku C++, ma również interfejsy API języka C, Python, C#, Java i JavaScript (Node.js) do użycia w wielu środowiskach. Środowisko uruchomieniowe ONNX obsługuje zarówno głębokie sieci neuronowe (DNN) jak i tradycyjne modele uczenia maszynowego, a także integruje się z akceleratorami na innym sprzęcie, takim jak TensorRT w procesorach Nvidia GPU, OpenVINO na procesorach Intel i DirectML w systemie Windows. Korzystając ze środowiska uruchomieniowego ONNX, możesz korzystać z rozbudowanych optymalizacji klasy produkcyjnej, testowania i ciągłych ulepszeń.

Środowisko uruchomieniowe ONNX jest używane w usługi firmy Microsoft na dużą skalę, takich jak Bing, Office i Azure AI. Mimo że wzrost wydajności zależy od wielu czynników, te usługi firmy Microsoft zgłosić średni 2-krotny wzrost wydajności procesora CPU. Oprócz usług Azure Machine Edukacja środowisko uruchomieniowe ONNX działa również w innych produktach, które obsługują obciążenia Edukacja maszyny, w tym:

Diagram przepływu ONNX przedstawiający trenowanie, konwertery i wdrażanie.

Jak uzyskać modele ONNX

Modele ONNX można uzyskać na kilka sposobów:

  • Trenowanie nowego modelu ONNX w usłudze Azure Machine Edukacja (zgodnie z opisem w sekcji przykładów tego artykułu) lub przy użyciu funkcji zautomatyzowanego uczenia maszynowego.
  • Przekonwertuj istniejący model z innego formatu na ONNX, jak pokazano w tych samouczkach.
  • Uzyskaj wstępnie wytrenowany model ONNX z zoo modelu ONNX.
  • Wygeneruj dostosowany model ONNX z usługi Azure AI Custom Vision.

Wiele modeli, w tym klasyfikacja obrazów, wykrywanie obiektów i modele przetwarzania tekstu, mogą być reprezentowane jako modele ONNX. Jeśli wystąpi problem z modelem, którego nie można pomyślnie przekonwertować, zgłoś problem z usługą GitHub w repozytorium użytego konwertera. Możesz nadal używać istniejącego formatu modelu, dopóki problem nie zostanie rozwiązany.

Wdrażanie modelu ONNX na platformie Azure

Za pomocą usługi Azure Machine Edukacja można wdrażać modele ONNX, zarządzać nimi i monitorować je. Korzystając ze standardowego przepływu pracy wdrażania metodyki MLOps i środowiska uruchomieniowego ONNX, możesz utworzyć punkt końcowy REST hostowany w chmurze. Aby zapoznać się z przykładami praktycznymi, zobacz te notesy Jupyter.

Instalowanie i używanie środowiska uruchomieniowego ONNX w języku Python

Pakiety języka Python dla środowiska uruchomieniowego ONNX są dostępne na PyPi.org (procesor CPU i procesor GPU). Przed instalacją zapoznaj się z wymaganiami systemowym.

Aby zainstalować środowisko uruchomieniowe ONNX dla języka Python, użyj jednego z następujących poleceń:

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

Aby wywołać środowisko uruchomieniowe ONNX w skryscie języka Python, użyj:

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

Dokumentacja dołączona do modelu zwykle informuje o danych wejściowych i wyjściowych dotyczących korzystania z modelu. Możesz również użyć narzędzia do wizualizacji, takiego jak Netron , aby wyświetlić model. Środowisko uruchomieniowe ONNX umożliwia również wykonywanie zapytań dotyczących metadanych, danych wejściowych i wyjściowych modelu w następujący sposób:

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

Aby przeprowadzić wnioskowanie w modelu, użyj run i przekaż listę danych wyjściowych, które mają zostać zwrócone (lub pozostaw listę pustą, jeśli chcesz ich wszystkich) i mapę wartości wejściowych. Wynik jest listą danych wyjściowych.

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

Aby uzyskać pełną dokumentację interfejsu API języka Python, zobacz dokumentację środowiska uruchomieniowego ONNX.

Przykłady

Dowiedz się więcej o ONNX lub współtworzeniu projektu:

Dowiedz się więcej o środowisku uruchomieniowym ONNX lub współtworzeniu projektu: