Arsitektur referensi obrolan end-to-end OpenAI garis besar

Azure OpenAI Service
Azure Machine Learning
Azure App Service
Azure Key Vault
Azure Monitor

Aplikasi obrolan perusahaan dapat memberdayakan karyawan melalui interaksi percakapan. Ini terutama berlaku karena kemajuan berkelanjutan dari model bahasa, seperti model GPT OpenAI dan model LLaMA Meta. Aplikasi obrolan ini terdiri dari antarmuka pengguna obrolan (UI), repositori data yang berisi informasi khusus domain yang berkaitan dengan kueri pengguna, model bahasa yang beralasan atas data khusus domain untuk menghasilkan respons yang relevan, dan orkestrator yang mengawasi interaksi antara komponen-komponen ini.

Artikel ini menyediakan arsitektur dasar untuk membangun dan menyebarkan aplikasi obrolan perusahaan yang menggunakan model bahasa Azure OpenAI Service. Arsitektur menggunakan alur permintaan Azure Pembelajaran Mesin untuk membuat alur yang dapat dieksekusi. Alur yang dapat dieksekusi ini mengatur alur kerja dari permintaan masuk ke penyimpanan data untuk mengambil data grounding untuk model bahasa, bersama dengan logika Python lain yang diperlukan. Alur yang dapat dieksekusi disebarkan ke kluster komputasi Pembelajaran Mesin di belakang titik akhir online terkelola.

Hosting antarmuka pengguna obrolan kustom (UI) mengikuti panduan aplikasi web layanan aplikasi dasar untuk menyebarkan aplikasi web yang aman, redundan zona, dan sangat tersedia di Azure App Services. Dalam arsitektur itu, App Service berkomunikasi ke solusi platform as a service (PaaS) Azure melalui integrasi jaringan virtual melalui titik akhir privat. App Service UI obrolan berkomunikasi dengan titik akhir online terkelola untuk alur melalui titik akhir privat. Akses publik ke ruang kerja Pembelajaran Mesin dinonaktifkan.

Penting

Artikel ini tidak membahas komponen atau keputusan arsitektur dari aplikasi web App Service dasar. Baca artikel tersebut untuk panduan arsitektur tentang cara menghosting UI obrolan.

Ruang kerja Pembelajaran Mesin dikonfigurasi dengan isolasi jaringan virtual terkelola yang mengharuskan semua koneksi keluar disetujui. Dengan konfigurasi ini, jaringan virtual terkelola dibuat, bersama dengan titik akhir privat terkelola yang memungkinkan konektivitas ke sumber daya privat, seperti tempat kerja Azure Storage, Azure Container Registry, dan Azure OpenAI. Koneksi privat ini digunakan selama penulisan dan pengujian alur, dan oleh alur yang disebarkan ke komputasi Pembelajaran Mesin.

Tip

Logo GitHub. Artikel ini didukung oleh implementasi referensi yang menampilkan implementasi obrolan end-to-end garis besar di Azure. Anda dapat menggunakan implementasi ini sebagai dasar untuk pengembangan solusi kustom dalam langkah pertama Anda menuju produksi.

Sistem

Diagram yang memperlihatkan arsitektur obrolan end-to-end garis besar dengan OpenAI.

Unduh file Visio arsitektur ini.

Komponen

Banyak komponen arsitektur ini sama dengan arsitektur obrolan end-to-end Azure OpenAI dasar. Daftar berikut ini hanya menyoroti perubahan pada arsitektur dasar.

  • Azure OpenAI digunakan dalam arsitektur dasar dan garis besar ini. Azure OpenAI adalah layanan terkelola penuh yang menyediakan akses REST API ke model bahasa Azure OpenAI, termasuk set model GPT-4, GPT-3.5-Turbo, dan penyematan. Arsitektur garis besar memanfaatkan fitur perusahaan seperti jaringan virtual dan tautan privat yang tidak diterapkan arsitektur dasar.
  • Application Gateway adalah load balancer lapisan 7 (HTTP/S) dan manajer lalu lintas web. Ini menggunakan perutean berbasis jalur URL untuk mendistribusikan lalu lintas masuk di seluruh zona ketersediaan dan melepas enkripsi untuk meningkatkan performa aplikasi.
  • Web Application Firewall (WAF) adalah layanan cloud-native yang melindungi aplikasi web dari eksploitasi umum seperti injeksi SQL dan scripting lintas situs. WAF memberikan visibilitas ke lalu lintas ke dan dari aplikasi web Anda, memungkinkan Anda memantau dan mengamankan aplikasi Anda.
  • Azure Key Vault adalah layanan yang menyimpan dan mengelola rahasia, kunci enkripsi, dan sertifikat dengan aman. Ini mempusatkan manajemen informasi sensitif.
  • Jaringan virtual Azure adalah layanan yang memungkinkan Anda membuat jaringan virtual privat yang terisolasi dan aman di Azure. Untuk aplikasi web di App Service, Anda memerlukan subnet jaringan virtual untuk menggunakan titik akhir privat untuk komunikasi yang aman jaringan antar sumber daya.
  • Private Link memungkinkan klien mengakses layanan platform as a service (PaaS) Azure langsung dari jaringan virtual privat tanpa menggunakan alamat IP publik.
  • Azure DNS adalah layanan hosting untuk domain DNS yang menyediakan resolusi nama menggunakan infrastruktur Microsoft Azure. Zona DNS privat menyediakan cara untuk memetakan nama domain layanan yang sepenuhnya memenuhi syarat (FQDN) ke alamat IP titik akhir privat.

Pertimbangan dan rekomendasi

Keandalan

Keandalan memastikan aplikasi Anda dapat mencapai komitmen yang Anda buat kepada pelanggan Anda. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Keandalan.

