ONNX ve Azure Machine Learning

Açık Sinir Ağı Değişimi(ONNX) kullanımının makine öğrenmesi modelinizin çıkarımını iyileştirmeye nasıl yardımcı olabileceğini öğrenin. Çıkarım veya model puanlaması, üretim verileri üzerinde tahminler oluşturmak için dağıtılan modeli kullanma işlemidir.

Çıkarım için makine öğrenmesi modellerini iyileştirmek için, donanım özelliklerinden en iyi şekilde yararlanmanız için modeli ve çıkarım kitaplığını ayarlamanız gerekir. Her platformun farklı özellikleri ve özellikleri olduğundan bulut veya uç, CPU veya GPU gibi farklı platform türlerinde en iyi performansı elde etmek istiyorsanız bu görev karmaşık hale gelir. Farklı platformlarda çalışması gereken çeşitli çerçevelerden modelleriniz varsa karmaşıklık artar. Çerçevelerin ve donanımın tüm farklı bileşimlerini iyileştirmek zaman alabilir. Bu nedenle, modelinizi tercih ettiğiniz çerçevede bir kez eğitmek ve ardından bulutta veya uçta herhangi bir yerde çalıştırmak yararlı bir çözümdür; bu çözüm ONNX'in devreye alındığı yerdir.

ONNX nedir?

Microsoft ve iş ortaklarından oluşan bir topluluk, makine öğrenmesi modellerini temsil etmek için açık bir standart olarak ONNX oluşturdu. TensorFlow, PyTorch, scikit-learn, Keras, Chainer, MXNet ve MATLAB gibi birçok çerçeveden modeller dışarı aktarılabilir veya standart ONNX biçimine dönüştürülebilir. Modeller ONNX biçiminde olduktan sonra çeşitli platformlarda ve cihazlarda çalıştırılabilir.

ONNX Çalışma Zamanı , ONNX modellerini üretime dağıtmaya yönelik yüksek performanslı bir çıkarım altyapısıdır. Hem bulut hem de uç için iyileştirilmiştir ve Linux, Windows ve Mac üzerinde çalışır. ONNX, C++ dilinde yazılmış olsa da, birçok ortamda kullanım için C, Python, C#, Java ve JavaScript (Node.js) API'lerine de sahiptir. ONNX Runtime hem derin sinir ağlarını (DNN) hem de geleneksel makine öğrenmesi modellerini destekler ve Nvidia GPU'larında TensorRT, Intel işlemcilerde OpenVINO ve Windows üzerinde DirectML gibi farklı donanımlarda hızlandırıcılarla tümleşir. ONNX Çalışma Zamanı'nı kullanarak, kapsamlı üretim sınıfı iyileştirmelerinden, testlerden ve devam eden iyileştirmelerden yararlanabilirsiniz.

ONNX Runtime, Bing, Office ve Azure AI gibi yüksek ölçekli Microsoft hizmetleri kullanılır. Performans artışları birçok faktöre bağlı olsa da, bu Microsoft hizmetleri CPU'da ortalama 2 kat performans artışı rapor eder. ONNX Runtime, Azure Machine Learning hizmetlerine ek olarak Machine Learning iş yüklerini destekleyen diğer ürünlerde de çalışır, örneğin:

  • Windows: Çalışma zamanı, Windows Machine Learning'in bir parçası olarak Windows'ta yerleşiktir ve yüz milyonlarca cihazda çalışır.
  • Azure SQL ürün ailesi: Azure SQL Edge ve Azure SQL Yönetilen Örneği verilerinde yerel puanlama çalıştırın.
  • ML.NET: ML.NET ONNX modellerini çalıştırın.

Eğitimi, dönüştürücüleri ve dağıtımı gösteren ONNX akış diyagramı.

ONNX modellerini edinme

ONNX modellerini çeşitli yollarla edinebilirsiniz:

Görüntü sınıflandırması, nesne algılama ve metin işleme modelleri dahil olmak üzere birçok model ONNX modelleri olarak temsil edilebilir. Başarıyla dönüştürülemez bir modelle ilgili bir sorunla karşılaşırsanız kullandığınız dönüştürücü deposunda bir GitHub sorunu oluşturun. Sorun giderilene kadar mevcut model biçiminizi kullanmaya devam edebilirsiniz.

Azure'da ONNX modeli dağıtımı

Azure Machine Learning ile ONNX modellerinizi dağıtabilir, yönetebilir ve izleyebilirsiniz. Standart MLOps dağıtım iş akışını ve ONNX Çalışma Zamanı'nı kullanarak bulutta barındırılan bir REST uç noktası oluşturabilirsiniz. Uygulamalı örnekler için bu Jupyter not defterlerine bakın.

Python ile ONNX Çalışma Zamanı'nı yükleme ve kullanma

ONNX Çalışma Zamanı için Python paketleri PyPi.org (CPU ve GPU) üzerinde kullanılabilir. Yüklemeden önce sistem gereksinimlerini gözden geçirmeyi unutmayın.

Python için ONNX Çalışma Zamanı'nı yüklemek için aşağıdaki komutlardan birini kullanın:

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

Python betiğinizde ONNX Çalışma Zamanı'nı çağırmak için şunu kullanın:

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

Modele eşlik eden belgeler genellikle modeli kullanmaya yönelik girişleri ve çıkışları bildirir. Modeli görüntülemek için Netron gibi bir görselleştirme aracı da kullanabilirsiniz. ONNX Çalışma Zamanı model meta verilerini, girişlerini ve çıkışlarını aşağıdaki gibi sorgulamanıza da olanak tanır:

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

Modelinizde çıkarım yapmak için, döndürülmesini istediğiniz çıkış listesini kullanın run ve geçirin (veya tümünü istiyorsanız listeyi boş bırakın) ve giriş değerlerinin bir eşlemesini kullanın. Sonuç, çıkışların listesidir.

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

Python API başvurusunun tamamı için ONNX Çalışma Zamanı başvuru belgelerine bakın.

Örnekler

ONNX hakkında daha fazla bilgi edinin veya projeye katkıda bulunun:

ONNX Çalışma Zamanı hakkında daha fazla bilgi edinin veya projeye katkıda bulunun: