LLMOps dengan alur perintah dan Azure DevOps

Operasi Bahasa Besar, atau LLMOps, telah menjadi landasan rekayasa prompt yang efisien dan pengembangan dan penyebaran aplikasi yang diinfus LLM. Karena permintaan untuk aplikasi yang diinfus LLM terus meloncat, organisasi menemukan diri mereka membutuhkan proses yang kohesif dan efisien untuk mengelola siklus hidup end-to-end mereka.

Azure Pembelajaran Mesin memungkinkan Anda untuk berintegrasi dengan Azure DevOps untuk mengotomatiskan siklus hidup pengembangan aplikasi yang diinfus LLM dengan alur prompt.

Azure Pembelajaran Mesin Prompt Flow menyediakan pendekatan yang efisien dan terstruktur untuk mengembangkan aplikasi yang diinfus LLM. Proses dan siklus hidupnya yang terdefinisi dengan baik memandu Anda melalui proses membangun, menguji, mengoptimalkan, dan menyebarkan alur, yang berpuncak pada pembuatan solusi yang diinfus LLM yang berfungsi penuh.

Fitur Alur Prompt LLMOps

LLMOps dengan alur prompt adalah "templat dan panduan LLMOps" untuk membantu Anda membangun aplikasi yang diinfus LLM menggunakan alur prompt. Firewall Manager menyediakan fitur-fitur berikut:

  • Hosting Kode Terpusat: Repositori ini mendukung kode hosting untuk beberapa alur berdasarkan alur perintah, menyediakan satu repositori untuk semua alur Anda. Anggap platform ini sebagai repositori tunggal tempat semua kode alur prompt Anda berada. Ini seperti pustaka untuk alur Anda, memudahkan untuk menemukan, mengakses, dan berkolaborasi pada proyek yang berbeda.

  • Manajemen Siklus Hidup: Setiap alur menikmati siklus hidupnya sendiri, memungkinkan transisi yang lancar dari eksperimen lokal ke penyebaran produksi. Screenshot of pipeline.

  • Varian dan Eksperimen Hyperparameter: Bereksperimen dengan beberapa varian dan hiperparameter, mengevaluasi varian aliran dengan mudah. Varian dan hiperparameter seperti bahan dalam resep. Platform ini memungkinkan Anda untuk bereksperimen dengan kombinasi varian yang berbeda di beberapa simpul dalam alur.

  • Beberapa Target Penyebaran: Repositori mendukung penyebaran alur ke Azure App Services, Kubernetes, komputasi Terkelola Azure yang didorong melalui konfigurasi yang memastikan bahwa alur Anda dapat menskalakan sesuai kebutuhan. Ini juga menghasilkan gambar Docker yang diinfus dengan runtime Flow dan alur Anda untuk penyebaran ke platform target dan sistem Operasi yang mendukung Docker. Screenshot of endpoints.

  • Penyebaran A/B: Menerapkan penyebaran A/B dengan mulus, memungkinkan Anda membandingkan versi alur yang berbeda dengan mudah. Sama seperti dalam pengujian A/B tradisional untuk situs web, platform ini memfasilitasi penyebaran A/B untuk alur prompt. Ini berarti Anda dapat dengan mudah membandingkan berbagai versi alur dalam pengaturan dunia nyata untuk menentukan mana yang berkinerja terbaik. Screenshot of deployments.

  • Hubungan himpunan data/aliran banyak ke banyak: Mengakomodasi beberapa himpunan data untuk setiap aliran standar dan evaluasi, memastikan fleksibilitas dalam pengujian dan evaluasi aliran. Platform ini dirancang untuk mengakomodasi beberapa himpunan data untuk setiap alur.

  • Pendaftaran Data dan Model Kondisional: Platform membuat versi baru untuk himpunan data di Azure Pembelajaran Mesin Aset Data dan alur dalam registri model hanya ketika ada perubahan di dalamnya, bukan sebaliknya.

  • Pelaporan Komprehensif: Hasilkan laporan terperinci untuk setiap konfigurasi varian, memungkinkan Anda membuat keputusan berdasarkan informasi. Menyediakan pengumpulan Metrik terperinci, eksperimen, dan varian eksekusi massal untuk semua eksekusi dan eksperimen, memungkinkan keputusan berbasis data dalam csv serta file HTML. Screenshot of flow variants report.Screenshot of metrics report.

Fitur lain untuk penyesuaian:

  • Menawarkan BYOF (bring-your-own-flows). Platform lengkap untuk mengembangkan beberapa kasus penggunaan yang terkait dengan aplikasi yang diinfus LLM.

  • Menawarkan pengembangan berbasis konfigurasi. Tidak perlu menulis kode pelat boiler yang luas.

  • Menyediakan eksekusi eksperimen dan evaluasi perintah secara lokal serta di cloud.

  • Menyediakan buku catatan untuk evaluasi lokal perintah. Menyediakan pustaka fungsi untuk eksperimen lokal.

  • Pengujian titik akhir dalam alur setelah penyebaran untuk memeriksa ketersediaan dan kesiapannya.

  • Menyediakan human-in-loop opsional untuk memvalidasi metrik prompt sebelum penyebaran.

LLMOps dengan alur prompt menyediakan kemampuan untuk aplikasi sederhana serta yang diinfus LLM yang kompleks. Ini sepenuhnya dapat disesuaikan dengan kebutuhan aplikasi.

Tahapan LLMOps

Siklus hidup terdiri dari empat tahap yang berbeda:

  • Inisialisasi: Tentukan tujuan bisnis dengan jelas, kumpulkan sampel data yang relevan, buat struktur prompt dasar, dan buat alur yang meningkatkan kemampuannya.

  • Eksperimen: Terapkan alur ke data sampel, nilai performa prompt, dan perbaiki alur sesuai kebutuhan. Terus berulang sampai puas dengan hasilnya.

  • Evaluasi & Penyempurnaan: Tolok ukur performa alur menggunakan himpunan data yang lebih besar, evaluasi efektivitas prompt, dan buat penyempurnaan yang sesuai. Lanjutkan ke tahap berikutnya jika hasilnya memenuhi standar yang diinginkan.

  • Penyebaran: Optimalkan alur untuk efisiensi dan efektivitas, sebarkan di lingkungan produksi termasuk penyebaran A/B, pantau performanya, kumpulkan umpan balik pengguna, dan gunakan informasi ini untuk lebih meningkatkan alur.

Dengan mematuhi metodologi terstruktur ini, alur prompt memberdayakan Anda untuk dengan percaya diri mengembangkan, menguji dengan ketat, menyempurnakan, dan menyebarkan alur, yang mengarah pada pembuatan aplikasi AI yang kuat dan canggih.

Templat alur prompt LLMOps meresmikan metodologi terstruktur ini menggunakan pendekatan code-first dan membantu Anda membangun aplikasi yang diinfus LLM menggunakan alur prompt menggunakan alat dan proses yang relevan dengan alur prompt. Ini menawarkan berbagai fitur termasuk Hosting Kode Terpusat, Manajemen Siklus Hidup, Varian dan Eksperimen Hyperparameter, Penyebaran A /B, pelaporan untuk semua eksekusi dan eksperimen dan banyak lagi.

Repositori untuk artikel ini tersedia di LLMOps dengan templat alur Prompt

Alur proses LLMOps

Screenshot of LLMOps prompt flow process.

  1. Ini adalah tahap inisialisasi. Di sini, alur dikembangkan, data disiapkan dan dikumpulkan dan file konfigurasi terkait LLMOps diperbarui.
  2. Setelah pengembangan lokal menggunakan Visual Studio Code bersama dengan ekstensi alur prompt, permintaan pull dinaikkan dari cabang fitur ke cabang pengembangan. Ini menghasilkan alur validasi Build yang dijalankan. Ini juga menjalankan alur eksperimen.
  3. PR disetujui secara manual dan kode digabungkan ke cabang pengembangan
  4. Setelah PR digabungkan ke cabang pengembangan, alur CI untuk lingkungan dev dijalankan. Ini menjalankan alur eksperimen dan evaluasi secara berurutan dan mendaftarkan alur di Azure Pembelajaran Mesin Registry selain dari langkah-langkah lain dalam alur.
  5. Setelah penyelesaian eksekusi alur CI, pemicu CD memastikan eksekusi alur CD yang menyebarkan aliran standar dari Azure Pembelajaran Mesin Registry sebagai titik akhir online Azure Pembelajaran Mesin dan menjalankan integrasi dan uji asap pada alur yang disebarkan.
  6. Cabang rilis dibuat dari cabang pengembangan atau permintaan pull dinaikkan dari cabang pengembangan ke cabang rilis.
  7. PR disetujui secara manual dan kode digabungkan ke cabang rilis. Setelah PR digabungkan ke cabang rilis, alur CI untuk lingkungan prod dijalankan. Ini menjalankan alur eksperimen dan evaluasi secara berurutan dan mendaftarkan alur di Azure Pembelajaran Mesin Registry selain dari langkah-langkah lain dalam alur.
  8. Setelah penyelesaian eksekusi alur CI, pemicu CD memastikan eksekusi alur CD yang menyebarkan aliran standar dari Azure Pembelajaran Mesin Registry sebagai titik akhir online Azure Pembelajaran Mesin dan menjalankan integrasi dan uji asap pada alur yang disebarkan.