Arsitektur aplikasi web App Service dasar berfokus pada redundansi zona untuk layanan regional utama. Zona ketersediaan adalah lokasi yang terpisah secara fisik dalam suatu wilayah. Mereka memberikan redundansi dalam wilayah untuk layanan pendukung ketika dua instans atau lebih disebarkan di seluruh wilayah tersebut. Ketika satu zona mengalami waktu henti, zona lain dalam wilayah tersebut mungkin masih tidak terpengaruh. Arsitektur ini juga memastikan cukup instans layanan Azure dan konfigurasi layanan tersebut untuk tersebar di seluruh zona ketersediaan. Untuk informasi selengkapnya, lihat garis besar untuk meninjau panduan tersebut.

Bagian ini membahas keandalan dari perspektif komponen dalam arsitektur ini yang tidak dibahas dalam garis besar App Service, termasuk Pembelajaran Mesin, Azure OpenAI, dan AI Search.

Redundansi zona untuk penyebaran alur

Penyebaran perusahaan biasanya memerlukan redundansi zona. Untuk mencapai redundansi zona di Azure, sumber daya harus mendukung zona ketersediaan dan Anda harus menyebarkan setidaknya tiga instans sumber daya atau mengaktifkan dukungan platform saat kontrol instans tidak tersedia. Saat ini, komputasi Pembelajaran Mesin tidak menawarkan dukungan untuk zona ketersediaan. Untuk mengurangi dampak potensial dari bencana tingkat pusat data pada komponen Pembelajaran Mesin, perlu untuk membangun kluster di berbagai wilayah bersama dengan menyebarkan load balancer untuk mendistribusikan panggilan di antara kluster ini. Anda dapat menggunakan pemeriksaan kesehatan untuk membantu memastikan bahwa panggilan hanya dirutekan ke kluster yang berfungsi dengan baik.

Menyebarkan alur prompt tidak terbatas pada kluster komputasi Pembelajaran Mesin. Alur yang dapat dieksekusi, menjadi aplikasi kontainer, dapat disebarkan ke layanan Azure apa pun yang kompatibel dengan kontainer. Opsi ini mencakup layanan seperti Azure Kubernetes Service (AKS), Azure Functions, Azure Container Apps, dan App Service. Masing-masing layanan tersebut mendukung zona ketersediaan. Untuk mencapai redundansi zona untuk eksekusi alur prompt, tanpa kompleksitas tambahan dari penyebaran multi-wilayah, Anda harus menyebarkan alur Anda ke salah satu layanan tersebut.

Diagram berikut menunjukkan arsitektur alternatif tempat alur perintah disebarkan ke App Service. App Service digunakan dalam arsitektur ini karena beban kerja sudah menggunakannya untuk UI obrolan dan tidak akan mendapat manfaat dari memperkenalkan teknologi baru ke dalam beban kerja. Tim beban kerja yang memiliki pengalaman dengan AKS harus mempertimbangkan penyebaran di lingkungan tersebut, terutama jika AKS digunakan untuk komponen lain dalam beban kerja.

Diagram yang memperlihatkan arsitektur obrolan end-to-end garis besar dengan OpenAI dengan alur perintah yang disebarkan ke App Service.

Diagram diberi nomor untuk area penting dalam arsitektur ini:

  1. Alur masih ditulis dalam alur permintaan Pembelajaran Mesin dan arsitektur jaringan Pembelajaran Mesin tidak berubah. Penulis alur masih terhubung ke pengalaman penulisan ruang kerja melalui titik akhir privat, dan titik akhir privat terkelola digunakan untuk terhubung ke layanan Azure saat menguji alur.

  2. Baris bertitik ini menunjukkan bahwa alur yang dapat dieksekusi dalam kontainer didorong ke Container Registry. Tidak ditampilkan dalam diagram adalah alur yang menampung alur dan mendorong ke Container Registry.

  3. Ada aplikasi web lain yang disebarkan ke paket App Service yang sama yang sudah menghosting UI obrolan. Aplikasi web baru menghosting alur prompt kontainer, yang dikolokasikan pada paket App Service yang sama yang sudah berjalan minimal tiga instans, yang tersebar di zona ketersediaan. Instans App Service ini terhubung ke Container Registry melalui titik akhir privat saat memuat gambar kontainer alur perintah.

  4. Kontainer alur prompt perlu terhubung ke semua layanan dependen untuk eksekusi alur. Dalam arsitektur ini, kontainer alur perintah tersambung ke AI Search dan Azure OpenAI. Layanan PaaS yang hanya diekspos ke subnet titik akhir privat terkelola Pembelajaran Mesin sekarang juga perlu diekspos di jaringan virtual sehingga garis pandang dapat dibuat dari App Service.

Azure OpenAI - keandalan

Azure OpenAI saat ini tidak mendukung zona ketersediaan. Untuk mengurangi dampak potensial dari bencana tingkat pusat data pada penyebaran model di Azure OpenAI, perlu untuk menyebarkan Azure OpenAI ke berbagai wilayah bersama dengan menyebarkan load balancer untuk mendistribusikan panggilan di antara wilayah tersebut. Anda dapat menggunakan pemeriksaan kesehatan untuk membantu memastikan bahwa panggilan hanya dirutekan ke kluster yang berfungsi dengan baik.

Untuk mendukung beberapa instans secara efektif, kami sarankan Anda mengeksternalisasi file penyempurnaan, seperti ke akun Penyimpanan geo-redundan. Pendekatan ini meminimalkan status yang disimpan di Azure OpenAI untuk setiap wilayah. Anda masih harus menyempurnakan file untuk setiap instans untuk menghosting penyebaran model.

Penting untuk memantau throughput yang diperlukan dalam hal token per menit (TPM) dan permintaan per menit (RPM). Pastikan TPM yang cukup ditetapkan dari kuota Anda untuk memenuhi permintaan penyebaran Anda dan mencegah panggilan ke model yang Anda sebarkan dibatasi. Gateway seperti Azure API Management dapat disebarkan di depan layanan atau layanan OpenAI Anda dan dapat dikonfigurasi untuk coba lagi jika ada kesalahan sementara dan pembatasan. API Management juga dapat digunakan sebagai pemutus sirkuit untuk mencegah layanan kewalahan dengan panggilan, melebihi kuotanya.

Pencarian AI - keandalan

Sebarkan Pencarian AI dengan tingkat harga Standar atau lebih tinggi di wilayah yang mendukung zona ketersediaan, dan sebarkan tiga replika atau lebih. Replika secara otomatis tersebar merata di seluruh zona ketersediaan.

Pertimbangkan panduan berikut untuk menentukan jumlah replika dan partisi yang sesuai:

  • Memantau Pencarian AI.

  • Gunakan metrik pemantauan dan log dan analisis performa untuk menentukan jumlah replika yang sesuai untuk menghindari pembatasan dan partisi berbasis kueri dan untuk menghindari pembatasan berbasis indeks.

Pembelajaran Mesin - keandalan

Jika Anda menyebarkan ke kluster komputasi di belakang titik akhir online yang dikelola Pembelajaran Mesin, pertimbangkan panduan berikut mengenai penskalaan:

  • Skalakan titik akhir online Anda secara otomatis untuk memastikan kapasitas yang cukup tersedia untuk memenuhi permintaan. Jika sinyal penggunaan tidak cukup tepat waktu karena penggunaan ledakan, pertimbangkan provisi berlebih untuk mencegah dampak pada keandalan dari terlalu sedikit instans yang tersedia.

  • Pertimbangkan untuk membuat aturan penskalaan berdasarkan metrik penyebaran seperti metrik beban CPU dan titik akhir seperti latensi permintaan.

  • Tidak kurang dari tiga instans harus disebarkan untuk penyebaran produksi aktif.

  • Hindari penyebaran terhadap instans yang digunakan. Sebagai gantinya, sebarkan ke penyebaran baru dan alihkan lalu lintas setelah penyebaran siap menerima lalu lintas.

Catatan

Panduan skalabilitas App Service yang sama dari arsitektur garis besar berlaku jika Anda menyebarkan alur Anda ke App Service.

Keamanan

Keamanan memberikan jaminan terhadap serangan yang disukai dan penyalahgunaan data dan sistem berharga Anda. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Keamanan.

Arsitektur ini memperluas jejak keamanan yang diterapkan dalam obrolan end-to-end Dasar dengan arsitektur Azure OpenAI. Arsitektur mengimplementasikan perimeter keamanan jaringan, bersama dengan perimeter identitas yang diterapkan dalam arsitektur dasar. Dari perspektif jaringan, satu-satunya hal yang harus dapat diakses dari internet adalah UI obrolan melalui Application Gateway. Dari perspektif identitas, UI obrolan harus mengautentikasi dan mengotorisasi permintaan. Identitas terkelola digunakan, jika memungkinkan, untuk mengautentikasi aplikasi ke layanan Azure.

Seiring dengan pertimbangan jaringan, bagian ini menjelaskan pertimbangan keamanan untuk rotasi kunci dan penyetelan halus model Azure OpenAI.

Jaringan

Seiring dengan akses berbasis identitas, keamanan jaringan adalah inti dari arsitektur obrolan end-to-end garis besar yang menggunakan OpenAI. Dari tingkat tinggi, arsitektur jaringan memastikan bahwa:

  • Hanya satu titik masuk yang aman untuk lalu lintas UI obrolan.
  • Lalu lintas jaringan difilter.
  • Data saat transit dienkripsi secara end-to-end dengan Keamanan Lapisan Transportasi (TLS).
  • Penyelundupan data diminimalkan dengan menggunakan Private Link untuk menjaga lalu lintas di Azure.
  • Sumber daya jaringan dikelompokkan secara logis dan diisolasi satu sama lain melalui segmentasi jaringan.
Alur jaringan

Diagram yang memperlihatkan arsitektur obrolan end-to-end garis besar dengan OpenAI dengan nomor alur.

Dua alur dalam diagram ini tercakup dalam arsitektur aplikasi web App Service dasar: Alur masuk dari pengguna akhir ke UI obrolan (1) dan alur dari App Service ke layanan Azure PaaS (2). Bagian ini berfokus pada alur titik akhir online Pembelajaran Mesin. Alur berikut berasal dari UI obrolan yang berjalan di aplikasi web App Service dasar ke alur yang disebarkan ke komputasi Pembelajaran Mesin:

  1. Panggilan dari UI obrolan yang dihosting App Service dirutekan melalui titik akhir privat ke titik akhir online Pembelajaran Mesin.
  2. Titik akhir online merutekan panggilan ke server yang menjalankan alur yang disebarkan. Titik akhir online bertindak sebagai load balancer dan router.
  3. Panggilan ke layanan Azure PaaS yang diperlukan oleh alur yang disebarkan dirutekan melalui titik akhir privat terkelola.
Masuk ke Pembelajaran Mesin

Dalam arsitektur ini, akses publik ke ruang kerja Pembelajaran Mesin dinonaktifkan. Pengguna dapat mengakses ruang kerja melalui akses privat karena arsitektur mengikuti titik akhir privat untuk konfigurasi ruang kerja Pembelajaran Mesin. Bahkan, titik akhir privat digunakan di seluruh arsitektur ini untuk melengkapi keamanan berbasis identitas. Misalnya, UI obrolan yang dihosting App Service Anda dapat terhubung ke layanan PaaS yang tidak terekspos ke internet publik, termasuk titik akhir Pembelajaran Mesin.

Akses titik akhir privat juga diperlukan untuk menyambungkan ke ruang kerja Pembelajaran Mesin untuk penulisan alur.

Diagram yang memperlihatkan pengguna yang menyambungkan ke ruang kerja Pembelajaran Mesin melalui jump box untuk menulis alur OpenAI dengan nomor alur.

Diagram menunjukkan penulis alur perintah yang terhubung melalui Azure Bastion ke jump box komputer virtual. Dari jump box tersebut, penulis dapat terhubung ke ruang kerja Pembelajaran Mesin melalui titik akhir privat di jaringan yang sama dengan jump box. Konektivitas ke jaringan virtual juga dapat dicapai melalui gateway ExpressRoute atau VPN dan peering jaringan virtual.

Mengalir dari jaringan virtual yang dikelola Pembelajaran Mesin ke layanan Azure PaaS

Kami menyarankan agar Anda mengonfigurasi ruang kerja Pembelajaran Mesin untuk isolasi jaringan virtual terkelola yang mengharuskan semua koneksi keluar disetujui. Arsitektur ini mengikuti rekomendasi tersebut. Ada dua jenis aturan keluar yang disetujui. Aturan keluar yang diperlukan adalah sumber daya yang diperlukan agar solusi berfungsi, seperti Container Registry dan Storage. Aturan keluar yang ditentukan pengguna adalah untuk sumber daya kustom, seperti Azure OpenAI atau Pencarian AI, yang akan digunakan alur kerja Anda. Anda harus mengonfigurasi aturan keluar yang ditentukan pengguna. Aturan keluar yang diperlukan dikonfigurasi saat jaringan virtual terkelola dibuat.

Aturan keluar dapat berupa titik akhir privat, tag layanan, atau nama domain yang sepenuhnya memenuhi syarat (FQDN) untuk titik akhir publik eksternal. Dalam arsitektur ini, konektivitas ke layanan Azure seperti Container Registry, Storage, Azure Key Vault, Azure OpenAI, dan AI Search terhubung melalui tautan privat. Meskipun tidak dalam arsitektur ini, beberapa operasi umum yang mungkin memerlukan konfigurasi aturan keluar FQDN mengunduh paket pip, mengkloning repositori GitHub, atau mengunduh gambar kontainer dasar dari repositori eksternal.

Segmentasi dan keamanan jaringan virtual

Jaringan dalam arsitektur ini memiliki subnet terpisah untuk tujuan berikut:

  • Application Gateway
  • Komponen integrasi App Service
  • Titik Akhir Privat
  • Azure Bastion
  • Mesin virtual jump box
  • Pelatihan - tidak digunakan untuk pelatihan model dalam arsitektur ini
  • Penilaian

Setiap subnet memiliki kelompok keamanan jaringan (NSG) yang membatasi lalu lintas masuk dan keluar untuk subnet tersebut hanya untuk apa yang diperlukan. Tabel berikut ini memperlihatkan tampilan aturan NSG yang disederhanakan yang ditambahkan garis besar ke setiap subnet. Tabel menyediakan nama aturan dan fungsi.

Subnet Masuk Keluar
snet-appGateway Tunjangan untuk IP sumber pengguna UI obrolan kami (seperti internet publik), ditambah item yang diperlukan untuk layanan. Akses ke titik akhir privat App Service, ditambah item yang diperlukan untuk layanan.
snet-PrivateEndpoints Izinkan hanya lalu lintas dari jaringan virtual. Izinkan hanya lalu lintas ke jaringan virtual.
snet-AppService Izinkan hanya lalu lintas dari jaringan virtual. Izinkan akses ke titik akhir privat dan Azure Monitor.
AzureBastionSubnet Lihat panduan dalam Bekerja dengan akses NSG dan Azure Bastion. Lihat panduan dalam Bekerja dengan akses NSG dan Azure Bastion.
snet-jumpbox Izinkan Protokol Desktop Jauh masuk (RDP) dan SSH dari subnet host Azure Bastion. Mengizinkan akses ke titik akhir privat
snet-agents Izinkan hanya lalu lintas dari jaringan virtual. Izinkan hanya lalu lintas ke jaringan virtual.
pelatihan snet Izinkan hanya lalu lintas dari jaringan virtual. Izinkan hanya lalu lintas ke jaringan virtual.
penilaian snet Izinkan hanya lalu lintas dari jaringan virtual. Izinkan hanya lalu lintas ke jaringan virtual.

Semua lalu lintas lainnya secara eksplisit ditolak.

Pertimbangkan poin-poin berikut saat menerapkan segmentasi dan keamanan jaringan virtual.

  • Aktifkan DDoS Protection untuk jaringan virtual dengan subnet yang merupakan bagian dari gateway aplikasi dengan alamat IP publik.

  • Tambahkan NSG ke setiap subnet jika memungkinkan. Gunakan aturan paling ketat yang memungkinkan fungsionalitas solusi penuh.

  • Gunakan kelompok keamanan aplikasi untuk mengelompokkan NSG. Pengelompokan NSG membuat pembuatan aturan lebih mudah untuk lingkungan yang kompleks.

Rotasi kunci

Ada dua layanan dalam arsitektur ini yang menggunakan autentikasi berbasis kunci: Azure OpenAI dan titik akhir online terkelola Pembelajaran Mesin. Karena Anda menggunakan autentikasi berbasis kunci untuk layanan ini, penting untuk:

  • Simpan kunci di penyimpanan aman, seperti Key Vault, untuk akses sesuai permintaan dari klien resmi, seperti Azure Web App yang menghosting kontainer alur perintah.

  • Menerapkan strategi rotasi utama. Jika Anda memutar kunci secara manual, buat kebijakan kedaluwarsa kunci dan gunakan Azure Policy untuk memantau apakah kunci telah diputar.

Penyetelan halus model OpenAI

Jika Anda menyempurnakan model OpenAI dalam implementasi Anda, pertimbangkan panduan berikut:

  • Jika Anda mengunggah data pelatihan untuk penyempurnaan, pertimbangkan untuk menggunakan kunci yang dikelola pelanggan untuk mengenkripsi data tersebut.

  • Jika Anda menyimpan data pelatihan di penyimpanan seperti Azure Blob Storage, pertimbangkan untuk menggunakan kunci yang dikelola pelanggan untuk enkripsi data, identitas terkelola untuk mengontrol akses ke data, dan titik akhir privat untuk menyambungkan ke data.

Tata kelola melalui kebijakan

Untuk membantu memastikan keselarasan dengan keamanan, pertimbangkan untuk menggunakan Azure Policy dan kebijakan jaringan sehingga penyebaran selaras dengan persyaratan beban kerja. Penggunaan otomatisasi platform melalui kebijakan mengurangi beban langkah-langkah validasi manual dan memastikan tata kelola meskipun alur dilewati. Pertimbangkan kebijakan keamanan berikut:

  • Nonaktifkan kunci atau akses autentikasi lokal lainnya dalam layanan seperti layanan Azure AI dan Key Vault.
  • Memerlukan konfigurasi khusus aturan akses jaringan atau NSG.
  • Memerlukan enkripsi, seperti penggunaan kunci yang dikelola pelanggan.

Penetapan peran ruang kerja Azure Pembelajaran Mesin untuk Azure Key Vault

Identitas terkelola ruang kerja Azure Pembelajaran Mesin memerlukan penetapan peran sarana kontrol (Kontributor) dan sarana data (Administrator Key Vault). Ini berarti bahwa identitas ini memiliki akses baca dan tulis ke semua rahasia, kunci, dan sertifikat yang disimpan di Azure Key Vault. Jika beban kerja Anda memiliki layanan selain Azure Pembelajaran Mesin yang memerlukan akses ke rahasia, kunci, atau sertifikat di Key Vault, beban kerja atau tim keamanan Anda mungkin tidak nyaman dengan identitas terkelola ruang kerja Azure Pembelajaran Mesin yang memiliki akses ke artefak tersebut. Dalam hal ini, pertimbangkan untuk menyebarkan instans Key Vault khusus untuk ruang kerja Azure Pembelajaran Mesin, dan instans Azure Key Vault lainnya yang sesuai untuk bagian lain dari beban kerja Anda.

Pengoptimalan biaya

Optimalisasi biaya adalah tentang mencari cara untuk mengurangi pengeluaran yang tidak perlu dan meningkatkan efisiensi operasional. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Pengoptimalan Biaya.

Untuk melihat contoh harga untuk skenario ini, gunakan kalkulator harga Azure. Anda perlu menyesuaikan contoh agar sesuai dengan penggunaan Anda karena contoh ini hanya menyertakan komponen yang disertakan dalam arsitektur. Komponen termahal dalam skenario adalah UI obrolan dan komputasi alur prompt dan Pencarian AI. Optimalkan sumber daya tersebut untuk menghemat biaya terbanyak.

Compute

Pembelajaran Mesin prompt flow mendukung beberapa opsi untuk menghosting alur yang dapat dieksekusi. Opsi ini mencakup titik akhir online terkelola di Pembelajaran Mesin, AKS, App Service, dan Azure Kubernetes Service. Masing-masing opsi ini memiliki model penagihannya sendiri. Pilihan komputasi memengaruhi biaya keseluruhan solusi.

Azure OpenAI

Azure OpenAI adalah layanan berbasis konsumsi, dan seperti halnya layanan berbasis konsumsi apa pun, mengontrol permintaan terhadap pasokan adalah kontrol biaya utama. Untuk melakukannya di Azure OpenAI secara khusus, Anda perlu menggunakan kombinasi pendekatan:

  • Mengontrol klien. Permintaan klien adalah sumber biaya utama dalam model konsumsi, sehingga mengontrol perilaku klien sangat penting. Semua klien harus:

    • Disetujui. Hindari mengekspos layanan singgah mendukung akses gratis untuk semua. Batasi akses baik melalui kontrol jaringan maupun identitas, seperti kunci atau kontrol akses berbasis peran (RBAC).

    • Dikontrol sendiri. Mengharuskan klien untuk menggunakan batasan pembatasan token yang ditawarkan oleh panggilan API, seperti max_tokens dan max_completions.

    • Gunakan batching, di mana praktis. Tinjau klien untuk memastikan mereka membuat batch dengan tepat.

    • Optimalkan input prompt dan panjang respons. Permintaan yang lebih panjang mengonsumsi lebih banyak token, meningkatkan biaya, namun permintaan yang kehilangan konteks yang memadai tidak membantu model menghasilkan hasil yang baik. Buat perintah ringkas yang memberikan konteks yang cukup untuk memungkinkan model menghasilkan respons yang berguna. Demikian juga, pastikan Anda mengoptimalkan batas panjang respons.

  • Penggunaan playground Azure OpenAI harus seperlunya dan pada instans praproduksi, sehingga aktivitas tersebut tidak dikenakan biaya produksi.

  • Pilih model AI yang tepat. Pemilihan model juga memainkan peran besar dalam biaya keseluruhan Azure OpenAI. Semua model memiliki kekuatan dan kelemahan dan dihargai secara individual. Gunakan model yang benar untuk kasus penggunaan untuk memastikan bahwa Anda tidak mengesampingkan model yang lebih mahal ketika model yang lebih murah memberikan hasil yang dapat diterima. Dalam implementasi referensi obrolan ini, GPT 3.5-turbo dipilih melalui GPT-4 untuk menghemat sekitar besarnya biaya penyebaran model sambil mencapai hasil yang memadai.

  • Memahami titik henti penagihan. Penyempurnaan dikenakan biaya per jam. Untuk menjadi yang paling efisien, Anda ingin menggunakan sebanyak itu waktu yang tersedia per jam untuk meningkatkan hasil penyempurnaan sambil menghindari hanya tergelincir ke periode penagihan berikutnya. Demikian juga, biaya untuk 100 gambar dari pembuatan gambar sama dengan biaya untuk satu gambar. Maksimalkan titik jeda harga untuk keuntungan Anda.

  • Memahami model penagihan. Azure OpenAI juga tersedia dalam model penagihan berbasis komitmen melalui penawaran throughput yang disediakan. Setelah Anda memiliki pola penggunaan yang dapat diprediksi, pertimbangkan untuk beralih ke model penagihan prabayar ini jika lebih hemat biaya pada volume penggunaan Anda.

  • Atur batas provisi. Pastikan bahwa semua kuota provisi dialokasikan hanya untuk model yang diharapkan menjadi bagian dari beban kerja, berdasarkan per model. Throughput ke model yang sudah disebarkan tidak terbatas pada kuota yang disediakan ini saat kuota dinamis diaktifkan. Kuota tidak langsung dipetakan ke biaya dan biaya tersebut mungkin bervariasi.

  • Pantau penggunaan bayar sesuai pemakaian. Jika Anda menggunakan harga bayar sesuai pemakaian, pantau penggunaan TPM dan RPM. Gunakan informasi tersebut untuk menginformasikan keputusan desain arsitektur seperti model apa yang akan digunakan, dan mengoptimalkan ukuran prompt.

  • Pantau penggunaan throughput yang disediakan. Jika Anda menggunakan throughput yang disediakan, pantau penggunaan yang dikelola provisi untuk memastikan bahwa Anda tidak menggunakan throughput yang disediakan yang Anda beli.

  • Manajemen biaya. Ikuti panduan tentang menggunakan fitur manajemen biaya dengan OpenAI untuk memantau biaya, menetapkan anggaran untuk mengelola biaya, dan membuat pemberitahuan untuk memberi tahu pemangku kepentingan tentang risiko atau anomali.

Keunggulan operasional

Keunggulan operasional mencakup proses operasi yang menyebarkan aplikasi dan membuatnya tetap berjalan dalam produksi. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Keunggulan Operasional.

Pembelajaran Mesin - runtime alur prompt bawaan

Seperti dalam arsitektur dasar, arsitektur ini menggunakan Runtime Otomatis untuk meminimalkan beban operasional. Runtime otomatis adalah opsi komputasi tanpa server dalam Pembelajaran Mesin yang menyederhanakan manajemen komputasi dan mendelegasikan sebagian besar konfigurasi alur prompt ke file dan flow.dag.yaml konfigurasi aplikasi requirements.txt yang sedang berjalan. Ini membuat pilihan ini pemeliharaan rendah, ephemeral, dan berbasis aplikasi. Menggunakan Compute Instance Runtime atau komputasi eksternal, seperti dalam arsitektur ini, memerlukan siklus hidup komputasi yang dikelola tim beban kerja yang lebih banyak, dan harus dipilih ketika persyaratan beban kerja melebihi kemampuan konfigurasi opsi runtime otomatis.

Pemantauan

Seperti dalam arsitektur dasar, diagnostik dikonfigurasi untuk semua layanan. Semua layanan tetapi Pembelajaran Mesin dan App Service dikonfigurasi untuk mengambil semua log. Diagnostik Pembelajaran Mesin dikonfigurasi untuk menangkap log audit yang merupakan semua log sumber daya yang merekam interaksi pengguna dengan data atau pengaturan layanan. App Service dikonfigurasi untuk menangkap AppServiceHTTPLogs, AppServiceConsoleLogs, AppServiceAppLogs, dan AppServicePlatformLogs.

Evaluasi pembuatan pemberitahuan kustom untuk sumber daya dalam arsitektur ini seperti yang ditemukan di pemberitahuan garis besar Azure Monitor. Contohnya:

Operasi model bahasa

Penyebaran untuk solusi obrolan berbasis Azure OpenAI seperti arsitektur ini harus mengikuti panduan di GenAIOps dengan alur prompt dengan Azure DevOps dan dengan GitHub. Selain itu, ini harus mempertimbangkan praktik terbaik untuk integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) dan arsitektur yang diamankan jaringan. Panduan berikut membahas implementasi alur dan infrastruktur terkait berdasarkan rekomendasi GenAIOps. Panduan penyebaran ini tidak menyertakan elemen aplikasi front-end, yang tidak berubah dari dalam arsitektur aplikasi web redundan zona yang sangat tersedia di Garis Besar.

Pengembangan

Pembelajaran Mesin prompt flow menawarkan pengalaman penulisan berbasis browser di studio Pembelajaran Mesin atau melalui ekstensi Visual Studio Code. Kedua opsi menyimpan kode alur sebagai file. Saat Anda menggunakan studio Pembelajaran Mesin, file disimpan di akun Penyimpanan. Saat Anda bekerja di Microsoft Visual Studio Code, file disimpan di sistem file lokal Anda.

Untuk mengikuti praktik terbaik untuk pengembangan kolaboratif, file sumber harus dipertahankan dalam repositori kode sumber online seperti GitHub. Pendekatan ini memfasilitasi pelacakan semua perubahan kode, kolaborasi antara penulis alur dan integrasi dengan alur penyebaran yang menguji dan memvalidasi semua perubahan kode.

Untuk pengembangan perusahaan, gunakan ekstensi Microsoft Visual Studio Code dan alur permintaan SDK/CLI untuk pengembangan. Penulis alur perintah dapat membangun dan menguji alurnya dari Microsoft Visual Studio Code dan mengintegrasikan file yang disimpan secara lokal dengan sistem kontrol sumber online dan alur. Meskipun pengalaman berbasis browser sangat cocok untuk pengembangan eksplorasi, dengan beberapa pekerjaan, itu dapat diintegrasikan dengan sistem kontrol sumber. Folder alur dapat diunduh dari halaman alur di Files panel, di-unzip, dan didorong ke sistem kontrol sumber.

Evaluasi

Uji alur yang digunakan dalam aplikasi obrolan sama seperti Anda menguji artefak perangkat lunak lainnya. Sangat menantang untuk menentukan dan menegaskan satu jawaban "kanan" untuk output model bahasa, tetapi Anda dapat menggunakan model bahasa itu sendiri untuk mengevaluasi respons. Pertimbangkan untuk menerapkan evaluasi otomatis berikut dari alur model bahasa Anda:

  • Akurasi klasifikasi: Mengevaluasi apakah model bahasa memberikan skor "benar" atau "salah" dan menggabungkan hasil untuk menghasilkan tingkat akurasi.

  • Koherensi: Mengevaluasi seberapa baik kalimat dalam jawaban model yang diprediksi ditulis dan bagaimana mereka secara koheren terhubung satu sama lain.

  • Kefasihan: Menilai prediksi jawaban model untuk akurasi tata bahasa dan linguistiknya.

  • Groundedness terhadap konteks: Mengevaluasi seberapa baik jawaban model yang diprediksi didasarkan pada konteks yang telah dikonfigurasi sebelumnya. Bahkan jika respons model bahasa sudah benar, jika tidak dapat divalidasi terhadap konteks yang diberikan, respons tersebut tidak dialihkan.

  • Relevansi: Mengevaluasi seberapa baik jawaban model yang diprediksi selaras dengan pertanyaan yang diajukan.

Pertimbangkan panduan berikut saat menerapkan evaluasi otomatis:

  • Menghasilkan skor dari evaluasi dan mengukurnya terhadap ambang keberhasilan yang telah ditentukan sebelumnya. Gunakan skor ini untuk melaporkan uji lulus/gagal di alur Anda.

  • Beberapa pengujian ini memerlukan input data pertanyaan, konteks, dan kebenaran dasar yang telah dikonfigurasi sebelumnya.

  • Sertakan pasangan tanya jawab yang cukup untuk memastikan hasil pengujian dapat diandalkan, dengan setidaknya 100-150 pasangan yang direkomendasikan. Pasangan jawaban atas pertanyaan ini disebut sebagai "himpunan data emas" Anda. Populasi yang lebih besar mungkin diperlukan tergantung pada ukuran dan domain himpunan data Anda.

  • Hindari menggunakan model bahasa untuk menghasilkan salah satu data dalam himpunan data emas Anda.

Alur Penyebaran

Diagram yang memperlihatkan alur penyebaran untuk alur permintaan.

  1. Teknisi prompt/ilmuwan data membuka cabang fitur tempat mereka bekerja pada tugas atau fitur tertentu. Teknisi prompt/ilmuwan data melakukan iterasi pada alur menggunakan alur prompt untuk Microsoft Visual Studio Code, secara berkala melakukan perubahan dan mendorong perubahan tersebut ke cabang fitur.

  2. Setelah pengembangan dan eksperimen lokal selesai, teknisi prompt/ilmuwan data membuka permintaan pull dari cabang Fitur ke cabang Utama. Permintaan pull (PR) memicu alur PR. Alur ini menjalankan pemeriksaan kualitas cepat yang harus mencakup:

    • Eksekusi alur eksperimen
    • Eksekusi pengujian unit yang dikonfigurasi
    • Kompilasi basis kode
    • Analisis Kode Statis
  3. Alur dapat berisi langkah yang mengharuskan setidaknya satu anggota tim menyetujui PR secara manual sebelum menggabungkan. Pemberi izin tidak dapat menjadi committer dan mereka mush memiliki keahlian alur yang cepat dan keakraban dengan persyaratan proyek. Jika PR tidak disetujui, penggabungan diblokir. Jika PR disetujui, atau tidak ada langkah persetujuan, cabang fitur digabungkan ke cabang Utama.

  4. Penggabungan ke Utama memicu proses build dan rilis untuk lingkungan Pengembangan. Khususnya:

    1. Alur CI dipicu dari penggabungan ke Utama. Alur CI melakukan semua langkah yang dilakukan dalam alur PR, dan langkah-langkah berikut:
    • Alur eksperimen
    • Alur evaluasi
    • Mendaftarkan alur di Pembelajaran Mesin Registri saat perubahan terdeteksi
    1. Alur CD dipicu setelah penyelesaian alur CI. Alur ini melakukan langkah-langkah berikut:
    • Menyebarkan alur dari registri Pembelajaran Mesin ke titik akhir online Pembelajaran Mesin
    • Menjalankan pengujian integrasi yang menargetkan titik akhir online
    • Menjalankan uji asap yang menargetkan titik akhir online
  5. Proses persetujuan dibangun ke dalam proses promosi rilis - setelah disetujui, proses CI & CD yang dijelaskan dalam langkah 4.a. & 4.b. diulang, menargetkan lingkungan Uji. Langkah a. dan b. sama, kecuali bahwa pengujian penerimaan pengguna dijalankan setelah uji asap di lingkungan Uji.

  6. Proses CI & CD yang dijelaskan dalam langkah 4.a. & 4.b. dijalankan untuk mempromosikan rilis ke lingkungan Produksi setelah lingkungan Pengujian diverifikasi dan disetujui.

  7. Setelah dilepaskan ke lingkungan langsung, tugas operasional pemantauan metrik performa dan mengevaluasi model bahasa yang disebarkan berlangsung. Ini termasuk tetapi tidak terbatas pada:

    • Mendeteksi drift data
    • Mengamati infrastruktur
    • Mengelola biaya
    • Mengomunikasikan performa model kepada pemangku kepentingan
Panduan penyebaran

Anda dapat menggunakan titik akhir Pembelajaran Mesin untuk menyebarkan model dengan cara yang memungkinkan fleksibilitas saat merilis ke produksi. Pertimbangkan strategi berikut untuk memastikan performa dan kualitas model terbaik:

  • Penyebaran biru/hijau: Dengan strategi ini, Anda dapat dengan aman menyebarkan versi baru layanan web Anda ke sekelompok pengguna atau permintaan terbatas sebelum mengarahkan semua lalu lintas ke penyebaran baru.

  • Pengujian A/B: Tidak hanya penyebaran biru/hijau yang efektif untuk meluncurkan perubahan dengan aman, mereka juga dapat digunakan untuk menyebarkan perilaku baru yang memungkinkan subkumpulan pengguna untuk mengevaluasi dampak perubahan.

  • Sertakan linting file Python yang merupakan bagian dari alur prompt di alur Anda. Pemeriksaan linting untuk kepatuhan terhadap standar gaya, kesalahan, kompleksitas kode, impor yang tidak digunakan, dan penamaan variabel.

  • Saat Anda menyebarkan alur ke ruang kerja Pembelajaran Mesin yang terisolasi jaringan, gunakan agen yang dihost sendiri untuk menyebarkan artefak ke sumber daya Azure Anda.

  • Registri model Pembelajaran Mesin hanya boleh diperbarui ketika ada perubahan pada model.

  • Model bahasa, alur, dan UI klien harus digabungkan secara longgar. Pembaruan pada alur dan UI klien dapat dan harus dapat dibuat tanpa memengaruhi model dan sebaliknya.

  • Ketika Anda mengembangkan dan menyebarkan beberapa alur, setiap alur harus memiliki siklus hidupnya sendiri, yang memungkinkan pengalaman yang digabungkan secara longgar saat mempromosikan alur dari eksperimen ke produksi.

Infrastruktur

Saat Anda menyebarkan komponen obrolan end-to-end Azure OpenAI dasar, beberapa layanan yang disediakan bersifat dasar dan permanen dalam arsitektur, sedangkan komponen lain bersifat lebih sementara, keberadaannya terkait dengan penyebaran.

Komponen dasar

Beberapa komponen dalam arsitektur ini ada dengan siklus hidup yang meluas di luar alur prompt individual atau penyebaran model apa pun. Sumber daya ini biasanya disebarkan sekali sebagai bagian dari penyebaran dasar oleh tim beban kerja, dan dipertahankan selain dari baru, dihapus, atau diperbarui pada alur perintah atau penyebaran model.

  • Ruang kerja Azure Machine Learning
  • Akun penyimpanan untuk ruang kerja Pembelajaran Mesin
  • Container Registry
  • Pencarian AI
  • Azure OpenAI
  • Azure Application Insights
  • Azure Bastion
  • Azure Virtual Machine untuk jump box
Komponen Ephemeral

Beberapa sumber daya Azure lebih erat digabungkan dengan desain alur prompt tertentu. Pendekatan ini memungkinkan sumber daya ini terikat pada siklus hidup komponen dan menjadi ephemeral dalam arsitektur ini. Sumber daya Azure terpengaruh saat beban kerja berkembang, seperti saat alur ditambahkan atau dihapus atau saat model baru diperkenalkan. Sumber daya ini dibuat ulang dan instans sebelumnya dihapus. Beberapa sumber daya ini adalah sumber daya Azure langsung dan beberapa adalah manifestasi sarana data dalam layanan yang berisinya.

  • Model dalam registri model Pembelajaran Mesin harus diperbarui, jika diubah, sebagai bagian dari alur CD.

  • Gambar kontainer harus diperbarui dalam registri kontainer sebagai bagian dari alur CD.

  • Titik akhir Pembelajaran Mesin dibuat saat alur permintaan disebarkan jika penyebaran mereferensikan titik akhir yang tidak ada. Titik akhir tersebut perlu diperbarui untuk menonaktifkan akses publik.

  • Penyebaran titik akhir Pembelajaran Mesin diperbarui saat alur disebarkan atau dihapus.

  • Brankas kunci untuk UI klien harus diperbarui dengan kunci ke titik akhir saat titik akhir baru dibuat.

Efisiensi kinerja

Efisiensi performa adalah kemampuan beban kerja Anda untuk diskalakan agar memenuhi permintaan yang diberikan oleh pengguna dengan cara yang efisien. Untuk informasi selengkapnya, lihat Daftar periksa tinjauan desain untuk Efisiensi Performa.

Bagian ini menjelaskan efisiensi performa dari perspektif Azure Search, Azure OpenAI, dan Pembelajaran Mesin.

Azure Search - efisiensi performa

Ikuti panduan untuk menganalisis performa di Pencarian AI.

Azure OpenAI - efisiensi performa

  • Tentukan apakah aplikasi Anda memerlukan throughput yang disediakan atau hosting bersama, atau konsumsi, model. Throughput yang disediakan memastikan kapasitas pemrosesan yang dipesan untuk penyebaran model OpenAI Anda, yang memberikan performa dan throughput yang dapat diprediksi untuk model Anda. Model penagihan ini tidak seperti hosting bersama, atau konsumsi, model. Model konsumsi adalah upaya terbaik dan mungkin tunduk pada tetangga yang berisik atau stres lainnya di platform.

  • Pantau pemanfaatan yang dikelola provisi untuk throughput yang disediakan.

Pembelajaran Mesin - efisiensi performa

Jika Anda menyebarkan ke titik akhir online Pembelajaran Mesin:

  • Ikuti panduan tentang cara menskalakan titik akhir online secara otomatis. Lakukan ini agar tetap selaras dengan permintaan tanpa provisi berlebihan, terutama dalam periode penggunaan rendah.

  • Pilih SKU komputer virtual yang sesuai untuk titik akhir online untuk memenuhi target performa Anda. Uji performa jumlah instans yang lebih rendah dan SKU yang lebih besar versus jumlah instans yang lebih besar dan SKU yang lebih kecil untuk menemukan konfigurasi optimal.

Menyebarkan skenario ini

Untuk menyebarkan dan menjalankan implementasi referensi, ikuti langkah-langkah dalam implementasi referensi garis besar end-to-end OpenAI.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah selanjutnya