Prinsip desain untuk beban kerja AI di Azure
Artikel ini menguraikan prinsip inti untuk beban kerja AI di Azure, dengan fokus pada aspek AI arsitektur. Sangat penting untuk mempertimbangkan semua pilar Azure Well-Architected Framework secara kolektif, termasuk pertukarannya. Terapkan setiap pilar ke persyaratan fungsional dan nonfungsi beban kerja.
Keandalan
Saat menjalankan beban kerja AI di Azure, Anda perlu mempertimbangkan banyak persyaratan keandalan yang sama dengan yang Anda pertimbangkan untuk jenis beban kerja lainnya. Namun, pertimbangan khusus untuk pelatihan model, hosting, dan inferensi sangat penting dan merupakan fokus dari artikel ini. Penting untuk mengintegrasikan praktik ini dengan praktik terbaik desain standar untuk aplikasi cloud, yang juga berlaku untuk beban kerja AI.
Tinjau prinsip desain keandalan untuk mendapatkan pemahaman dasar tentang konsep yang dijelaskan di sini.
Prinsip desain | Pertimbangan |
---|---|
Mitigasi titik kegagalan tunggal. | Mengandalkan satu instance untuk komponen penting dapat menyebabkan masalah signifikan. Untuk mencegah masalah semacam ini, bangun redundansi ke semua komponen penting. Gunakan platform yang memiliki toleransi kesalahan bawaan dan fitur ketersediaan tinggi, dan terapkan redundansi dengan menyebarkan beberapa instans atau node. |
Melakukan analisis mode kegagalan. Manfaatkan pola desain terkenal. |
Analisis potensi mode kegagalan secara teratur dalam komponen sistem Anda, dan membangun ketahanan terhadap kegagalan ini. Gunakan pola desain terkenal untuk mengisolasi bagian sistem Anda dan mencegah kegagalan berjencar. Misalnya, pola Bulkhead dapat membantu mengisolasi kegagalan, dan mencoba kembali mekanisme dan pemutus sirkuit dapat menangani kesalahan sementara seperti permintaan pembatasan. |
Menyeimbangkan tujuan keandalan di seluruh komponen dependen. | Pastikan bahwa titik akhir inferensi, atau model, dan penyimpanan data selaras dalam hal keandalan. Komponen aplikasi harus tetap tersedia bahkan dalam kondisi tak terduga, seperti lonjakan pengguna bersamaan. Selain itu, beban kerja harus dapat melakukan failover ke sistem cadangan jika terjadi kegagalan. Jika satu komponen gagal, itu mempengaruhi keandalan yang lain. Demikian pula, API lapisan layanan, yang merupakan sumber daya produksi penting, harus mematuhi standar keandalan yang sama dengan alur beban kerja kritis tinggi lainnya. Jika API ini memerlukan ketersediaan tinggi, platform hosting harus mendukung zona ketersediaan atau desain multiregion untuk memastikan operasi dan ketahanan berkelanjutan. |
Desain untuk keandalan operasional. | Pertahankan keandalan respons model dengan memastikan bahwa pembaruan sering dan tepat waktu. Putuskan apakah akan menggunakan data terbaru atau data yang sedikit lebih lama, menyeimbangkan kebutuhan akan informasi up-to-tanggal dengan kepraktisan frekuensi pembaruan. Anda harus mengotomatiskan pelatihan online karena persyaratan frekuensi dan keandalannya. Pelatihan offline dapat dibenarkan melalui analisis manfaat biaya. Anda dapat menggunakan sumber daya yang lebih murah untuk pelatihan offline. |
Desain untuk pengalaman pengguna yang andal. | Gunakan pengujian beban untuk mengevaluasi bagaimana beban kerja Anda menangani stres, dan merancang antarmuka pengguna Anda untuk mengelola harapan pengguna untuk waktu respons. Terapkan elemen UI yang memberi tahu pengguna tentang potensi waktu tunggu, dan mengadopsi prinsip desain cloud asinkron untuk mengatasi intermittensi, latensi, atau kegagalan. |
Keamanan
Model sering menggunakan data produksi sensitif untuk menghasilkan hasil yang relevan. Oleh karena itu, Anda harus menerapkan langkah-langkah keamanan yang kuat di semua lapisan arsitektur. Langkah-langkah ini termasuk menerapkan desain aplikasi yang aman di awal siklus hidup, mengenkripsi data baik saat tidak aktif maupun saat transit, dan mematuhi standar kepatuhan industri. Penilaian keamanan reguler sangat penting untuk mengidentifikasi dan mengurangi kerentanan. Mekanisme deteksi ancaman tingkat lanjut membantu memastikan respons cepat terhadap potensi ancaman.
Prinsip keamanan sangat mendasar untuk melindungi integritas data, integritas desain, dan privasi pengguna dalam solusi AI. Sebagai pemilik beban kerja, Anda bertanggung jawab untuk membangun kepercayaan dan melindungi informasi sensitif untuk membantu memastikan pengalaman pengguna yang aman.
Prinsip desain | Pertimbangan |
---|---|
Dapatkan kepercayaan pengguna. | Integrasikan keamanan konten di setiap tahap siklus hidup dengan menggunakan kode kustom, alat, dan kontrol keamanan yang efektif. Hapus informasi pribadi dan rahasia yang tidak diperlukan di semua titik penyimpanan data, termasuk penyimpanan data agregat, indeks pencarian, cache, dan aplikasi. Pertahankan tingkat keamanan ini secara konsisten di seluruh arsitektur. Pastikan untuk menerapkan moderasi konten menyeluruh yang memeriksa data ke dua arah dan menyaring konten yang tidak pantas dan menyinggung. |
Lindungi data saat diam, saat transit, dan saat digunakan, sesuai dengan persyaratan sensitivitas tugas. | Minimal, gunakan enkripsi tingkat platform dengan kunci yang dikelola Microsoft atau dikelola pelanggan di semua penyimpanan data dalam arsitektur. Tentukan di mana Anda memerlukan tingkat enkripsi yang lebih tinggi, dan gunakan enkripsi ganda jika perlu. Pastikan bahwa semua lalu lintas menggunakan HTTPS untuk enkripsi. Tentukan titik penghentian TLS di setiap hop. Model itu sendiri perlu dilindungi untuk mencegah penyerang mengekstrak informasi sensitif yang digunakan selama pelatihan. Model ini memerlukan tingkat langkah-langkah keamanan tertinggi. Pertimbangkan untuk menggunakan enkripsi homomorfik yang memungkinkan inferensi pada data terenkripsi. |
Berinvestasi dalam manajemen akses yang kuat untuk identitas (pengguna dan sistem) yang mengakses sistem. | Terapkan kontrol akses berbasis peran (RBAC) dan/atau kontrol akses berbasis atribut (ABAC) untuk sarana kontrol dan data. Pertahankan segmentasi identitas yang tepat untuk membantu melindungi privasi. Hanya izinkan akses ke konten yang identitasnya berwenang untuk dilihat. |
Lindungi integritas desain dengan menerapkan segmentasi. | Menyediakan jaringan privat untuk akses ke repositori terpusat untuk gambar kontainer, data, dan aset kode. Saat berbagi infrastruktur dengan beban kerja lain menyebabkan pemisahan, misalnya, ketika Anda menghosting server inferensi di Azure Kubernetes Service, pisahkan kelompok simpul dari API dan beban kerja lainnya. |
Lakukan pengujian keamanan. | Kembangkan rencana pengujian terperinci yang mencakup pengujian untuk mendeteksi perilaku tidak etis setiap kali perubahan diperkenalkan ke sistem. Integrasikan komponen AI ke dalam pengujian keamanan yang ada. Misalnya, masukkan titik akhir inferensi ke dalam pengujian rutin Anda bersama titik akhir publik lainnya. Pertimbangkan untuk melakukan pengujian pada sistem langsung, seperti tes penetrasi atau latihan tim merah, untuk mengidentifikasi dan mengatasi potensi kerentanan secara efektif. |
Kurangi permukaan serangan dengan memberlakukan akses pengguna dan desain API yang ketat. | Memerlukan autentikasi untuk semua titik akhir inferensi, termasuk panggilan sistem-ke-sistem. Hindari titik akhir anonim. Lebih suka desain API yang dibatasi dengan biaya fleksibilitas sisi klien. |
Kompromi. Menerapkan tingkat keamanan tertinggi menimbulkan pengorbanan dalam biaya dan akurasi karena kemampuan untuk menganalisis, memeriksa, atau mencatat data terenkripsi menjadi terbatas. Pemeriksaan keamanan konten dan mencapai kemampuan penjelasan juga dapat menjadi tantangan di lingkungan yang sangat aman.
Area desain berikut memberikan detail tentang prinsip dan pertimbangan sebelumnya:
Pengoptimalan Biaya
Tujuan pilar Pengoptimalan Biaya adalah untuk memaksimalkan investasi, belum tentu untuk mengurangi biaya. Setiap pilihan arsitektur menciptakan dampak keuangan langsung dan tidak langsung. Pahami biaya yang terkait dengan berbagai opsi, termasuk membangun versus keputusan pembelian, pemilihan teknologi, model penagihan, lisensi, pelatihan, dan biaya operasional. Penting untuk memaksimalkan investasi Anda di tingkat yang dipilih dan terus menilai kembali model penagihan. Terus mengevaluasi biaya yang terkait dengan perubahan arsitektur, kebutuhan bisnis, proses, dan struktur tim.
Tinjau prinsip Pengoptimalan Biaya , berfokus pada pengoptimalan tarif dan penggunaan.
Prinsip desain | Pertimbangan |
---|---|
Tentukan driver biaya dengan melakukan latihan pemodelan biaya yang komprehensif. | Pertimbangkan faktor utama platform data dan aplikasi: - Volume data. Perkirakan jumlah data yang akan Anda indeks dan pemrosesan. Volume yang lebih besar dapat meningkatkan biaya penyimpanan dan pemrosesan. - Jumlah kueri. Memprediksi frekuensi dan kompleksitas kueri. Volume kueri yang lebih tinggi dapat meningkatkan biaya, terutama jika kueri memerlukan sumber daya komputasi yang signifikan. - Throughput. Menilai throughput yang diharapkan untuk menentukan tingkat performa mana yang Anda butuhkan. Permintaan throughput yang lebih tinggi dapat menyebabkan biaya yang lebih tinggi. - Biaya dependensi. Pahami bahwa mungkin ada biaya tersembunyi dalam dependensi. Misalnya, saat Anda menghitung biaya pengindeksan, sertakan biaya set keterampilan, yang merupakan bagian dari pemrosesan data tetapi di luar cakupan indeks. |
Bayar untuk apa yang ingin Anda gunakan. | Pilih solusi teknologi yang memenuhi kebutuhan Anda tanpa menimbulkan biaya yang tidak perlu. Jika Anda tidak memerlukan fitur lanjutan, pertimbangkan opsi yang lebih murah dan alat sumber terbuka. Faktor frekuensi penggunaan. Lebih suka opsi komputasi elastis untuk alat orkestrasi untuk meminimalkan biaya pemanfaatan, karena selalu aktif. Hindari komputasi tanpa server untuk operasi penuh waktu karena dapat meningkatkan biaya. Jangan membayar tingkat yang lebih tinggi tanpa menggunakan kapasitas penuh mereka. Pastikan tingkat yang Anda pilih selaras dengan pola penggunaan produksi Anda untuk mengoptimalkan pengeluaran. Gunakan harga standar untuk tugas reguler dan harga spot untuk pelatihan yang sangat dapat diinterupsi. Untuk mengurangi biaya, gunakan komputasi berbasis GPU hanya untuk fungsi beban kerja AI. Uji dan tolok ukur pelatihan dan penyempurnaan Anda secara ekstensif untuk menemukan SKU yang paling menyeimbangkan performa dan biaya. |
Gunakan apa yang Anda bayar. Minimalkan limbah. | Pantau metrik pemanfaatan dengan cermat. Beban kerja AI bisa mahal, dan biaya dapat meningkat dengan cepat jika sumber daya tidak dimatikan, diturunkan skalanya, atau dibatalkan alokasinya saat tidak digunakan. Optimalkan sistem untuk menulis sekali, baca banyak untuk menghindari pengeluaran berlebih pada penyimpanan data. Database produksi tidak memerlukan respons instan untuk data pelatihan. Pengujian stres titik akhir inferensi Azure OpenAI Service bisa mahal karena setiap panggilan dikenakan biaya. Untuk mengurangi biaya, gunakan PTUs OpenAI Service yang tidak digunakan di lingkungan pengujian atau simulasi titik akhir inferensi sebagai gantinya. Tugas seperti analisis data eksploratif (EDA), pelatihan model, dan penyempurnaan biasanya tidak berjalan penuh waktu. Untuk tugas-tugas ini, lebih suka platform yang dapat dihentikan ketika tidak digunakan. Misalnya, pekerjaan EDA biasanya interaktif, sehingga pengguna harus dapat memulai VM dan menghentikannya saat menjalankan pekerjaan. Tetapkan akuntabilitas biaya kepada tim operasi. Tim ini harus memastikan bahwa biaya tetap berada dalam parameter yang diharapkan dengan secara aktif memantau dan mengelola pemanfaatan sumber daya. |
Optimalkan biaya operasional. | Pelatihan online bisa mahal karena persyaratan frekuensinya. Mengotomatiskan proses ini membantu menjaga konsistensi dan meminimalkan biaya dari kesalahan manusia. Selain itu, menggunakan data yang sedikit lebih lama untuk pelatihan, dan menunda pembaruan jika memungkinkan, dapat lebih mengurangi pengeluaran tanpa mempengaruhi akurasi model secara signifikan. Untuk pelatihan offline, evaluasi apakah sumber daya yang lebih murah dapat digunakan, seperti perangkat keras offline. Secara umum, hapus data dari penyimpanan fitur untuk mengurangi kekacauan dan biaya penyimpanan untuk fitur. |
Kompromi: Pengoptimalan Biaya dan Efisiensi Kinerja. Menyeimbangkan biaya dengan performa dalam manajemen database melibatkan kompromi. Desain indeks yang efisien mempercepat kueri tetapi dapat meningkatkan biaya karena manajemen metadata dan ukuran indeks. Demikian pula, pemartisian tabel besar dapat meningkatkan performa kueri dan mengurangi beban penyimpanan, tetapi menimbulkan biaya tambahan. Sebaliknya, teknik yang menghindari pengindeksan yang berlebihan dapat mengurangi biaya tetapi dapat memengaruhi performa jika tidak dikelola dengan benar.
Trade-off: Pengoptimalan Biaya dan Keunggulan Operasional. Ada trade-off yang perlu dipertimbangkan ketika Anda memutuskan mana dari dua pendekatan utama yang akan digunakan untuk pelatihan model. Pelatihan di lingkungan pengembangan dengan data produksi penuh dapat mengurangi biaya komputasi karena model hanya dilatih sekali dan hanya artefak yang dipromosikan. Namun, pendekatan ini memerlukan langkah-langkah keamanan yang ketat untuk menangani data produksi di lingkungan yang lebih rendah, yang dapat menjadi rumit dan intensif sumber daya. Sebaliknya, melatih model di setiap lingkungan meningkatkan stabilitas dan keandalan karena tinjauan dan pengujian kode menyeluruh, tetapi model ini meningkatkan biaya komputasi karena eksekusi pelatihan terjadi beberapa kali.
Keunggulan Operasional
Tujuan utama Keunggulan Operasional adalah untuk memberikan kemampuan secara efisien sepanjang siklus hidup pengembangan. Mencapai tujuan ini melibatkan pembentukan proses berulang yang mendukung metodologi desain eksperimen dan menghasilkan hasil untuk meningkatkan performa model. Keunggulan Operasional juga tentang mempertahankan akurasi model dari waktu ke waktu, menerapkan praktik pemantauan dan tata kelola yang efektif untuk meminimalkan risiko, dan mengembangkan proses manajemen perubahan untuk beradaptasi dengan penyimpangan model.
Meskipun semua prinsip Keunggulan Operasional berlaku untuk beban kerja AI, prioritaskan otomatisasi dan pemantauan sebagai strategi operasional dasar Anda.
Prinsip desain | Pertimbangan |
---|---|
Menumbuhkan pola pikir pembelajaran dan eksperimen berkelanjutan sepanjang siklus hidup pengembangan aplikasi, penanganan data, dan manajemen model AI. | Operasi beban kerja harus dibangun berdasarkan metodologi yang terbukti di industri seperti DevOps, DataOps, MLOps, dan GenAIOps. Kolaborasi awal antara operasi, pengembangan aplikasi, dan tim data sangat penting untuk membangun pemahaman bersama tentang performa model yang dapat diterima. Tim operasi menyediakan sinyal berkualitas dan pemberitahuan yang dapat ditindakkan. Tim aplikasi dan data membantu mendiagnosis dan menyelesaikan masalah secara efisien. |
Pilih teknologi yang meminimalkan beban operasional. | Ketika Anda memilih solusi platform, pilih platform as a service (PaaS) daripada opsi yang dihost sendiri untuk menyederhanakan desain, mengotomatiskan orkestrasi alur kerja, dan membuat operasi hari ke-2 lebih mudah. |
Buat sistem pemantauan otomatis yang mendukung fungsionalitas pemberitahuan, termasuk pengelogan dan auditabilitas. | Mengingat sifat nondeterministik AI, penting untuk menetapkan pengukuran kualitas di awal siklus hidup. Bekerja sama dengan ilmuwan data untuk menentukan metrik berkualitas. Visualisasikan wawasan terkini di papan pemantauan yang komprehensif. Lacak eksperimen dengan menggunakan alat yang dapat mengambil detail seperti versi kode, lingkungan, parameter, eksekusi, dan hasil. Terapkan pemberitahuan yang dapat ditindak lanjuti yang memberikan informasi yang cukup untuk memungkinkan operator merespons dengan cepat. |
Mengotomatiskan deteksi dan mitigasi kerusakan model. | Gunakan pengujian otomatis untuk mengevaluasi penyimpangan dari waktu ke waktu. Pastikan sistem pemantauan Anda mengirim pemberitahuan saat respons mulai menyimpang dari hasil yang diharapkan dan mulai melakukannya secara teratur. Gunakan alat yang dapat menemukan dan memperbarui model baru secara otomatis. Sesuai kebutuhan, beradaptasi dengan kasus penggunaan baru dengan menyesuaikan logika pemrosesan data dan pelatihan model. |
Menerapkan penyebaran yang aman. | Pilih antara penyebaran berdampingan atau pembaruan di tempat untuk meminimalkan waktu henti. Terapkan pengujian menyeluruh sebelum penyebaran untuk memastikan model dikonfigurasi dengan benar dan memenuhi target, harapan pengguna, dan standar kualitas. Selalu rencanakan operasi darurat, terlepas dari strategi penyebaran. |
Terus mengevaluasi pengalaman pengguna dalam produksi. | Aktifkan pengguna beban kerja untuk memberikan umpan balik tentang pengalaman mereka. Dapatkan persetujuan untuk berbagi bagian atau semua percakapan mereka dalam log terkait untuk pemecahan masalah. Pertimbangkan berapa banyak interaksi pengguna yang layak, patuh, aman, dan berguna untuk ditangkap, dan gunakan data dengan rajin untuk mengevaluasi performa beban kerja Anda dengan interaksi pengguna nyata. |
Area desain berikut memberikan detail tentang prinsip dan pertimbangan sebelumnya:
Efisiensi Performa
Tujuan evaluasi performa model AI adalah untuk menentukan seberapa efektif model menyelesaikan tugas yang dimaksudkan. Mencapai tujuan ini melibatkan penilaian berbagai metrik, seperti akurasi, presisi, dan keadilan. Selain itu, performa platform dan komponen aplikasi yang mendukung model sangat penting.
Performa model juga dipengaruhi oleh efisiensi operasi seperti pelacakan eksperimen dan pemrosesan data. Menerapkan prinsip Efisiensi Performa membantu mengukur performa terhadap bilah kualitas yang dapat diterima. Perbandingan ini adalah kunci untuk mendeteksi degradasi atau pembusukan. Untuk mempertahankan beban kerja, termasuk komponen AI, Anda memerlukan proses otomatis untuk pemantauan dan evaluasi berkelanjutan.
Prinsip desain | Pertimbangan |
---|---|
Menetapkan tolok ukur performa. | Lakukan pengujian performa yang ketat di berbagai area arsitektur, dan tetapkan target yang dapat diterima. Penilaian yang sedang berlangsung ini harus menjadi bagian dari proses operasional Anda, bukan tes satu kali. Tolok ukur berlaku untuk performa prediksi. Mulailah dengan garis besar untuk memahami performa model awal dan terus mengevaluasi ulang performa untuk memastikan bahwa performa tersebut memenuhi harapan. |
Mengevaluasi kebutuhan sumber daya untuk memenuhi target performa. | Pahami karakteristik beban untuk memilih platform yang tepat dan sumber daya ukuran yang tepat. Faktor dalam data ini untuk perencanaan kapasitas yang akan beroperasi dalam skala besar. Misalnya, gunakan pengujian beban untuk menentukan platform komputasi dan SKU yang optimal. Komputasi yang dioptimalkan oleh GPU berkinerja tinggi sering kali dibutuhkan untuk pelatihan dan penyempurnaan model, tetapi unit tujuan umum cocok untuk alat orkestrasi. Demikian pula, pilih platform data yang secara efisien menangani penyerapan data, mengelola penulisan bersamaan, dan mempertahankan performa penulisan individu tanpa degradasi. Server inferensi yang berbeda memiliki karakteristik performa yang bervariasi. Karakteristik ini memengaruhi performa model saat runtime. Pilih server yang memenuhi ekspektasi garis besar. |
Kumpulkan dan analisis metrik performa, dan identifikasi hambatan. |
Evaluasi telemetri dari alur data untuk memastikan bahwa target performa untuk operasi kecepatan transfer dan baca/tulis terpenuhi. Untuk indeks pencarian, pertimbangkan metrik seperti latensi kueri, throughput, dan akurasi hasil. Saat volume data meningkat, tingkat kesalahan tidak boleh meningkat. Menganalisis telemetri dari komponen kode seperti orkestrator, yang mengumpulkan data dari panggilan layanan. Menganalisis bahwa data dapat membantu Anda memahami waktu yang dihabiskan untuk pemrosesan lokal versus panggilan jaringan dan mengidentifikasi potensi latensi di komponen lain. Menilai pengalaman UI dengan menggunakan metrik keterlibatan untuk menentukan apakah pengguna terlibat secara positif atau frustrasi. Peningkatan waktu pada halaman dapat menunjukkan keduanya. Kemampuan multimodal, seperti respons suara atau video, dapat menyebabkan latensi yang signifikan, yang mengarah ke waktu respons yang lebih lama. |
Terus meningkatkan performa tolok ukur dengan menggunakan pengukuran kualitas dari produksi. | Terapkan pengumpulan otomatis dan analisis metrik performa, pemberitahuan, dan pelatihan ulang model untuk menjaga kemanjuran model. |
Kompromi. Ketika Anda mempertimbangkan kemampuan platform, Anda perlu menyeimbangkan biaya dan performa. Misalnya, SKU GPU mahal, jadi terus pantau pemanfaatan yang kurang optimal dan sesuaikan ukuran sumber daya dengan tepat sesuai kebutuhan. Setelah penyesuaian, uji pemanfaatan sumber daya untuk memastikan keseimbangan antara biaya sumber daya platform dan operasinya dan performa yang diharapkan, seperti yang ditunjukkan oleh garis besar. Untuk strategi Pengoptimalan Biaya, lihat Rekomendasi untuk mengoptimalkan biaya komponen.
Area desain berikut memberikan detail tentang prinsip dan pertimbangan sebelumnya: