Desain aplikasi untuk beban kerja AI di Azure
Ada banyak pilihan yang perlu dipertimbangkan ketika Anda membuat aplikasi yang memiliki fungsi AI. Persyaratan fungsional dan nonfungsi unik Anda, seperti apakah kasus penggunaan adalah pembelajaran mesin tradisional, generatif, deterministik, atau kombinasi jenis AI, membantu Anda mempersempit keputusan tingkat tinggi tentang desain Anda. Anda akan mempertimbangkan pilihan ini saat berpindah dari area desain tingkat tinggi ke area desain tingkat bawah.
Seperti yang dibahas dalam artikel Memulai, apakah akan membangun model Anda sendiri atau menggunakan model bawaan adalah salah satu keputusan penting pertama yang harus dibuat. Saat Anda menggunakan model bawaan, pertimbangkan poin-poin berikut:
Sumber katalog. Jelajahi repositori seperti Hugging Face Model Hub, TensorFlow Hub, dan katalog model portal Azure AI Foundry untuk menemukan model yang telah dilatih sebelumnya. Platform ini menyediakan katalog model yang luas untuk berbagai tugas.
Lisensi. Pastikan persyaratan lisensi model sesuai dengan tujuan keamanan, kepatuhan, dan aplikasi Anda, terutama jika Anda berencana untuk mendistribusikan aplikasi atau mengintegrasikannya dengan layanan lain.
Komponen utama. Lihat arsitektur model, data pelatihan, performa, dan lisensi untuk menentukan apakah model disesuaikan untuk tugas atau domain Anda.
Untuk panduan tentang memilih platform hosting, lihat Pertimbangan untuk platform hosting dan inferensi model.
Artikel ini menjelaskan area dan faktor desain umum yang perlu dipertimbangkan ketika Anda membuat keputusan tentang teknologi dan pendekatan.
Rekomendasi
Tabel berikut ini meringkas rekomendasi yang disediakan dalam artikel ini.
Rekomendasi | Deskripsi |
---|---|
Prioritaskan solusi off-the-shelf. | Setiap kali praktis, gunakan solusi platform as a service (PaaS) untuk menangani fungsi beban kerja. Gunakan model bawaan dan pra-terlatih jika memungkinkan untuk meminimalkan beban operasional dan pengembangan untuk beban kerja dan tim operasi Anda. |
Fungsi dan kemampuan abstrak jauh dari klien. | Pertahankan klien seramping mungkin dengan merancang layanan back-end untuk menangani masalah lintas fungsi seperti pembatasan laju dan operasi failover. |
Memblokir akses ke penyimpanan data. | Kode dalam sistem AI tidak boleh langsung mengakses penyimpanan data Anda. Merutekan semua permintaan data melalui lapisan API. API harus dibangun khusus untuk tugas yang diperlukan. |
Isolasi model Anda. | Seperti halnya penyimpanan data, gunakan lapisan API untuk bertindak sebagai gateway untuk permintaan ke model. Beberapa solusi PaaS seperti Azure OpenAI Service dan Azure Pembelajaran Mesin menggunakan SDK untuk tujuan ini. Banyak alat, seperti alur perintah, berisi dukungan asli untuk menyebarluaskan API ke layanan. |
Komponen desain agar dapat disebarkan secara independen. | Model AI, alur data, komponen front-end, dan layanan mikro seperti praproses data, ekstraksi fitur, dan inferensi harus dapat disebarkan secara independen untuk mengoptimalkan fleksibilitas, skalabilitas, dan pengoperasian beban kerja Anda. |
Komponen kontainerisasi
Untuk memastikan bahwa komponen yang dapat disebarkan secara independen sepenuhnya mandiri dan untuk menyederhanakan penyebaran Anda, pertimbangkan kontainerisasi sebagai bagian dari strategi desain Anda. Komponen berikut harus di-kontainer:
layanan mikro . Layanan mikro individual yang menangani fungsi spesifik aplikasi, seperti pemrosesan data, inferensi model, dan autentikasi pengguna, harus ditampung. Pendekatan ini memungkinkan penyebaran dan penskalaan independen serta memfasilitasi pembaruan dan pemeliharaan yang lebih efisien.
AI model. Mengkontainerkan model AI untuk memastikan bahwa semua dependensi, pustaka, dan konfigurasi dibundel menjadi satu. Pendekatan ini mengisolasi lingkungan model dari sistem host untuk mencegah konflik versi dan membantu memastikan perilaku yang konsisten di berbagai lingkungan penyebaran.
Alur pemrosesan data. Setiap tugas pemrosesan data yang mendahului atau mengikuti inferensi model, seperti pembersihan data, transformasi, dan ekstraksi fitur, harus ditampung. Pendekatan ini meningkatkan reproduksi dan menyederhanakan manajemen dependensi.
Layanan infrastruktur. Layanan yang menyediakan dukungan infrastruktur, seperti database dan caching, juga dapat memperoleh manfaat dari kontainerisasi. Kontainerisasi layanan ini membantu menjaga konsistensi versi dan memfasilitasi penskalaan dan manajemen komponen ini dengan lebih mudah.
Kolokasikan komponen AI dengan komponen beban kerja lainnya
Ada beberapa alasan bagus untuk mengkolokasi komponen AI Anda dengan komponen beban kerja lain, tetapi ada tradeoff yang terkait dengan melakukannya. Anda dapat memilih untuk mengalokasikan komponen karena alasan ini:
Sensitivitas Latensi. Kolokasikan komponen AI dengan layanan lain, seperti hosting API, ketika latensi rendah penting. Misalnya, jika Anda memerlukan inferensi real time untuk meningkatkan pengalaman pengguna, menempatkan model AI yang dekat dengan API dapat meminimalkan waktu yang diperlukan untuk mengambil hasil.
Kedekatan data. Ketika model AI memerlukan akses yang sering ke himpunan data tertentu, seperti indeks pencarian, kolokasi komponen ini dapat meningkatkan performa dan mengurangi overhead transfer data untuk mempercepat pemrosesan dan inferensi.
pemanfaatan sumber daya. Jika komponen tertentu memiliki kebutuhan sumber daya pelengkap, seperti CPU dan memori, kolokasi dapat mengoptimalkan penggunaan sumber daya. Misalnya, model yang memerlukan komputasi signifikan dapat berbagi sumber daya dengan layanan yang memiliki tuntutan lebih rendah secara bersamaan.
Kompromi. Ada kompromi yang perlu dipertimbangkan ketika Anda memutuskan apakah akan menempatkan komponen secara bersamaan. Anda mungkin kehilangan kemampuan untuk menyebarkan atau menskalakan komponen secara independen. Anda juga dapat meningkatkan risiko kerusakan dengan meningkatkan radius ledakan potensi insiden.
Mengevaluasi penggunaan orkestrator dalam solusi AI generatif
Orkestrator mengelola alur kerja dengan mengoordinasikan komunikasi di antara berbagai komponen solusi AI yang sebaliknya akan sulit dikelola dalam beban kerja yang kompleks. Kami menyarankan agar Anda membangun orkestrator ke dalam desain Anda jika beban kerja Anda memiliki salah satu karakteristik berikut:
alur kerja Kompleks. Alur kerja melibatkan beberapa langkah, seperti pra-pemrosesan, penautan model, atau pascapemrosesan.
logika bersyarat. Keputusan, seperti mengarahkan hasil ke model yang berbeda, perlu dibuat secara dinamis berdasarkan output model.
Scaling dan manajemen sumber daya. Anda perlu mengelola alokasi sumber daya untuk aplikasi volume tinggi dengan menggunakan penskalaan model yang didasarkan pada permintaan.
Manajemen Status. Anda perlu mengelola status dan memori interaksi pengguna.
Pengambilan data. Anda harus dapat mengambil data augmentasi dari indeks.
Pertimbangan untuk menggunakan beberapa model
Saat beban kerja Anda menggunakan beberapa model, orkestrator sangat penting. Orkestrator merutekan data dan permintaan ke model yang sesuai berdasarkan kasus penggunaan. Rencanakan aliran data antar model, memastikan bahwa output dari satu model dapat berfungsi sebagai input untuk model lain. Perencanaan mungkin melibatkan transformasi data atau proses pengayaan.
Orkestrasi dan agen
Untuk beban kerja AI generatif, pertimbangkan untuk mengambil berbasis agen, kadang-kadang disebut sebagai agenik, pendekatan ke desain Anda untuk menambahkan ekstensibilitas ke orkestrasi Anda. Agen menyediakan fungsionalitas terikat konteks. Mereka berbagi banyak karakteristik dengan layanan mikro dan melakukan tugas bersama dengan orkestrator. Orkestrator dapat mengiklankan tugas ke kumpulan agen, atau agen dapat mendaftarkan kemampuan dengan orkestrator. Kedua pendekatan memungkinkan orkestrator untuk secara dinamis menentukan cara memecah dan merutekan kueri di antara para agen.
Pendekatan berbasis agen sangat ideal ketika Anda memiliki permukaan UI umum yang memiliki berbagai fitur yang berkembang dan dapat diintegrasikan ke dalam pengalaman untuk menambahkan lebih banyak keterampilan dan data pendukung ke dalam alur seiring waktu.
Untuk beban kerja kompleks yang memiliki banyak agen, lebih efisien untuk memungkinkan agen berkolaborasi secara dinamis daripada menggunakan orkestrator untuk memecah tugas dan menetapkannya.
Komunikasi antara orkestrator dan agen harus mengikuti pola topik-antrean, di mana agen adalah pelanggan topik dan orkestrator mengirimkan tugas melalui antrean.
Menggunakan pendekatan agenik berfungsi paling baik dengan pola orkestrasi daripada pola koreografi.
Untuk informasi selengkapnya, lihat Pertimbangan untuk platform orkestrasi.
Mengevaluasi penggunaan gateway API
Gateway API seperti Azure API Management menyembunyikan fungsi dari API, yang memisahkan dependensi antara layanan yang meminta dan API. Gateway API memberikan manfaat berikut untuk beban kerja AI:
Beberapa layanan mikro. Gateway membantu Anda mengelola beberapa titik akhir model AI saat Anda perlu menerapkan kebijakan yang konsisten, seperti pembatasan tarif dan autentikasi.
Manajemen lalu lintas. Gateway membantu Anda mengelola aplikasi dengan lalu lintas tinggi secara efisien dengan mengelola permintaan, melakukan caching respons, dan mendistribusikan beban.
Keamanan . Gateway menyediakan kontrol akses terpusat, pengelogan, dan perlindungan ancaman untuk API di belakang gateway.
Menggunakan pola desain aplikasi AI
Beberapa pola desain umum telah ditetapkan di industri untuk aplikasi AI. Anda dapat menggunakannya untuk menyederhanakan desain dan implementasi Anda. Pola desain ini meliputi:
ansambel Model
. Pola desain ini melibatkan menggabungkan prediksi dari beberapa model untuk meningkatkan akurasi dan ketahanan dengan mengurangi kelemahan model individu. arsitektur Layanan Mikro. Memisahkan komponen menjadi layanan yang dapat disebarkan secara independen meningkatkan skalabilitas dan pemeliharaan. Ini memungkinkan tim untuk bekerja pada berbagai bagian aplikasi secara bersamaan.
arsitektur berbasis peristiwa. Menggunakan peristiwa untuk memicu tindakan memungkinkan komponen yang dipisahkan dan pemrosesan real time untuk membuat sistem lebih responsif dan dapat beradaptasi dengan mengubah data.
Pola RAG dan strategi potongan
Pola Retrieval-Augmented Generation (RAG) menggabungkan model generatif dengan sistem pengambilan, yang memungkinkan model mengakses sumber pengetahuan eksternal untuk meningkatkan konteks dan akurasi. Lihat serangkaian artikel Mendesain dan mengembangkan solusi RAG untuk panduan mendalam tentang pola ini. Ada dua pendekatan RAG:
tepat waktu . Pendekatan ini mengambil informasi yang relevan secara dinamis pada saat permintaan untuk memastikan bahwa data terbaru selalu digunakan. Ini bermanfaat dalam skenario yang memerlukan konteks real-time, tetapi mungkin memperkenalkan latensi.
yang telah dihitung sebelumnya (di-cache). Metode ini melibatkan cache hasil pengambilan untuk mengurangi waktu respons dengan menyajikan data yang telah dihitung sebelumnya. Ini cocok untuk skenario permintaan tinggi di mana data yang konsisten dapat disimpan. Data mungkin tidak mencerminkan informasi terbaru, yang dapat menyebabkan masalah relevansi.
Saat Anda menggunakan pola RAG, strategi penggugusan yang terdefinisi dengan baik sangat penting untuk mengoptimalkan efisiensi performa beban kerja Anda. Mulailah dengan panduan disediakan dalam Design dan kembangkan seri solusi RAG. Berikut adalah beberapa rekomendasi tambahan yang perlu dipertimbangkan:
Terapkan strategi penggugusan dinamis yang menyesuaikan ukuran gugus berdasarkan jenis data, kompleksitas kueri, dan persyaratan pengguna. Melakukannya dapat meningkatkan efisiensi pengambilan dan pelestarian konteks.
Masukkan perulangan umpan balik untuk menyempurnakan strategi penggugusan berdasarkan data performa.
Pertahankan silsilah data untuk potongan dengan mempertahankan metadata dan pengidentifikasi unik yang menautkan kembali ke sumber grounding. Dokumentasi silsilah data yang jelas membantu memastikan bahwa pengguna memahami asal data, transformasinya, dan bagaimana hal itu berkontribusi pada output.
Kapan menggunakan pola desain
Pertimbangkan untuk menggunakan pola desain ini saat kasus penggunaan Anda memenuhi kondisi yang dijelaskan:
alur kerja kompleks. Ketika Anda memiliki alur kerja atau interaksi yang kompleks antara beberapa model AI, pola seperti RAG atau layanan mikro dapat membantu mengelola kompleksitas dan memastikan komunikasi yang jelas antar komponen.
persyaratan skalabilitas . Jika permintaan pada aplikasi Anda berfluktuasi, pola seperti layanan mikro memungkinkan komponen individual untuk menskalakan secara independen untuk mengakomodasi berbagai beban tanpa memengaruhi performa sistem secara keseluruhan.
Aplikasi berbasis data. Jika aplikasi Anda memerlukan penanganan data yang luas, arsitektur berbasis peristiwa dapat memberikan respons real time dan pemrosesan data yang efisien.
Catatan
Aplikasi atau POC yang lebih kecil biasanya tidak mendapat manfaat dari pola desain ini. Aplikasi ini harus dirancang untuk kesederhanaan. Demikian juga, jika Anda memiliki batasan sumber daya (anggaran, waktu, atau headcount), menggunakan desain sederhana yang dapat direfaktor nanti adalah pendekatan yang lebih baik daripada mengadopsi pola desain yang kompleks.
Pilih kerangka kerja dan pustaka yang tepat
Pilihan kerangka kerja dan pustaka terjalin erat dengan desain aplikasi. Hal ini memengaruhi performa, skalabilitas, dan keberlanjutan. Namun, persyaratan desain dapat membatasi pilihan kerangka kerja Anda. Misalnya, penggunaan Semantic Kernel SDK sering mendorong desain berbasis layanan mikro di mana setiap agen atau fungsi dienkapsulasi dalam layanannya sendiri. Pertimbangkan faktor-faktor ini saat Anda memilih kerangka kerja dan pustaka:
Persyaratan aplikasi. Persyaratan aplikasi, seperti pemrosesan real-time atau pemrosesan batch, dapat membatasi pilihan kerangka kerja. Misalnya, jika aplikasi memerlukan latensi rendah, Anda mungkin perlu menggunakan kerangka kerja yang memiliki kemampuan asinkron.
Integrasi membutuhkan. Desain mungkin memerlukan integrasi tertentu dengan sistem atau layanan lain. Jika kerangka kerja tidak mendukung protokol atau format data yang diperlukan, Anda mungkin perlu mempertimbangkan kembali desain atau memilih kerangka kerja yang berbeda.
keahlian Tim. Set keterampilan tim pengembangan dapat membatasi pilihan kerangka kerja. Desain yang bergantung pada kerangka kerja yang kurang dikenal dapat menyebabkan peningkatan waktu dan kompleksitas pengembangan, jadi Anda mungkin ingin menggunakan alat yang lebih akrab.
Merancang strategi untuk identitas, otorisasi, dan akses
Secara umum, Anda harus mendekati identitas, otorisasi, dan akses dengan cara yang sama seperti yang Anda lakukan ketika Anda biasanya merancang aplikasi. Anda harus menggunakan IdP, seperti ID Microsoft Entra, untuk mengelola area ini sebanyak mungkin. Namun, banyak aplikasi AI memiliki tantangan unik yang mengharuskan pertimbangan khusus. Terkadang menantang atau bahkan tidak mungkin untuk mempertahankan daftar kontrol akses (ACL) melalui sistem tanpa pengembangan baru.
Lihat Panduan untuk merancang solusi inferensi RAG multipenyewa yang aman untuk mempelajari cara menambahkan metadata pemangkasan keamanan ke dokumen dan gugus. Pemangkasan ini dapat didasarkan pada kelompok keamanan atau konstruksi organisasi serupa.
Pertimbangkan persyaratan nonfungsional
Beban kerja Anda mungkin memiliki persyaratan nonfungsi yang menimbulkan tantangan karena faktor-faktor yang melekat pada teknologi AI. Berikut adalah beberapa persyaratan umum yang tidak berfungsi dan tantangannya:
Latensi inferensi/ batas waktu model. Aplikasi AI sering memerlukan respons real time atau hampir real-time. Merancang untuk latensi rendah sangat penting. Ini melibatkan pengoptimalan arsitektur model, alur pemrosesan data, dan sumber daya perangkat keras. Menerapkan strategi penembolokan dan memastikan pemuatan model yang efisien juga penting untuk menghindari batas waktu dan memberikan respons tepat waktu.
Token atau meminta batasan throughput. Banyak layanan AI memberlakukan batasan jumlah token atau throughput permintaan, terutama dengan model berbasis cloud. Merancang untuk batasan ini memerlukan manajemen ukuran input yang cermat, pembuatan batch permintaan bila perlu, dan berpotensi menerapkan mekanisme pembatasan atau antrean tarif untuk mengelola ekspektasi pengguna dan mencegah gangguan layanan.
Skenario biaya dan penagihan balik. Merancang untuk transparansi biaya melibatkan penerapan fitur pelacakan penggunaan dan pelaporan yang memfasilitasi model penagihan balik. Fitur-fitur ini memungkinkan organisasi untuk mengalokasikan biaya secara akurat di seluruh departemen. Manajemen penagihan balik biasanya ditangani oleh gateway API, seperti Azure API Management.