Dari sini, Anda dapat mempelajari LLMOps dengan alur perintah dengan mengikuti sampel end-to-end yang kami sediakan, yang membantu Anda membangun aplikasi yang diinfus LLM menggunakan alur prompt dan Azure DevOps. Tujuan utamanya adalah untuk memberikan bantuan dalam pengembangan aplikasi tersebut, memanfaatkan kemampuan alur prompt dan LLMOps.

Tip

Sebaiknya Anda memahami cara mengintegrasikan LLMOps dengan alur prompt.

Penting

Alur perintah saat ini dalam pratinjau publik. Pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Prasyarat

  • Langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai. Coba versi gratis atau berbayar Azure Machine Learning.
  • Ruang kerja Azure Machine Learning.
  • Git berjalan di komputer lokal Anda.
  • Organisasi di Azure DevOps. Organisasi di Azure DevOps membantu berkolaborasi, Merencanakan dan melacak cacat pekerjaan dan kode Anda, masalah dan Menyiapkan integrasi dan penyebaran berkelanjutan.
  • Ekstensi Terraform untuk Azure DevOps jika Anda menggunakan Azure DevOps + Terraform untuk memutar infrastruktur

Catatan

Git versi 2.27 atau yang lebih baru diperlukan. Untuk informasi selengkapnya tentang menginstal perintah Git, lihat https://git-scm.com/downloads dan pilih sistem operasi Anda

Penting

Perintah CLI dalam artikel ini diuji menggunakan Bash. Jika Anda menggunakan shell yang berbeda, Anda mungkin mengalami kesalahan.

Menyiapkan alur prompt

Alur perintah menggunakan sumber daya koneksi untuk menyambungkan ke titik akhir seperti Azure OpenAI, OpenAI, atau Azure AI Search dan menggunakan runtime untuk eksekusi alur. Sumber daya ini harus dibuat sebelum menjalankan alur dalam alur prompt.

Menyiapkan koneksi untuk alur perintah

Koneksi dapat dibuat melalui UI portal alur perintah atau menggunakan REST API. Ikuti panduan untuk membuat koneksi untuk alur perintah.

Klik tautan untuk mengetahui selengkapnya tentang koneksi.

Catatan

Alur sampel menggunakan koneksi 'aoai' dan koneksi bernama 'aoai' harus dibuat untuk mengeksekusinya.

Menyiapkan komputasi dan runtime untuk alur perintah

Runtime dapat dibuat melalui UI portal alur perintah atau menggunakan REST API. Ikuti panduan untuk menyiapkan komputasi dan runtime untuk alur prompt.

Klik tautan untuk mengetahui lebih lanjut tentang runtime.

Catatan

Nama runtime yang sama harus digunakan dalam file LLMOps_config.json yang dijelaskan nanti.

Menyiapkan Azure Service Principal

Azure Service Principal adalah identitas keamanan yang digunakan aplikasi, layanan, dan alat otomatisasi untuk mengakses sumber daya Azure. Ini mewakili aplikasi atau layanan yang perlu mengautentikasi dengan Azure dan mengakses sumber daya atas nama Anda. Ikuti panduan untuk membuat Perwakilan Layanan di Azure.

Perwakilan Layanan ini nantinya digunakan untuk mengonfigurasi koneksi Layanan Azure DevOps dan Azure DevOps untuk mengautentikasi dan menyambungkan ke Layanan Azure. Pekerjaan yang dijalankan dalam Prompt Flow untuk keduanya experiment and evaluation runs berada di bawah identitas Perwakilan Layanan ini. Selain itu, dan computeruntime dibuat menggunakan Perwakilan Layanan yang sama.

Tip

Pengaturan menyediakan owner izin ke Perwakilan Layanan.

  • Ini karena Alur CD secara otomatis menyediakan akses ke akses Azure Pembelajaran Mesin Endpoint yang baru disediakan ke ruang kerja Azure Pembelajaran Mesin untuk membaca informasi koneksi.
  • Ini juga menambahkannya ke Azure Pembelajaran Mesin Ruang Kerja terkait kebijakan brankas kunci dengan get izin rahasia dan list .

Izin pemilik dapat diubah ke contributor izin tingkat dengan mengubah kode YAML alur dan menghapus langkah yang terkait dengan izin.

Menyiapkan Azure DevOps

Ada beberapa langkah yang harus dilakukan untuk menyiapkan proses LLMOps menggunakan Azure DevOps.

Membuat proyek Azure DevOps baru

Ikuti panduan untuk membuat proyek Azure DevOps baru menggunakan Antarmuka Pengguna Azure DevOps.

Menyiapkan autentikasi antara Azure DevOps dan Azure

Ikuti panduan untuk menggunakan Perwakilan Layanan yang dibuat sebelumnya dan siapkan autentikasi antara Azure DevOps dan Azure Services.

Langkah ini mengonfigurasi Koneksi Layanan Azure DevOps baru yang menyimpan informasi Perwakilan Layanan. Alur dalam proyek dapat membaca informasi koneksi menggunakan nama koneksi. Ini membantu mengonfigurasi langkah-langkah alur Azure DevOps untuk menyambungkan ke Azure secara otomatis.

Membuat Grup Variabel Azure DevOps

Ikuti panduan untuk membuat grup Variabel baru dan tambahkan variabel yang terkait dengan Koneksi ion Layanan Azure DevOps.

Nama perwakilan layanan tersedia secara otomatis sebagai variabel lingkungan ke alur.

Mengonfigurasi repositori dan alur Azure DevOps

Repositori ini menggunakan dua cabang - main dan development untuk promosi kode dan eksekusi alur sebagai pengganti perubahan pada kode di dalamnya. Ikuti panduan untuk menyiapkan repositori lokal dan jarak jauh Anda sendiri untuk menggunakan kode dari repositori ini.

Langkah-langkahnya melibatkan kloning baik main dan development branches dari repositori dan mengaitkan kode untuk merujuk ke repositori Azure DevOps baru. Terlepas dari migrasi kode, alur - baik alur PR dan dev dikonfigurasi sehingga dijalankan secara otomatis berdasarkan pembuatan PR dan pemicu penggabungan.

Kebijakan cabang untuk cabang pengembangan juga harus dikonfigurasi untuk menjalankan alur PR untuk setiap PR yang diangkat pada cabang pengembangan dari cabang fitur. Alur 'dev' dijalankan ketika PR digabungkan ke cabang pengembangan. Alur 'dev' terdiri dari fase CI dan CD.

Ada juga manusia dalam perulangan yang diimplementasikan dalam alur. Setelah fase CI dalam dev alur dijalankan, fase CD mengikuti setelah persetujuan manual. Persetujuan harus terjadi dari UI eksekusi build alur Azure DevOps. Batas waktu default adalah 60 menit setelah itu alur akan ditolak dan fase CD tidak akan dijalankan. Menyetujui eksekusi secara manual akan menyebabkan eksekusi langkah-langkah CD alur. Persetujuan manual dikonfigurasi untuk mengirim pemberitahuan ke 'replace@youremail.com'. Ini harus diganti dengan ID email yang sesuai.

Menguji alur

Ikuti panduan yang disebutkan di untuk menguji alur.

Langkah-langkahnya adalah:

  1. Naikkan PR(Permintaan Pull) dari cabang fitur ke cabang pengembangan.
  2. Alur PR harus dijalankan secara otomatis sebagai hasil dari konfigurasi kebijakan cabang.
  3. PR kemudian digabungkan ke cabang pengembangan.
  4. Alur 'dev' terkait dijalankan. Ini akan menghasilkan eksekusi CI dan CD penuh dan menghasilkan provisi atau pembaruan Titik Akhir Azure Pembelajaran Mesin yang ada.

Output pengujian harus mirip dengan yang ditunjukkan di sini.

Eksekusi lokal

Untuk memanfaatkan kemampuan eksekusi lokal, ikuti langkah-langkah penginstalan berikut:

  1. Kloning Repositori: Mulailah dengan mengkloning repositori templat dari repositori GitHub-nya.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. Siapkan file env: buat file .env di tingkat folder atas dan berikan informasi untuk item yang disebutkan. Tambahkan nama koneksi sebanyak yang diperlukan. Semua contoh alur dalam repositori ini menggunakan koneksi AzureOpenAI bernama aoai. Tambahkan baris aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} dengan nilai yang diperbarui untuk api_key dan api_base. Jika koneksi tambahan dengan nama yang berbeda digunakan dalam alur Anda, koneksi harus ditambahkan sesuai dengan itu. Saat ini, alur dengan AzureOpenAI sebagai penyedia sebagai didukung.

experiment_name=
connection_name_1={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
connection_name_2={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
  1. Siapkan conda lokal atau lingkungan virtual untuk menginstal dependensi.

python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv

  1. Bawa atau tulis alur Anda ke dalam templat berdasarkan dokumentasi di sini.

  2. Tulis skrip python yang mirip dengan contoh yang disediakan di folder local_execution.

Langkah berikutnya