ONNX dan Azure Pembelajaran Mesin
Artikel ini menjelaskan bagaimana Open Neural Network Exchange (ONNX) dapat membantu mengoptimalkan inferensi model pembelajaran mesin Anda. Penilaian inferensi atau model adalah proses penggunaan model yang disebarkan untuk menghasilkan prediksi pada data produksi.
Mengoptimalkan model pembelajaran mesin untuk inferensi mengharuskan Anda menyetel model dan pustaka inferensi untuk memanfaatkan kemampuan perangkat keras secara maksimal. Tugas ini menjadi kompleks jika Anda ingin mendapatkan performa optimal pada platform yang berbeda seperti cloud, edge, CPU, atau GPU, karena setiap platform memiliki kemampuan dan karakteristik yang berbeda. Kompleksitas meningkat jika Anda perlu menjalankan model dari berbagai kerangka kerja pada platform yang berbeda. Ini bisa memakan waktu untuk mengoptimalkan semua kombinasi kerangka kerja dan perangkat keras yang berbeda.
Solusi yang berguna adalah melatih model Anda satu kali dalam kerangka kerja pilihan Anda, lalu mengekspor atau mengonversinya ke ONNX sehingga dapat berjalan di mana saja di cloud atau tepi. Microsoft dan komunitas mitra membuat ONNX sebagai standar terbuka untuk mewakili model pembelajaran mesin. Anda dapat mengekspor atau mengonversi model dari banyak kerangka kerja ke format ONNX standar. Kerangka kerja yang didukung termasuk TensorFlow, PyTorch, scikit-learn, Keras, Chainer, MXNet, dan MATLAB. Anda dapat menjalankan model dalam format ONNX di berbagai platform dan perangkat.
Diagram alur ONNX ini menunjukkan kerangka kerja dan opsi penyebaran yang tersedia.
Runtime ONNX
Runtime ONNX adalah mesin inferensi dengan performa tinggi untuk menyebarkan model ONNX ke produksi. OnNX Runtime dioptimalkan untuk cloud dan edge, dan berfungsi di Linux, Windows, dan macOS. ONNX ditulis dalam C++, tetapi juga memiliki API C, Python, C#, Java, dan JavaScript (Node.js) untuk digunakan di lingkungan tersebut.
ONNX Runtime mendukung jaringan neural mendalam (DNN) dan model pembelajaran mesin tradisional, dan terintegrasi dengan akselerator pada perangkat keras yang berbeda seperti TensorRT pada GPU Nvidia, OpenVINO pada prosesor Intel, dan DirectML di Windows. Dengan menggunakan ONNX Runtime, Anda dapat memperoleh manfaat dari pengoptimalan, pengujian, dan peningkatan tingkat produksi yang ekstensif.
Layanan Microsoft skala tinggi seperti Bing, Office, dan Azure AI menggunakan ONNX Runtime. Meskipun perolehan performa tergantung pada banyak faktor, layanan Microsoft ini melaporkan peningkatan performa rata-rata 2x pada CPU dengan menggunakan ONNX. Runtime ONNX berjalan di Azure Pembelajaran Mesin dan produk Microsoft lainnya yang mendukung beban kerja pembelajaran mesin, termasuk:
- Windows. Runtime ONNX dibangun ke dalam Windows sebagai bagian dari Windows Pembelajaran Mesin dan berjalan pada ratusan juta perangkat.
- Azure SQL. Azure SQL Edge dan Azure SQL Managed Instance menggunakan ONNX untuk menjalankan penilaian asli pada data.
- ML.NET. Misalnya, lihat Tutorial: Mendeteksi objek menggunakan ONNX di ML.NET.
Cara untuk mendapatkan model ONNX
Anda dapat memperoleh model ONNX dengan beberapa cara:
- Latih model ONNX baru di Azure Pembelajaran Mesin atau gunakan kemampuan pembelajaran mesin otomatis.
- Mengonversi model yang ada dari format lain ke ONNX. Untuk informasi selengkapnya, lihat Tutorial ONNX.
- Dapatkan model ONNX yang telah dilatih sebelumnya dari ONNX Model Zoo.
- Hasilkan model ONNX yang disesuaikan dari layanan Azure AI Custom Vision.
Anda dapat mewakili banyak model sebagai ONNX, termasuk klasifikasi gambar, deteksi objek, dan model pemrosesan teks. Jika Anda tidak berhasil mengonversi model, ajukan masalah GitHub di repositori pengonversi yang Anda gunakan.
Penyebaran model ONNX di Azure
Anda dapat menyebarkan, mengelola, dan memantau model ONNX Anda di Azure Pembelajaran Mesin. Dengan menggunakan alur kerja penyebaran MLOps standar dengan ONNX Runtime, Anda dapat membuat titik akhir REST yang dihosting di cloud.
Paket Python untuk ONNX Runtime
Paket Python untuk CPU dan GPU ONNX Runtime tersedia di PyPi.org. Pastikan untuk meninjau 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 ONNX Runtime di skrip Python Anda, gunakan kode berikut:
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.
ONNX Runtime memungkinkan Anda mengkueri metadata model, input, dan output, sebagai berikut:
session.get_modelmeta()
first_input_name = session.get_inputs()[0].name
first_output_name = session.get_outputs()[0].name
Untuk melakukan inferensi pada model Anda, gunakan run
dan teruskan dalam daftar output yang ingin Anda kembalikan dan peta nilai input. Biarkan daftar output kosong jika Anda menginginkan semua output. Hasilnya adalah daftar output.
results = session.run(["output1", "output2"], {
"input1": indata1, "input2": indata2})
results = session.run([], {"input1": indata1, "input2": indata2})
Untuk referensi API Runtime ONNX lengkap, lihat dokumentasi API Python.