ONNX dan Azure Machine Learning: Membuat dan mempercepat model Azure Machine Learning
Pelajari bagaimana menggunakan Pertukaran Jaringan Neural Terbuka (ONNX) dapat membantu mengoptimalkan inferensi model pembelajaran mesin Anda. Inferensi, atau penilaian model, adalah fase di mana model yang disebarkan digunakan untuk prediksi, paling sering pada data produksi.
Mengoptimalkan model pembelajaran mesin untuk inferensi (atau penilaian model) sulit karena Anda perlu menyetel model dan pustaka inferensi untuk memaksimalkan kemampuan perangkat keras. Masalahnya menjadi sangat sulit jika Anda ingin mendapatkan performa optimal pada berbagai jenis platform (cloud/tepi, CPU/GPU, dll.), karena masing-masing memiliki kemampuan dan karakteristik yang berbeda. Kompleksitas meningkat jika Anda memiliki model dari berbagai kerangka kerja yang perlu dijalankan pada berbagai platform. Ini sangat memakan waktu untuk mengoptimalkan semua kombinasi kerangka kerja dan perangkat keras yang berbeda. Solusi untuk melatih sekali dalam kerangka kerja pilihan Anda dan berjalan di mana saja di cloud atau tepi diperlukan. Di sinilah ONNX bekerja.
Microsoft dan komunitas mitra membuat ONNX sebagai standar terbuka untuk mewakili model pembelajaran mesin. Model dari banyak kerangka kerja termasuk TensorFlow, PyTorch, SciKit-Learn, Keras, Chainer, MXNet, MATLAB, dan SparkML dapat diekspor atau dikonversi ke format ONNX standar. Setelah model dalam format ONNX, model dapat dijalankan pada berbagai platform dan perangkat.
Runtime ONNX adalah mesin inferensi dengan performa tinggi untuk menyebarkan model ONNX ke produksi. ONNX dioptimalkan untuk cloud dan tepi serta bekerja di Linux, Windows, dan Mac. Ditulis dalam C++, ONNX juga memiliki API C, Python, C#, Java, dan Javascript (Node.js) untuk penggunaan di berbagai lingkungan. Runtime ONNX mendukung model DNN dan Azure Machine Learning tradisional serta terintegrasi dengan akselerator pada perangkat keras yang berbeda seperti TensorRT pada GPU NVidia, OpenVINO pada prosesor Intel, DirectML pada Windows, dan banyak lagi. Dengan menggunakan Runtime ONNX, Anda dapat memperoleh keuntungan dari pengoptimalan, pengujian, dan peningkatan yang berkelanjutan.
Runtime ONNX digunakan dalam layanan Microsoft berskala tinggi seperti Bing, Office, dan Azure Cognitive Services. Peningkatan performa bergantung pada sejumlah faktor, namun layanan Microsoft ini telah mengalami peningkatan performa rata-rata 2x pada CPU. Selain Azure Machine Learning service, Runtime ONNX juga berjalan di produk lain yang mendukung beban kerja Azure Machine Learning, termasuk:
- Windows: runtime dibangun ke dalam Windows sebagai bagian dari Pembelajaran Mesin Windows dan berjalan di ratusan juta perangkat.
- Keluarga produk Azure SQL: Menjalankan penilaian asli pada data di Azure SQL Edge dan Azure SQL Managed Instance.
- ML.NET: Menjalankan model ONNX di ML.NET.
Dapatkan model ONNX
Anda dapat memperoleh model ONNX dengan beberapa cara:
- Latih model ONNX baru di Azure Machine Learning (lihat contoh di bagian bawah artikel ini) atau dengan menggunakan kemampuan Azure Machine Learning otomatis
- Mengonversi model yang ada dari format lain ke ONNX (lihat tutorial)
- Dapatkan model ONNX yang dilatih sebelumnya dari ONNX Model Zoo
- Buat model ONNX yang disesuaikan dari layanan Visual Kustom Azure
Banyak model termasuk klasifikasi gambar, deteksi objek, dan pemrosesan teks dapat diwakili sebagai model ONNX. Jika Anda mengalami masalah dengan model yang tidak dapat dikonversi dengan sukses, ajukan masalah di GitHub dari pengonversi masing-masing yang Anda gunakan. Anda bisa terus menggunakan model format yang sudah ada hingga masalah ini diatasi.
Sebarkan model ONNX di Azure
Dengan Azure Machine Learning, Anda dapat menyebarkan, mengelola, dan memantau model ONNX Anda. Dengan menggunakan alur kerja penyebaran standar dan Runtime ONNX, Anda dapat membuat titik akhir REST yang dihosting di cloud. Lihat contoh buku catatan Jupyter di akhir artikel ini untuk mencobanya sendiri.
Memasang dan menggunakan Runtime ONNX dengan Python
Paket Python untuk Runtime ONNX tersedia di PyPi.org (CPU, GPU). Baca persyaratan sistem sebelum penginstalan.
Untuk memasang Runtime ONNX untuk Python, gunakan salah satu perintah berikut:
pip install onnxruntime # CPU build
pip install onnxruntime-gpu # GPU build
Untuk memanggil Runtime ONNX di skrip Python Anda, gunakan:
import onnxruntime
session = onnxruntime.InferenceSession("path to model")
Dokumentasi yang menyertai model biasanya memberi tahu Anda input dan output untuk menggunakan model. Anda juga dapat menggunakan alat visualisasi seperti Netron untuk melihat model. Runtime ONNX juga memungkinkan Anda mengkueri metadata, input, dan output model:
session.get_modelmeta()
first_input_name = session.get_inputs()[0].name
first_output_name = session.get_outputs()[0].name
Untuk menyimpulkan model Anda, gunakan run
dan berikan daftar output yang ingin Anda kembalikan (biarkan kosong jika Anda ingin semuanya) dan peta nilai input. Hasilnya adalah daftar output.
results = session.run(["output1", "output2"], {
"input1": indata1, "input2": indata2})
results = session.run([], {"input1": indata1, "input2": indata2})
Untuk referensi API Python lengkap, lihat dokumen referensi Runtime ONNX.
Contoh
Lihat how-to-use-azureml/deployment/onnx untuk contoh buku catatan Python yang membuat dan menyebarkan model ONNX.
Pelajari cara menjalankan notebook dengan mengikuti artikel Menggunakan notebook Jupyter untuk menjelajahi layanan ini.
Sampel untuk penggunaan dalam bahasa lain dapat ditemukan di GitHub Runtime ONNX.
Info selengkapnya
Pelajari selengkapnya tentang ONNX atau berkontribusi pada proyek:
Pelajari lebih lanjut tentang Runtime ONNX atau berkontribusi pada proyek: