İstem akışı ve GitHub ile LLMOps

Büyük Dil İşlemleri veya LLMOps, verimli istem mühendisliğinin ve LLM tarafından sunulan uygulama geliştirme ve dağıtımının temel taşı haline gelmiştir. LLM destekli uygulamalara olan talep artmaya devam ettikçe, kuruluşlar uçtan uca yaşam döngülerini yönetmek için uyumlu ve kolaylaştırılmış bir sürece ihtiyaç duyuyorlar.

Azure Machine Learning, LLM ile sunulan uygulama geliştirme yaşam döngüsünü istem akışıyla otomatikleştirmek için GitHub ile tümleştirmenize olanak tanır.

Azure Machine Learning İstemi Akışı, LLM ile sunulan uygulamalar geliştirmeye yönelik kolaylaştırılmış ve yapılandırılmış bir yaklaşım sağlar. İyi tanımlanmış süreci ve yaşam döngüsü, akışları oluşturma, test etme, iyileştirme ve dağıtma sürecinde size kılavuzluk eder ve tam işlevsel LLM ile infused çözümlerin oluşturulmasında yol gösterir.

LLMOps İstem Akışı Özellikleri

İstem akışına sahip LLMOps, istem akışını kullanarak LLM ile infused uygulamaları oluşturmanıza yardımcı olan bir "LLMOps şablonu ve kılavuzudur". Aşağıdaki özellikleri sağlar:

  • Merkezi Kod Barındırma: Bu depo, istem akışına dayalı birden çok akış için barındırma kodunu destekler ve tüm akışlarınız için tek bir depo sağlar. Bu platformu, tüm istem akış kodunuzun bulunduğu tek bir depo olarak düşünün. Akışlarınız için bir kitaplık gibi, farklı projeleri bulmayı, bu projelere erişmeyi ve işbirliği yapmayı kolaylaştırır.

  • Yaşam Döngüsü Yönetimi: Her akış kendi yaşam döngüsüne sahiptir ve yerel denemelerden üretim dağıtımına sorunsuz geçişler sağlar. Screenshot of pipeline.

  • Değişken ve Hiper Parametre Denemesi: Akış değişkenlerini kolayca değerlendirerek birden çok değişken ve hiper parametre ile denemeler yapın. Çeşitlemeler ve hiper parametreler bir tarifteki malzemeler gibidir. Bu platform, bir akıştaki birden çok düğümde farklı değişken bileşimleri denemenize olanak tanır.

  • Birden Çok Dağıtım Hedefi: Depo, akışlarınızın gerektiği şekilde ölçeklendirilebilebini sağlamak için yapılandırma aracılığıyla yönetilen Azure Uygulaması Hizmetleri, Kubernetes ve Azure Yönetilen işlemlerine akış dağıtımını destekler. Ayrıca, Flow çalışma zamanı ve docker'ı destekleyen herhangi bir hedef platforma ve İşletim sistemine dağıtım için akışlarınızla birlikte sunulan Docker görüntüleri de oluşturur. Screenshot of endpoints.

  • A/B Dağıtımı: A/B dağıtımlarını sorunsuz bir şekilde uygulayarak farklı akış sürümlerini zahmetsizce karşılaştırmanızı sağlar. Web siteleri için geleneksel A/B testlerinde olduğu gibi, bu platform da istem akışı için A/B dağıtımlarını kolaylaştırır. Bu, bir akışın farklı sürümlerini gerçek dünya ayarında zahmetsizce karşılaştırarak hangisinin en iyi performansa sahip olduğunu belirleyebileceğiniz anlamına gelir. Screenshot of deployments.

  • Çoka çok veri kümesi/akış ilişkileri: Her standart ve değerlendirme akışı için birden çok veri kümesini barındırarak akış test ve değerlendirmesinde çok yönlülük sağlar. Platform, her akış için birden çok veri kümesini barındıracak şekilde tasarlanmıştır.

  • Koşullu Veri ve Model kaydı: Platform, Azure Machine Learning Veri Varlığı'nda veri kümesi için yeni bir sürüm oluşturur ve model kayıt defterinde yalnızca değişiklik olduğunda akış oluşturur, aksi halde değil.

  • Kapsamlı Raporlama: Her değişken yapılandırması için ayrıntılı raporlar oluşturarak bilinçli kararlar vermenizi sağlar. Tüm çalıştırmalar ve denemeler için ayrıntılı Ölçüm toplama, deneme ve değişken toplu çalıştırmalar sağlayarak csv'de veri temelli kararların yanı sıra HTML dosyalarına da olanak tanır. Screenshot of flow variants report.Screenshot of metrics report.

Özelleştirmeye yönelik diğer özellikler:

  • BYOF (kendi akışlarınızı getirin) sunar. LLM ile infused uygulamalarıyla ilgili birden çok kullanım örneği geliştirmeye yönelik eksiksiz bir platform.

  • Yapılandırma tabanlı geliştirme sunar. Kapsamlı kazan plakası kodu yazmaya gerek yok.

  • Hem istem denemesinin hem de değerlendirmenin hem yerel olarak hem de bulutta yürütülmesini sağlar.

  • İstemlerin yerel değerlendirmesi için not defterleri sağlar. Yerel deneme için işlev kitaplığı sağlar.

  • Kullanılabilirliğini ve hazır olup olmadığını denetlemek için dağıtımdan sonra işlem hattı içinde uç nokta testi.

  • Dağıtımdan önce istem ölçümlerini doğrulamak için isteğe bağlı döngüde insan sağlar.

İstem akışına sahip LLMOps, hem basit hem de karmaşık LLM'ye yüklenmiş uygulamalar için özellikler sağlar. Uygulamanın ihtiyaçlarına göre tamamen özelleştirilebilir.

LLMOps Aşamaları

Yaşam döngüsü dört ayrı aşamadan oluşur:

  • Başlatma: İş hedefini net bir şekilde tanımlayın, ilgili veri örneklerini toplayın, temel bir istem yapısı oluşturun ve özelliklerini geliştiren bir akış oluşturun.

  • Deneme: Akışı örnek verilere uygulayın, istem performansını değerlendirin ve gerektiği şekilde akışı geliştirin. Sonuçlardan memnun kalana kadar sürekli yineleyin.

  • Değerlendirme ve İyileştirme: Daha büyük bir veri kümesi kullanarak akışın performansını kıyaslayın, istemin verimliliğini değerlendirin ve uygun şekilde iyileştirmeler yapın. Sonuçlar istenen standartları karşılıyorsa sonraki aşamaya ilerleyin.

  • Dağıtım: Akışı verimlilik ve verimlilik için iyileştirin, A/B dağıtımı dahil olmak üzere bir üretim ortamında dağıtın, performansını izleyin, kullanıcı geri bildirimi toplayın ve akışı daha da geliştirmek için bu bilgileri kullanın.

Prompt Flow, bu yapılandırılmış metodolojiye bağlı kalınarak güçlü ve gelişmiş yapay zeka uygulamalarının oluşturulmasına yol açan akışları güvenle geliştirmenizi, sıkı bir şekilde test etmenizi, hassas ayarlamalar yapmanızı ve dağıtmanızı sağlar.

LLMOps prompt Flow şablonu, kod öncelikli yaklaşımı kullanarak bu yapılandırılmış metodolojiyi resmileştirir ve Prompt Flow ile ilgili araçları ve süreci kullanarak LLM'ye dahil edilmiş uygulamalar oluşturmanıza yardımcı olur. Merkezi Kod Barındırma, Yaşam Döngüsü Yönetimi, Değişken ve Hiper Parametre Denemesi, A/B Dağıtımı, tüm çalıştırmalar ve denemeler için raporlama ve daha fazlası gibi çeşitli özellikler sunar.

Bu makalenin deposu LLMOps with Prompt akış şablonunda bulunabilir

LLMOps işlem Akışı

Screenshot of LLMOps prompt flow Process.

  1. Bu, başlatma aşamasıdır. Burada akışlar geliştirilir, veriler hazırlanır ve seçki olarak oluşturulur ve LLMOps ile ilgili yapılandırma dosyaları güncelleştirilir.
  2. Visual Studio Code ve Prompt Flow uzantısı kullanılarak yerel geliştirmeden sonra, özellik dalından geliştirme dalı için bir çekme isteği oluşturulur. Bu, Derleme doğrulama işlem hattının yürütülmesine neden olur. Ayrıca deneme akışlarını yürütür.
  3. Çekme isteği el ile onaylanır ve kod geliştirme dalı ile birleştirilir
  4. Çekme isteği geliştirme dalı ile birleştirildikten sonra geliştirme ortamı için CI işlem hattı yürütülür. Hem deneme hem de değerlendirme akışlarını sırayla yürütür ve akışları işlem hattındaki diğer adımlardan farklı olarak Azure Machine Learning Kayıt Defteri'ne kaydeder.
  5. CI işlem hattı yürütmesi tamamlandıktan sonra CD tetikleyicisi, Standart akışı Azure Machine Learning Kayıt Defteri'nden Azure Machine Learning çevrimiçi uç noktası olarak dağıtan ve dağıtılan akışta tümleştirme ve duman testleri yürüten CD işlem hattının yürütülmesini sağlar.
  6. Geliştirme dalından bir yayın dalı oluşturulur veya geliştirme dalından yayın dalı için bir çekme isteği oluşturulur.
  7. Çekme isteği el ile onaylanır ve kod yayın dalı ile birleştirilir. Çekme isteği yayın dalı ile birleştirildikten sonra, üretim ortamı için CI işlem hattı yürütülür. Hem deneme hem de değerlendirme akışlarını sırayla yürütür ve akışları işlem hattındaki diğer adımlardan farklı olarak Azure Machine Learning Kayıt Defteri'ne kaydeder.
  8. CI işlem hattı yürütmesi tamamlandıktan sonra CD tetikleyicisi, Standart akışı Azure Machine Learning Kayıt Defteri'nden Azure Machine Learning çevrimiçi uç noktası olarak dağıtan ve dağıtılan akışta tümleştirme ve duman testleri yürüten CD işlem hattının yürütülmesini sağlar.

Bundan sonra, sağladığımız uçtan uca örnekleri izleyerek LLMOps'u istem akışı ve GitHub kullanarak LLM ile infused uygulamaları oluşturmanıza yardımcı olan istem akışıyla öğrenebilirsiniz. Birincil amacı, istem akışı ve LLMOps özelliklerinden yararlanarak bu tür uygulamaların geliştirilmesinde yardım sağlamaktır.

İpucu

LLMOps'u istem akışıyla tümleştirmeyi anlamanız önerilir.

Önemli

İstem akışı şu anda genel önizleme aşamasındadır. Bu önizleme, hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için önerilmez. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri Ek Kullanım Koşulları.

Önkoşullar

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun. Azure Machine Learning'in ücretsiz veya ücretli sürümünü deneyin.
  • Azure Machine Learning çalışma alanı.
  • Yerel makinenizde çalışan Git.
  • Kaynak denetim deposu olarak GitHub.

Not

Git sürüm 2.27 veya üzeri gereklidir. Git komutunu yükleme hakkında daha fazla bilgi için bkz. https://git-scm.com/downloads İşletim sisteminizi seçin

Önemli

Bu makaledeki CLI komutları Bash kullanılarak test edilmiştir. Farklı bir kabuk kullanıyorsanız hatalarla karşılaşabilirsiniz.

İstem Akışını Ayarlama

prompt Flow, Azure OpenAI, OpenAI veya Azure AI Search gibi uç noktalara bağlanmak için bağlantı kaynağı kullanır ve akışların yürütülmesi için çalışma zamanını kullanır. Bu kaynaklar, Akış İstemi'nde akışları yürütmeden önce oluşturulmalıdır.

İstem akışı için bağlantıları ayarlama

Bağlan ions, istem akışı portalı kullanıcı arabirimi aracılığıyla veya REST API kullanılarak oluşturulabilir. lütfen istem akışı için bağlantı oluşturmak için yönergeleri izleyin.

Bağlantılar hakkında daha fazla bilgi edinmek için bağlantıya tıklayın.

Not

Örnek akışlarda 'aoai' bağlantısı kullanılır ve bunları yürütmek için 'aoai' adlı bağlantı oluşturulmalıdır.

İstem akışı için işlem ve çalışma zamanını ayarlama

Çalışma zamanı, istem akışı portalı kullanıcı arabirimi aracılığıyla veya REST API kullanılarak oluşturulabilir. lütfen istem akışı için işlem ve çalışma zamanını ayarlamak için yönergeleri izleyin.

Çalışma zamanı hakkında daha fazla bilgi edinmek için bağlantıya tıklayın.

Not

Daha sonra açıklanan LLMOps_config.json dosyasında aynı çalışma zamanı adı kullanılmalıdır.

GitHub Deposunu ayarlama

GitHub Deposu'nu kullanarak LLMOps işlemini ayarlamak için yapılması gereken birden çok adım vardır.

Deponun çatalını oluşturma ve yapılandırma

GitHub kuruluşunuzda çatallı depo oluşturmak için lütfen yönergeleri izleyin. Bu depo, kod yükseltmeleri ve içindeki kod değişiklikleri yerine işlem hatlarının yürütülmesi için olmak üzere iki dal maindevelopment kullanır.

GitHub ile Azure arasında kimlik doğrulamayı ayarlama

Lütfen daha önce oluşturulan Hizmet Sorumlusunu kullanmak ve GitHub deposu ile Azure Hizmetleri arasında kimlik doğrulamasını ayarlamak için yönergeleri izleyin.

Bu adım, Hizmet Sorumlusu bilgilerini depolayan bir GitHub Gizli Dizisi yapılandırılır. Depodaki iş akışları gizli dizi adını kullanarak bağlantı bilgilerini okuyabilir. Bu, GitHub iş akışı adımlarını Azure'a otomatik olarak bağlanacak şekilde yapılandırmaya yardımcı olur.

Depoyu kopyalama

Yeni bir yerel depo oluşturmak için lütfen yönergeleri izleyin.

Bu, geliştirme dalından yeni bir özellik dalı oluşturmamıza ve değişiklikleri birleştirmemize yardımcı olur.

İşlem hatlarını test edin

İşlem hatlarını test etmek için lütfen yönergeleri izleyin. Adımlar şunlardır:

  1. Bir özellik dalından geliştirme dalı için çekme isteği (Çekme İsteği) oluşturun.
  2. Pr işlem hattı, dal ilkesi yapılandırmasının sonucu olarak otomatik olarak yürütülmelidir.
  3. Pr daha sonra geliştirme dalı ile birleştirilir.
  4. İlişkili 'dev' işlem hattı yürütülür. Bu, tam CI ve CD yürütmesine neden olur ve mevcut Azure Machine Learning Uç Noktalarının sağlanmasına veya güncelleştirilmesine neden olur.

Test çıkışları burada gösterilenlere benzer olmalıdır.

Yerel yürütme

Yerel yürütmenin özelliklerinden yararlanmak için şu yükleme adımlarını izleyin:

  1. Depoyu kopyalama: Şablonun deposunu GitHub deposundan kopyalayarak başlayın.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. env dosyasını ayarlama: En üst klasör düzeyinde .env dosyası oluşturun ve bahsedilen öğeler için bilgi sağlayın. Gerektiği kadar bağlantı adı ekleyin. Bu depodaki tüm akış örneklerinde adlı aoaiAzureOpenAI bağlantısı kullanılır. api_key ve api_base için güncelleştirilmiş değerleri içeren bir çizgi aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} ekleyin. Akışlarınızda farklı adlara sahip ek bağlantılar kullanılıyorsa, buna uygun şekilde eklenmelidir. Şu anda sağlayıcı olarak AzureOpenAI ile akış yapın.

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. Bağımlılıkları yüklemek için yerel conda veya sanal ortamı hazırlayın.

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

  1. Buradaki belgelere göre akışlarınızı şablona getirin veya yazın.

  2. local_execution klasöründe sağlanan örneklere benzer python betikleri yazın.

Sonraki adımlar