Bagikan melalui


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.

Diagram alur ONNX memperlihatkan pelatihan, konverter, dan penyebaran.

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:

Cara untuk mendapatkan model ONNX

Anda dapat memperoleh model ONNX dengan beberapa cara:

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.