ONNX dan Azure Pembelajaran Mesin

Pelajari bagaimana penggunaan 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 berbagai jenis platform seperti cloud atau edge, CPU atau GPU, dan sebagainya, karena setiap platform memiliki kemampuan dan karakteristik yang berbeda. Kompleksitas meningkat jika Anda memiliki model dari berbagai kerangka kerja yang perlu dijalankan pada platform yang berbeda. Ini bisa memakan waktu untuk mengoptimalkan semua kombinasi kerangka kerja dan perangkat keras yang berbeda. Oleh karena itu, solusi yang berguna adalah melatih model Anda sekali dalam kerangka kerja pilihan Anda dan kemudian menjalankannya di mana saja di cloud atau tepi —solusi ini adalah tempat ONNX masuk.

Apa itu ONNX?

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, dan MATLAB dapat diekspor atau dikonversi ke format ONNX standar. Setelah model dalam format ONNX, model dapat dijalankan di 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. Meskipun ONNX ditulis dalam C++, ONNX juga memiliki API C, Python, C#, Java, dan JavaScript (Node.js) untuk penggunaan di banyak lingkungan. 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 Runtime ONNX, Anda dapat memperoleh keuntungan dari pengoptimalan, pengujian, dan peningkatan yang berkelanjutan.

OnNX Runtime digunakan dalam layanan Microsoft skala tinggi seperti Bing, Office, dan Azure AI. Meskipun perolehan performa bergantung pada banyak faktor, layanan Microsoft ini melaporkan 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:

Diagram alur ONNX memperlihatkan pelatihan, konverter, dan penyebaran.

Cara mendapatkan model ONNX

Anda dapat memperoleh model ONNX dengan beberapa cara:

  • Latih model ONNX baru di Azure Pembelajaran Mesin (seperti yang dijelaskan di bagian contoh artikel ini) atau dengan menggunakan kemampuan pembelajaran mesin otomatis.
  • Konversikan model yang ada dari format lain ke ONNX seperti yang ditunjukkan dalam tutorial ini.
  • Dapatkan model ONNX yang telah dilatih sebelumnya dari ONNX Model Zoo.
  • Hasilkan model ONNX yang disesuaikan dari layanan Azure AI Custom Vision.

Banyak model, termasuk klasifikasi gambar, deteksi objek, dan model pemrosesan teks dapat diwakili sebagai model ONNX. Jika Anda mengalami masalah dengan model yang tidak berhasil dikonversi, ajukan masalah GitHub di repositori pengonversi yang Anda gunakan. Anda dapat terus menggunakan format model yang ada hingga masalah ditangani.

Penyebaran model ONNX di Azure

Dengan Azure Machine Learning, Anda dapat menyebarkan, mengelola, dan memantau model ONNX Anda. Dengan menggunakan alur kerja penyebaran MLOps standar dan ONNX Runtime, Anda dapat membuat titik akhir REST yang dihosting di cloud. Untuk contoh langsung, lihat notebook Jupyter ini.

Penginstalan dan penggunaan ONNX Runtime dengan Python

Paket Python untuk ONNX Runtime tersedia di PyPi.org (CPU dan GPU). 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 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. ONNX Runtime juga 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 (atau biarkan daftar kosong jika Anda menginginkan 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

Pelajari selengkapnya tentang ONNX atau berkontribusi pada proyek:

Pelajari lebih lanjut tentang Runtime ONNX atau berkontribusi pada proyek: