ONNX ve Azure Machine Learning
Bu makalede, Açık Sinir Ağı Değişimi'nin (ONNX) makine öğrenmesi modellerinizin çıkarımını iyileştirmeye nasıl yardımcı olabileceği açıklanır. Çı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ştirme, donanım özelliklerinden en iyi şekilde yararlanmanız için modeli ve çıkarım kitaplığını ayarlamanızı gerektirir. Her platformun farklı özellikleri ve özellikleri olduğundan bulut, uç, CPU veya GPU gibi farklı platformlarda en iyi performansı elde etmek istiyorsanız bu görev karmaşık hale gelir. Farklı platformlarda çeşitli çerçevelerden modelleri çalıştırmanız gerekiyorsa karmaşıklık artar. Çerçevelerin ve donanımın tüm farklı bileşimlerini iyileştirmek zaman alabilir.
Yararlı bir çözüm, modelinizi tercih ettiğiniz çerçevede bir kez eğitmek ve ardından bulutta veya uçta herhangi bir yerde çalışabilmesi için modeli dışarı aktarmak veya ONNX'e dönüştürmektir. Microsoft ve iş ortaklarından oluşan bir topluluk, makine öğrenmesi modellerini temsil etmek için açık bir standart olarak ONNX oluşturdu. Modelleri birçok çerçeveden standart ONNX biçimine dışarı aktarabilir veya dönüştürebilirsiniz. Desteklenen çerçeveler TensorFlow, PyTorch, scikit-learn, Keras, Chainer, MXNet ve MATLAB'dir. Modelleri çeşitli platformlarda ve cihazlarda ONNX biçiminde çalıştırabilirsiniz.
Bu ONNX akış diyagramı kullanılabilir çerçeveleri ve dağıtım seçeneklerini gösterir.
ONNX Çalışma Zamanı
ONNX Çalışma Zamanı , ONNX modellerini üretime dağıtmaya yönelik yüksek performanslı bir çıkarım altyapısıdır. ONNX Çalışma Zamanı hem bulut hem de uç için iyileştirilmiştir ve Linux, Windows ve macOS üzerinde çalışır. ONNX, C++ dilinde yazılmıştır, ancak bu ortamlarda kullanılacak 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ştirmeleri, test ve devam eden iyileştirmelerden yararlanabilirsiniz.
Bing, Office ve Azure AI gibi yüksek ölçekli Microsoft hizmetleri ONNX Çalışma Zamanı'nı kullanır. Performans artışları birçok faktöre bağlı olsa da, bu Microsoft hizmetleri ONNX kullanarak CPU'da ortalama 2 kat performans artışı rapor eder. ONNX Runtime, Azure Machine Learning'de ve aşağıdakiler dahil olmak üzere makine öğrenmesi iş yüklerini destekleyen diğer Microsoft ürünlerinde çalışır:
- Windows'a bakın. ONNX çalışma zamanı, Windows Machine Learning'in bir parçası olarak Windows'ta yerleşiktir ve yüz milyonlarca cihazda çalışır.
- Azure SQL. Azure SQL Edge ve Azure SQL Yönetilen Örneği verilerde yerel puanlama çalıştırmak için ONNX kullanır.
- ML.NET. Örnek için bkz . Öğretici: ML.NET'da ONNX kullanarak nesneleri algılama.
ONNX modellerini edinme yolları
ONNX modellerini çeşitli yollarla edinebilirsiniz:
- Azure Machine Learning'de yeni bir ONNX modeli eğitin veya otomatik makine öğrenmesi özelliklerini kullanın.
- Var olan bir modeli başka bir biçimden ONNX'e dönüştürün. Daha fazla bilgi için bkz . ONNX Öğreticileri.
- ONNX Model Hayvanat Bahçesi'nden önceden eğitilmiş bir ONNX modeli alın.
- Azure AI Özel Görüntü İşleme hizmetinden özelleştirilmiş bir ONNX modeli oluşturun.
Görüntü sınıflandırma, nesne algılama ve metin işleme modelleri dahil olmak üzere birçok modeli ONNX olarak temsil edebilirsiniz. Modelinizi başarıyla dönüştüremiyorsanız kullandığınız dönüştürücü deposunda bir GitHub sorunu oluşturun.
Azure'da ONNX modeli dağıtımı
Azure Machine Learning'de ONNX modellerinizi dağıtabilir, yönetebilir ve izleyebilirsiniz. ONNX Runtime ile standart mlOps dağıtım iş akışını kullanarak bulutta barındırılan bir REST uç noktası oluşturabilirsiniz.
ONNX Çalışma Zamanı için Python paketleri
CPU ve GPU ONNX Çalışma Zamanı için Python paketleri PyPi.org'da 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 aşağıdaki kodu 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ızı sağlar:
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ışların listesini ve giriş değerlerinin bir haritasını kullanın run
ve geçirin. Tüm çıkışları istiyorsanız çıkış listesini boş bırakın. Sonuç, çıkışların listesidir.
results = session.run(["output1", "output2"], {
"input1": indata1, "input2": indata2})
results = session.run([], {"input1": indata1, "input2": indata2})
ONNX Çalışma Zamanı API'sinin tam başvurusu için Python API belgelerine bakın.