Menyebarkan model pembelajaran mesin di lingkungan produksi

Artikel ini menjelaskan praktik terbaik untuk menyebarkan model pembelajaran mesin di lingkungan produksi dengan menggunakan Azure Pembelajaran Mesin. Menyebarkan model pembelajaran mesin dalam produksi penting bagi organisasi yang menggunakan AI untuk meningkatkan operasi mereka. Ini bisa menjadi proses yang kompleks, tetapi artikel ini membantu Anda memahami langkah-langkahnya.

Pertimbangan arsitektur

  • Pilih metode penyebaran yang tepat. Setiap metode penyebaran memiliki kelebihan dan kekurangan. Penting untuk memilih yang paling sesuai dengan kebutuhan organisasi Anda. Ada dua metode penyebaran utama:

    • Inferensi real time (online) memproses data input seperti yang diterima, sering kali dengan persyaratan latensi rendah. Latensi rendah penting untuk aplikasi yang memerlukan respons segera, seperti deteksi penipuan, pengenalan ucapan, atau sistem rekomendasi. Inferensi real time lebih kompleks dan mahal untuk diimplementasikan daripada inferensi batch karena membutuhkan infrastruktur yang lebih cepat dan lebih andal. Komputasi yang mendasari untuk inferensi real-time biasanya berjalan terus menerus ke permintaan layanan lebih cepat.

    • Inferensi batch (offline) memproses batch besar data input sekaligus daripada memproses setiap titik data input satu per satu secara real time. Inferensi batch sangat cocok untuk skenario volume data besar yang membutuhkan pemrosesan yang efisien tetapi waktu respons tidak penting. Misalnya, Anda dapat menggunakan inferensi batch untuk memproses himpunan data gambar yang besar, dan model pembelajaran mesin membuat prediksi pada semua gambar sekaligus. Inferensi batch lebih murah dan lebih efisien daripada inferensi real-time. Komputasi yang mendasari untuk inferensi batch biasanya hanya berjalan selama pekerjaan batch.

    Pembelajaran Mesin menggunakan titik akhir untuk menyebarkan model dalam skenario real time dan batch. Titik akhir menyediakan antarmuka terpadu untuk menjalankan dan mengelola penyebaran model di seluruh jenis komputasi. Titik akhir online terkelola melayani, menskalakan, mengamankan, dan memantau model pembelajaran mesin Anda untuk inferensi.

    Untuk informasi selengkapnya, lihat bagian berikut di artikel ini, Metode penyebaran.

  • Pastikan konsistensi. Penting untuk menyebarkan model Anda secara konsisten di seluruh lingkungan, seperti pengembangan, penahapan, dan produksi. Gunakan teknologi kontainerisasi atau virtualisasi, seperti lingkungan Pembelajaran Mesin, untuk memberikan konsistensi dan untuk merangkum lingkungan Anda.

  • Memantau performa. Setelah model Anda disebarkan ke produksi, Anda harus melacak metrik, seperti akurasi, latensi, dan throughput, dan menyiapkan pemberitahuan untuk memberi tahu Anda saat performa berada di bawah tingkat yang dapat diterima. Gunakan Application Insights dan kemampuan pemantauan bawaan titik akhir terkelola untuk melihat metrik dan membuat pemberitahuan.

  • Menerapkan langkah-langkah keamanan. Lindungi data dan sistem Anda. Anda dapat menyiapkan autentikasi dan kontrol akses, mengenkripsi data saat transit dan tidak aktif, menggunakan keamanan jaringan, dan memantau aktivitas yang mencurigakan.

  • Buat paket untuk pembaruan. Model pembelajaran mesin memerlukan pembaruan saat data baru dan algoritma baru tersedia. Penting untuk membuat proses untuk menguji dan memvalidasi model yang diperbarui sebelum menyebarkannya dalam produksi. Penyebaran biru/hijau adalah strategi umum yang memperbarui model pembelajaran mesin dalam produksi. Dengan penyebaran biru/hijau, Anda dapat memperbarui model ke lingkungan baru, mengujinya, lalu beralih ke model baru setelah divalidasi. Penyebaran biru/hijau memastikan bahwa potensi masalah dengan model yang diperbarui tidak memengaruhi pelanggan Anda. Untuk informasi selengkapnya, lihat Penyebaran biru/hijau asli.

Metode penerapan

Pertimbangkan pertanyaan berikut untuk mengevaluasi model Anda, membandingkan dua metode penyebaran, dan pilih metode yang sesuai dengan model Anda:

  • Seberapa sering prediksi harus dibuat?
  • Seberapa cepat Anda membutuhkan hasilnya?
  • Apakah prediksi disimpan atau digunakan segera?
  • Haruskah prediksi dihasilkan secara individual, dalam batch kecil, atau dalam batch besar?
  • Apakah latensi diharapkan dari model?
  • Berapa banyak daya komputasi yang perlu dijalankan model?
  • Apakah ada implikasi operasional dan biaya untuk memelihara model?
  • Bagaimana prediksi dipicu? Apakah berbasis peristiwa atau terjadwal?

Lihat pohon keputusan berikut untuk menentukan model penyebaran mana yang paling sesuai dengan kasus penggunaan Anda:

A diagram of the real-time inference and batch inference decision tree.

Inferensi batch

Inferensi batch adalah proses sederhana yang memungkinkan model berjalan dalam interval waktu atau berdasarkan pemicu. Dengan inferensi batch, aplikasi bisnis dapat menyimpan prediksi.

Pertimbangkan praktik terbaik berikut untuk inferensi batch:

  • Jalankan operasi batch dengan menggunakan API. Gunakan titik akhir batch untuk membuat titik akhir HTTPS tahan lama yang memicu pekerjaan penilaian batch untuk alur data terjadwal atau berbasis peristiwa. API dapat diintegrasikan dengan platform orkestrasi data apa pun yang mendukung pemanggilan REST API. Untuk informasi selengkapnya, lihat poin poin integrasi Batch di bagian ini dan Menyebarkan model untuk penilaian di titik akhir batch.

  • Opsi komputasi. Proses inferensi batch biasanya tidak berjalan terus menerus, sehingga bermanfaat untuk memulai, menghentikan, dan menskalakan kluster yang dapat digunakan kembali secara otomatis yang dapat menangani berbagai beban kerja. Model yang berbeda sering memerlukan lingkungan yang berbeda. Solusi Anda perlu menyebarkan lingkungan tertentu dan menghapusnya saat inferensi selesai. Automation membuat komputasi tersedia untuk model berikutnya. Untuk mengurangi biaya, gunakan komputer virtual berprioritas rendah untuk simpul komputasi Anda.

    Penting

    Ukuran simpul komputasi penting. Jika simpul terlalu kecil, pekerjaan inferensi batch membutuhkan waktu lebih lama. Jika node terlalu besar, pekerjaan lebih mahal. Uji dan pantau simpul komputasi untuk menentukan ukuran yang tepat untuk model Anda.

  • Pertimbangkan kebutuhan skalabilitas. Untuk peningkatan performa, Pembelajaran Mesin mendukung fitur yang memungkinkan pemrosesan yang dapat diskalakan. Jumlah simpul komputasi dan parameter konkurensi maksimum ditentukan selama penyebaran titik akhir batch di Pembelajaran Mesin. Anda dapat mengambil alih parameter untuk setiap pekerjaan, yang memberikan fleksibilitas runtime pelanggan dan paralelisme di luar kotak. Fitur-fitur ini berfungsi dengan inferensi tabular dan berbasis file.

  • Tantangan inferensi batch. Inferensi batch adalah cara yang lebih sederhana untuk menggunakan dan menyebarkan model Anda dalam produksi, tetapi menghadirkan serangkaian tantangannya sendiri.

    • Tergantung pada frekuensi inferensi berjalan, prediksi yang dihasilkan mungkin tidak relevan pada saat diakses.

    • Menyebarkan ke banyak wilayah dan merancang solusi untuk ketersediaan tinggi bukan masalah penting dalam skenario inferensi batch karena model tidak disebarkan secara regional. Tetapi penyimpanan data mungkin perlu disebarkan dengan strategi ketersediaan tinggi di banyak lokasi. Penyebaran harus mengikuti desain dan strategi ketersediaan tinggi aplikasi.

    • Data yang dihasilkan selama inferensi batch mungkin gagal sebagian. Misalnya, jika alur terjadwal memicu pekerjaan inferensi batch dan alur gagal, data yang dihasilkan oleh pekerjaan inferensi batch mungkin tidak lengkap. Restart parsial adalah masalah umum dengan inferensi batch. Salah satu solusinya adalah menggunakan area penahapan untuk data, dan hanya memindahkan data ke tujuan akhir setelah pekerjaan inferensi batch berhasil diselesaikan. Solusi lain adalah mempertahankan rekaman, atau transaksi, dari setiap file yang diproses, dan membandingkan rekaman tersebut dengan daftar file input untuk menghindari duplikasi. Metode ini menggabungkan logika dalam skrip penilaian. Solusi ini lebih kompleks, tetapi Anda dapat menyesuaikan logika kegagalan jika pekerjaan inferensi batch gagal.

  • Persyaratan keamanan. Gunakan autentikasi dan otorisasi untuk mengontrol akses ke titik akhir batch untuk keamanan yang ditingkatkan.

    • Titik akhir batch dengan perlindungan ingress hanya menerima permintaan penilaian dari host di dalam jaringan virtual. Ini tidak menerima permintaan penilaian dari internet publik. Titik akhir batch yang dibuat di ruang kerja berkemampuan tautan privat memiliki perlindungan ingress. Untuk informasi selengkapnya, lihat Isolasi jaringan di titik akhir batch.
    • Gunakan token Microsoft Entra untuk autentikasi.
    • Gunakan enkripsi SSL pada titik akhir, yang diaktifkan secara default untuk pemanggilan titik akhir Pembelajaran Mesin.
    • Titik akhir batch memastikan bahwa hanya pengguna yang berwenang yang dapat memanggil penyebaran batch, tetapi individu dapat menggunakan kredensial lain untuk membaca data yang mendasar. Untuk referensi penyimpanan data dan kredensial untuk mengaksesnya, lihat tabel akses data.
  • Integrasi batch. Pembelajaran Mesin titik akhir batch menggunakan API terbuka. Inferensi batch dapat diintegrasikan dengan layanan Azure lainnya, seperti Azure Data Factory, Azure Databricks, dan Azure Synapse Analytics untuk membentuk bagian dari alur data yang lebih besar. Misalnya, Anda dapat menggunakan:

    • Data Factory untuk mengatur proses inferensi batch.
    • Azure Databricks untuk menyiapkan data untuk inferensi batch.
    • Pembelajaran Mesin untuk menjalankan proses inferensi batch.
    • Azure Synapse Analytics untuk menyimpan prediksi berikutnya.

    Titik akhir batch mendukung ID Microsoft Entra untuk otorisasi. Permintaan ke API memerlukan autentikasi yang tepat. Layanan Azure, seperti Data Factory, dukungan menggunakan perwakilan layanan atau identitas terkelola untuk mengautentikasi terhadap titik akhir batch. Untuk informasi selengkapnya, lihat Menjalankan titik akhir batch dari Data Factory.

    Untuk memilih metode terbaik untuk pemrosesan input dan output batch, penting untuk memahami bagaimana data bergerak melalui tahapan alur data Anda. Anda dapat mengakses layanan data Azure secara langsung melalui skrip penilaian titik akhir batch dengan menggunakan SDK, tetapi menggunakan datastore terdaftar Pembelajaran Mesin lebih sederhana, aman, dan dapat diaudit. Untuk sumber data pihak ketiga, gunakan mesin pemrosesan data, seperti Data Factory, Azure Databricks, atau Azure Synapse Analytics, untuk menyiapkan data untuk inferensi batch dan menerapkan pemrosesan pasca-inferensi.

  • MLflow. Gunakan kerangka kerja sumber terbuka, MLflow, selama pengembangan model. Pembelajaran Mesin mendukung penyebaran model tanpa kode yang Anda buat dan log dengan MLflow. Saat Anda menyebarkan model MLflow ke titik akhir batch, Anda tidak perlu menunjukkan skrip penilaian atau lingkungan.

Inferensi waktu nyata

Inferensi real time adalah metode yang memungkinkan Anda memicu inferensi model kapan saja dan memberikan respons langsung. Gunakan metode ini untuk menganalisis data streaming atau data aplikasi interaktif.

Pertimbangkan praktik terbaik berikut untuk inferensi real-time:

  • Opsi komputasi. Cara terbaik untuk menerapkan inferensi real-time adalah dengan menyebarkan model yang berada di titik akhir online ke titik akhir online terkelola atau titik akhir online Kubernetes. Titik akhir online terkelola segera menyebarkan model pembelajaran mesin Anda dengan menggunakan mesin CPU atau GPU di Azure. Metode ini dapat diskalakan dan dikelola sepenuhnya. Titik akhir online Kubernetes menyebarkan model dan melayani titik akhir online pada kluster Kubernetes yang sepenuhnya dikonfigurasi dan dikelola. Untuk informasi selengkapnya, lihat Titik akhir online terkelola vs titik akhir online Kubernetes.

  • Penyebaran multiregional dan ketersediaan tinggi. Penyebaran regional dan arsitektur ketersediaan tinggi adalah contoh skenario inferensi real time karena latensi dan performa model sangat penting. Untuk mengurangi latensi dalam penyebaran multiregional, temukan model sedekat mungkin dengan titik konsumsi. Untuk model dan infrastruktur pendukung, ikuti prinsip dan strategi ketersediaan tinggi dan pemulihan bencana bisnis.

  • Tantangan inferensi real time.

    • Inferensi real time lebih kompleks karena latensi dan persyaratan performa. Sistem real time sederhana menerima input melalui permintaan HTTP dan mengembalikan prediksi. Tetapi sistem yang kompleks mungkin perlu merespons dalam 100 milidetik atau kurang. Selama waktu itu, ia mengambil data, melakukan rekayasa fitur, melakukan inferensi, memvalidasi dan menyimpan hasil model, menjalankan logika bisnis, dan mengembalikan hasilnya ke sistem atau aplikasi.
    • Membongkar rekayasa fitur ke penyimpanan data latensi rendah, layanan penembolokan, atau penyimpanan fitur khusus. Penyimpanan fitur adalah repositori terpusat yang memungkinkan ilmuwan data untuk menemukan dan berbagi fitur. Penyimpanan fitur memastikan bahwa kode yang sama yang digunakan untuk menghitung nilai fitur juga digunakan untuk pelatihan dan inferensi model.
  • Persyaratan keamanan. Untuk keamanan yang ditingkatkan, gunakan autentikasi dan otorisasi untuk mengontrol akses ke titik akhir online.

    • Titik akhir online dengan perlindungan ingress hanya menerima permintaan penilaian dari host di dalam jaringan virtual. Ini tidak menerima permintaan penilaian dari internet publik. Titik akhir online yang dibuat di ruang kerja berkemampuan tautan privat memiliki perlindungan ingress. Untuk informasi selengkapnya, lihat Menggunakan isolasi jaringan dengan titik akhir online terkelola.
    • Gunakan token Microsoft Entra untuk autentikasi sarana kontrol. Untuk operasi sarana data, pendekatan berbasis kunci dan berbasis token didukung. Pendekatan berbasis token lebih disukai karena token kedaluwarsa. Gunakan kontrol akses berbasis peran Azure (RBAC) untuk membatasi akses dan mengambil kunci atau token untuk titik akhir online.
    • Gunakan enkripsi SSL pada titik akhir, yang diaktifkan secara default untuk pemanggilan titik akhir Pembelajaran Mesin.
  • Integrasi real time. Integrasikan inferensi real time dengan layanan Azure lainnya dengan menggunakan SDK untuk bahasa yang berbeda dan memanggil titik akhir dengan menggunakan REST API. Anda dapat memanggil titik akhir online sebagai bagian dari kode aplikasi.

  • MLflow. Gunakan kerangka kerja sumber terbuka, MLflow, selama pengembangan model. Pembelajaran Mesin mendukung penyebaran model tanpa kode yang Anda buat dan log dengan MLflow. Saat Anda menyebarkan model MLflow ke titik akhir online, Anda tidak perlu menunjukkan skrip penilaian atau lingkungan.

  • peluncuran Brankas. Sebarkan pembaruan bertahap ke model pembelajaran mesin untuk memastikan bahwa model berfungsi seperti yang diharapkan. Gunakan strategi peluncuran Pembelajaran Mesin aman untuk menyebarkan model ke titik akhir, melakukan pengujian terhadap model, dan secara bertahap meningkatkan lalu lintas ke model baru. Manfaatkan lalu lintas cermin untuk mencerminkan persentase lalu lintas langsung ke model baru untuk validasi tambahan. Pencerminan lalu lintas, juga disebut bayangan, tidak mengubah hasil yang dikembalikan ke klien. Semua permintaan masih mengalir ke model asli. Untuk informasi selengkapnya, lihat peluncuran Brankas untuk titik akhir online.

Pertimbangan lain

Ingatlah pertimbangan ini saat Anda menyebarkan model pembelajaran mesin di lingkungan produksi.

ONNX

Untuk mengoptimalkan inferensi model pembelajaran mesin Anda, gunakan Open Neural Network Exchange (ONNX). Ini bisa menjadi tantangan untuk sepenuhnya menggunakan kemampuan perangkat keras ketika Anda mengoptimalkan model, terutama ketika Anda menggunakan platform yang berbeda (misalnya, cloud/edge atau CPU/GPU). Anda dapat melatih model baru atau mengonversi model yang ada dari format lain ke ONNX.

Skenario banyak model

Model tunggal mungkin tidak menangkap sifat kompleks masalah dunia nyata. Misalnya, supermarket memiliki demografi, merek, SKU, dan fitur lain yang bervariasi antar wilayah, yang menjadikannya tantangan untuk membuat satu model prediksi penjualan. Demikian pula, variasi regional dapat menimbulkan tantangan untuk model pemeliharaan prediktif meteran pintar. Gunakan banyak model untuk menangkap data regional atau hubungan tingkat penyimpanan untuk memberikan akurasi yang lebih tinggi daripada satu model. Pendekatan banyak model mengasumsikan bahwa data yang cukup tersedia untuk tingkat granularitas ini.

Skenario banyak model memiliki tiga tahap: sumber data, ilmu data, dan banyak model.

A diagram that shows the stages of the many-models scenario.

  • Sumber data. Dalam tahap sumber data, penting untuk mensegmentasi data menjadi hanya beberapa elemen. Misalnya, jangan memperhitungkan ID produk atau kode batang ke dalam partisi utama karena menghasilkan terlalu banyak segmen dan mungkin menghambat model yang bermakna. Merek, SKU, atau lokalitas adalah elemen yang lebih cocok. Penting untuk menyederhanakan data dengan menghapus anomali yang mungkin membuat condong distribusi data.

  • Ilmu data. Dalam tahap ilmu data, beberapa eksperimen berjalan paralel dengan setiap segmen data. Eksperimen banyak model adalah proses berulang yang mengevaluasi model untuk menentukan yang terbaik.

  • Banyak model. Model terbaik untuk setiap segmen atau kategori terdaftar di registri model. Tetapkan nama yang bermakna ke model untuk membuatnya lebih dapat ditemukan untuk inferensi. Gunakan pemberian tag jika perlu untuk mengelompokkan model ke dalam kategori tertentu.

Inferensi batch untuk banyak model

Untuk banyak model, selama inferensi batch, prediksi berada pada jadwal berulang, dan mereka dapat menangani data volume besar yang berjalan pada saat yang sama. Tidak seperti skenario model tunggal, inferensi banyak model terjadi pada saat yang sama.

Banyak model untuk inferensi batch menggunakan beberapa penyebaran terhadap titik akhir yang dikelola tunggal. Inferensi batch untuk model tertentu memanggil nama penyebaran selama panggilan REST atau SDK. Untuk informasi selengkapnya, lihat Menyebarkan beberapa model ke satu penyebaran.

Inferensi real time untuk banyak model

Anda dapat menyebarkan beberapa model ke dalam titik akhir online terkelola tunggal, yang dapat Anda panggil melalui REST API atau SDK. Saat Anda membuat penyebaran, daftarkan beberapa model sebagai satu "model terdaftar" di Azure. Sertakan beberapa model dalam direktori yang sama dan berikan direktori tersebut sebagai jalur model tunggal. Model dimuat ke dalam kamus yang ditujukan pada namanya. Ketika permintaan REST diterima, model yang diinginkan diambil dari payload JSON, dan model yang relevan menilai payload.

Model yang dimuat dalam penyebaran multi-model dengan menggunakan teknik ini harus berbagi versi Python yang sama dan tidak memiliki dependensi yang bertentangan. Pustaka mereka harus diimpor secara bersamaan bahkan jika mereka tidak benar-benar memiliki dependensi yang sama.

Misalnya, lihat Membuat penyebaran multimodel dengan menggunakan kontainer kustom.

Langkah berikutnya