Arsitektur referensi ini menunjukkan cara menyebarkan model Python sebagai layanan web untuk membuat prediksi waktu nyata menggunakan Azure Kubernetes Service. Model pembelajaran mesin yang disebarkan di Azure Kubernetes bagus untuk penyebaran produksi skala tinggi.
Dua skenario dibahas dalam artikel ini: menyebarkan model Python reguler, dan persyaratan khusus untuk menyebarkan model pembelajaran mendalam. Kedua skenario menggunakan arsitektur yang ditampilkan. Selain itu, dua penerapan referensi untuk skenario ini tersedia di GitHub, satu untuk model Python reguler dan satu untuk model pembelajaran mendalam.

Skenario: Pencocokan FAQ Stack Overflow
Skenario ini menunjukkan cara menyebarkan model pencocokan pertanyaan yang sering diajukan (FAQ) sebagai layanan web untuk memberikan prediksi pertanyaan pengguna. Untuk skenario ini, "Data Input" dalam diagram arsitektur mengacu pada string teks yang berisi pertanyaan pengguna untuk dicocokkan dengan daftar FAQ. Skenario ini didesain untuk pustaka pembelajaran mesin scikit-learn untuk Python, tetapi dapat digeneralisasi ke skenario apa pun yang menggunakan model Python untuk membuat prediksi real time.
Skenario ini menggunakan subset data pertanyaan Stack Overflow yang menyertakan pertanyaan asli yang diberi tag sebagai JavaScript, pertanyaan duplikatnya, dan jawabannya. Ini melatih alur scikit-belajar untuk memprediksi probabilitas kecocokan pertanyaan duplikat dengan masing-masing pertanyaan asli. Prediksi ini dibuat secara real time menggunakan titik akhir REST API.
Alur aplikasi untuk arsitektur ini adalah sebagai berikut:
- Model terlatih terdaftar ke registri model pembelajaran mesin.
- Azure Machine Learning membuat gambar Docker yang menyertakan model dan skrip penskoran.
- Azure Machine Learning menyebarkan gambar penskoran di Azure Kubernetes Service (AKS) sebagai layanan web.
- Klien mengirimkan permintaan HTTP POST dengan data pertanyaan yang dikodekan.
- Layanan web yang dibuat oleh Azure Machine Learning mengekstrak pertanyaan dari permintaan.
- Pertanyaan dikirim ke model alur scikit-learn untuk fiturisasi dan penskoran.
- Pertanyaan FAQ yang cocok dengan skornya dikembalikan ke klien.
Berikut adalah cuplikan layar dari contoh aplikasi yang menggunakan hasilnya:

Skenario: Klasifikasi gambar dengan Convolutional Neural Network
Skenario ini menunjukkan cara menyebarkan model Convolutional Neural Network (CNN) sebagai layanan web untuk memberikan prediksi pada gambar. Untuk skenario ini, "Data Input" dalam diagram arsitektur mengacu pada file gambar. CNN efektif dalam visi komputer untuk tugas-tugas seperti klasifikasi gambar dan deteksi objek. Skenario ini didesain untuk kerangka kerja TensorFlow, Keras (dengan back end TensorFlow), dan PyTorch. Namun, ini dapat digeneralisasi ke skenario apa pun yang menggunakan model pembelajaran mendalam untuk membuat prediksi real time.
Skenario ini menggunakan model ResNet-152 yang telah dilatih sebelumnya yang dilatih pada himpunan data ImageNet-1K (1.000 kelas) untuk memprediksi kategori mana (lihat gambar di bawah) yang dimiliki gambar. Prediksi ini dibuat secara real time menggunakan titik akhir REST API.

Alur aplikasi untuk model pembelajaran mendalam adalah sebagai berikut:
- Model pembelajaran mendalam terdaftar ke registri model pembelajaran mesin.
- Azure Machine Learning membuat gambar docker termasuk model dan skrip penskoran.
- Azure Machine Learning menyebarkan gambar penskoran di Azure Kubernetes Service (AKS) sebagai layanan web.
- Klien mengirimkan permintaan HTTP POST dengan data gambar yang dikodekan.
- Layanan web yang dibuat oleh Azure Machine Learning memproses data gambar terlebih dahulu dan mengirimkannya ke model untuk penskoran.
- Kategori yang diprediksi dengan skornya dikembalikan ke klien.
Arsitektur
Arsitektur ini terdiri dari komponen berikut.
Azure Machine Learning adalah layanan cloud yang digunakan untuk melatih, menyebarkan, mengotomatisasi, dan mengelola model pembelajaran mesin, semuanya dalam skala luas yang disediakan cloud. Ini digunakan dalam arsitektur ini untuk mengelola penyebaran model dan autentikasi, perutean, dan penyeimbangan beban layanan web.
Mesin virtual (VM). VM ditampilkan sebagai contoh perangkat—lokal atau di cloud—yang dapat mengirim permintaan HTTP.
Azure Kubernetes Service (AKS) digunakan untuk menyebarkan aplikasi di kluster Kubernetes. AKS menyederhanakan penyebaran dan operasi Kubernetes. Kluster dapat dikonfigurasi menggunakan VM khusus CPU untuk model Python reguler atau VM berkemampuan GPU untuk model pembelajaran mendalam.
Azure Container Registry memungkinkan penyimpanan gambar untuk semua jenis penyebaran kontainer Docker termasuk DC/OS, Docker Swarm, dan Kubernetes. Gambar penskoran disebarkan sebagai kontainer di Azure Kubernetes Service dan digunakan untuk menjalankan skrip penskoran. Gambar yang digunakan di sini dibuat oleh Pembelajaran Mesin dari model terlatih dan skrip penskoran, lalu didorong ke Azure Container Registry.
Pertimbangan performa
Untuk arsitektur penskoran real time, performa throughput menjadi pertimbangan yang dominan. Untuk model Python reguler, CPU cukup untuk menangani beban kerja.
Namun untuk beban kerja pembelajaran mendalam, saat kecepatan menjadi penghambat, GPU umumnya memberikan performa yang lebih baik dibandingkan CPU. Untuk mencocokkan performa GPU menggunakan CPU, biasanya diperlukan kluster dengan jumlah CPU yang besar.
Anda dapat menggunakan CPU untuk arsitektur ini dalam kedua skenario, tetapi untuk model pembelajaran mendalam, GPU memberikan nilai throughput yang lebih tinggi dibandingkan dengan kluster CPU dengan biaya serupa. AKS mendukung penggunaan GPU, yang merupakan salah satu keuntungan menggunakan AKS untuk arsitektur ini. Selain itu, penyebaran pembelajaran mendalam biasanya menggunakan model dengan jumlah parameter yang tinggi. Menggunakan GPU mencegah pertentangan untuk sumber daya antara model dan layanan web, yang merupakan masalah dalam penyebaran khusus CPU.
Pertimbangan skalabilitas
Untuk model Python reguler, yang kluster AKS-nya disediakan dengan VM khusus CPU, berhati-hatilah saat menskalakan jumlah pod. Tujuannya adalah untuk sepenuhnya memanfaatkan kluster. Penskalaan bergantung pada permintaan CPU dan batasan yang ditentukan untuk pod. Pembelajaran Mesin melalui Kubernetes juga mendukung penyekalaan otomatis pod berdasarkan penggunaan CPU atau metrik lainnya. Penskala otomatis kluster dapat menskalakan node agen berdasarkan pod yang tertunda.
Untuk skenario pembelajaran mendalam, menggunakan VM berkemampuan GPU, batas sumber daya pada pod adalah sedemikian rupa sehingga satu GPU ditetapkan ke satu pod. Bergantung pada jenis VM yang digunakan, Anda harus menskalakan node kluster untuk memenuhi permintaan layanan. Anda dapat melakukannya dengan mudah menggunakan Azure CLI dan kubectl.
Pertimbangan pemantauan dan pengelogan
Pemantauan AKS
Untuk visibilitas ke dalam performa AKS, gunakan fitur wawasan kontainer Azure Monitor . Ini mengumpulkan metrik memori dan prosesor dari pengontrol, node, dan kontainer yang tersedia di Kubernetes melalui API Metrik.
Saat menyebarkan aplikasi Anda, pantau kluster AKS untuk memastikannya berfungsi seperti yang diharapkan, semua node beroperasi, dan semua pod berjalan. Meskipun Anda dapat menggunakan alat baris perintah kubectl untuk mengambil status pod, Kubernetes juga menyertakan dasbor web untuk pemantauan dasar status dan manajemen kluster.

Untuk melihat status kluster dan node secara keseluruhan, buka bagian Node di dasbor Kubernetes. Jika node tidak aktif atau gagal, Anda dapat menampilkan log galat dari halaman tersebut. Demikian pula, buka bagian Pod dan Penyebaran untuk informasi tentang jumlah pod dan status penyebaran Anda.
Log AKS
AKS secara otomatis mencatat semua stdout/stderr ke log pod di kluster. Gunakan kubectl untuk melihatnya dan juga peristiwa dan log tingkat node. Untuk detailnya, lihat langkah-langkah penyebaran.
Gunakan wawasan kontainer Azure Monitor untuk mengumpulkan metrik dan log melalui versi kontainer agen Analitik Log untuk Linux, yang disimpan di ruang kerja Analitik Log Anda.
Pertimbangan keamanan
Gunakan Microsoft Defender untuk Cloud untuk mendapatkan tampilan terpusat dari status keamanan sumber daya Azure Anda. Defender untuk Cloud memantau potensi masalah keamanan dan memberikan gambaran komprehensif tentang kesehatan keamanan penyebaran Anda, meskipun tidak memantau node agen AKS. Defender untuk Cloud dikonfigurasi per langganan Azure. Aktifkan pengumpulan data keamanan seperti yang dijelaskan dalam Mengaktifkan Defender untuk Cloud di langganan Anda. Saat pengumpulan data diaktifkan, Defender untuk Cloud secara otomatis memindai semua VM yang dibuat pada bagian langganan tersebut.
Operasi. Untuk masuk ke kluster AKS menggunakan token autentikasi Azure Active Directory (Azure AD), konfigurasikan AKS untuk menggunakan Azure AD untuk autentikasi pengguna. Administrator kluster juga dapat mengonfigurasi kontrol akses berbasis peran Kubernetes (Kubernetes RBAC) berdasarkan identitas pengguna atau keanggotaan grup direktori.
Gunakan Azure RBAC untuk mengontrol akses ke sumber daya Azure yang Anda sebarkan. Azure RBAC memungkinkan Anda menetapkan peran otorisasi kepada anggota tim DevOps Anda. Seorang pengguna dapat ditetapkan ke beberapa peran, dan Anda dapat membuat peran kustom untuk izin yang lebih terperinci.
HTTPS. Sebagai praktik terbaik keamanan, aplikasi harus memberlakukan HTTPS dan mengalihkan permintaan HTTP. Gunakan pengontrol ingress untuk menyebarkan proksi terbalik yang menghentikan SSL dan mengalihkan permintaan HTTP. Untuk informasi selengkapnya, lihat Membuat pengontrol ingress HTTPS di Azure Kubernetes Service (AKS).
Autentikasi. Solusi ini tidak membatasi akses ke titik akhir. Untuk menyebarkan arsitektur dalam pengaturan perusahaan, amankan titik akhir melalui kunci API dan tambahkan beberapa bentuk autentikasi pengguna ke aplikasi klien.
Registri kontainer. Solusi ini menggunakan Azure Container Registry untuk menyimpan image Docker. Kode tempat aplikasi bergantung, dan modelnya, terdapat di dalam gambar ini. Aplikasi perusahaan harus menggunakan registri privat untuk membantu menjaga agar tidak menjalankan kode berbahaya dan untuk membantu menjaga informasi di dalam kontainer agar tidak disusupi.
Perlindungan DDoS. Pertimbangkan untuk mengaktifkan Standar DDoS Protection. Meskipun perlindungan DDoS dasar diaktifkan sebagai bagian dari platform Azure, Standar Perlindungan DDoS menyediakan kemampuan mitigasi yang disesuaikan secara khusus untuk sumber daya jaringan virtual Azure.
Pengelogan. Gunakan praktik terbaik sebelum menyimpan data log, seperti menghapus kata sandi pengguna dan informasi lain yang dapat digunakan untuk melakukan penipuan keamanan.
Pertimbangan biaya
Gunakan kalkulator harga Azure untuk memperkirakan biaya. Berikut beberapa pertimbangan lainnya.
Untuk informasi selengkapnya, lihat artikel Microsoft Azure Well-Architected Framework Prinsip pengoptimalan biaya.
Pembelajaran Mesin Azure
Dalam arsitektur referensi ini, sebagian besar biaya didorong oleh sumber daya komputasi. Untuk tujuan eksperimen dan pelatihan, Azure Machine Learning gratis. Anda hanya dikenakan biaya untuk komputasi yang digunakan oleh layanan web. Gunakan kalkulator harga Azure untuk memperkirakan biaya komputasi Anda.
Azure Container Registry
Azure Container Registry menawarkan Dasar, Standar, dan Premium. Pilih tingkat tergantung pada penyimpanan yang Anda butuhkan. Pilih Premium jika Anda memerlukan replikasi geografis, atau Anda meningkatkan throughput untuk penarikan docker di seluruh node bersamaan. Selain itu, biaya jaringan standar berlaku. Untuk informasi selengkapnya, lihat Harga Azure Container Registry.
Azure Kubernetes Service
Anda hanya membayar instans komputer virtual, penyimpanan, dan sumber daya jaringan yang digunakan oleh kluster Kubernetes kamu. Untuk memperkirakan biaya sumber daya yang diperlukan, lihat kalkulator Layanan Kontainer.
Untuk informasi selengkapnya, lihat artikel Microsoft Azure Well-Architected Framework Prinsip pengoptimalan biaya.
Pertimbangan DevOps
Dalam arsitektur ini, gambar penskoran dibuat oleh model Pembelajaran Mesin dan disebarkan sebagai kontainer di AKS. Anda dapat mengintegrasikan seluruh arsitektur ke dalam alur rilis untuk manajemen model dan operasionalisasi. Alur dapat mencakup tugas DevOps untuk pengujian kesehatan data, pelatihan model pada target komputasi yang berbeda, manajemen versi model, penyebaran model sebagai layanan web real time, penyebaran bertahap ke lingkungan QA/produksi, pengujian integrasi, dan pengujian fungsional. Arsitektur referensi Operasionalisasi pembelajaran mesin (MLOps) untuk model Python menggunakan Azure Machine Learning menunjukkan cara menerapkan integrasi berkelanjutan (CI), pengiriman berkelanjutan (CD), dan jalur pelatihan ulang untuk aplikasi AI menggunakan Azure DevOps dan Azure Machine Learning.
Penyebaran
Untuk menyebarkan arsitektur referensi ini, ikuti langkah-langkah yang dijelaskan dalam repositori GitHub:
Langkah berikutnya
Baca dokumentasi produk:
- Menyebarkan model ke kluster Azure Kubernetes Service
- Pengenalan registri kontainer Docker privat di Azure
Coba jalur Microsoft Learn ini: