İstem akışı ve Azure DevOps 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 tarafından sunulan uygulama geliştirme yaşam döngüsünü istem akışıyla otomatikleştirmek için Azure DevOps 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.

Bu yapılandırılmış metodolojiye bağlı kalınarak, istem akışı, 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 istem akışı şablonu, kod öncelikli yaklaşımı kullanarak bu yapılandırılmış metodolojiyi resmileştirir ve komut istemi akışıyla ilgili araçları ve süreci kullanarak LLM'ye yüklenmiş 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 istem akışı 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 Azure DevOps kullanarak LLM ile infused uygulamaları oluşturmanıza yardımcı olan istem akışı ile öğ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.
  • Azure DevOps'ta bir kuruluş. Azure DevOps'ta kuruluş işbirliği yapmaya, iş ve kod hatalarınızı, sorunlarınızı planlamaya ve izlemeye ve Sürekli tümleştirme ve dağıtım ayarlamaya yardımcı olur.
  • Altyapıyı çalıştırmak için Azure DevOps + Terraform kullanıyorsanız Azure DevOps için Terraform uzantısı

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

İstem akışı, Azure OpenAI, OpenAI veya Azure AI Search gibi uç noktalara bağlanmak için bağlantı kaynağını kullanır ve akışların yürütülmesi için çalışma zamanını kullanır. Bu kaynaklar, istem akışındaki 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.

Azure Hizmet Sorumlusu ayarlama

Azure Hizmet Sorumlusu, uygulamaların, hizmetlerin ve otomasyon araçlarının Azure kaynaklarına erişmek için kullandığı bir güvenlik kimliğidir. Azure ile kimlik doğrulaması yapması ve sizin yerinize kaynaklara erişmesi gereken bir uygulamayı veya hizmeti temsil eder. Azure'da Hizmet Sorumlusu oluşturmak için lütfen yönergeleri izleyin.

Bu Hizmet Sorumlusu daha sonra Azure DevOps Hizmeti bağlantısını ve Azure DevOps'u Azure Hizmetleri'nde kimlik doğrulaması ve bağlantı kurmak üzere yapılandırmak için kullanılır. her ikisi experiment and evaluation runs için de Prompt Flow'da yürütülen işler bu Hizmet Sorumlusunun kimliği altındadır. Ayrıca, hem ve runtime hem de compute aynı Hizmet Sorumlusu kullanılarak oluşturulur.

İpucu

Kurulum, Hizmet Sorumlusu için izinler owner sağlar.

  • Bunun nedeni, CD İşlem Hattı'nın bağlantı bilgilerini okumak için azure machine learning çalışma alanına yeni sağlanan Azure Machine Learning Uç Noktası erişimine otomatik olarak erişim sağlamasıdır.
  • Ayrıca ve gizli dizi izinleriyle Azure Machine Learning Çalışma Alanı ile getlist ilişkili anahtar kasası ilkesine ekler.

İşlem hattı YAML kodu değiştirilerek ve izinlerle ilgili adım kaldırılarak sahip izni düzey izinleri olarak değiştirilebilir contributor .

Azure DevOps’u ayarlama

Azure DevOps kullanarak LLMOps işlemini ayarlamak için yapılması gereken birden çok adım vardır.

Yeni Azure DevOps projesi oluşturma

Azure DevOps kullanıcı arabirimini kullanarak yeni bir Azure DevOps projesi oluşturmak için lütfen yönergeleri izleyin.

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

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

Bu adım, Hizmet Sorumlusu bilgilerini depolayan yeni bir Azure DevOps Service Bağlan ion yapılandırılır. Projedeki işlem hatları, bağlantı adını kullanarak bağlantı bilgilerini okuyabilir. Bu, Azure'a otomatik olarak bağlanmak için Azure DevOps işlem hattı adımlarını yapılandırmaya yardımcı olur.

Azure DevOps Değişken Grubu oluşturma

Yeni bir Değişken grubu oluşturmak ve Azure DevOps Service Bağlan ion ile ilgili bir değişken eklemek için lütfen yönergeleri izleyin.

Hizmet asıl adı, işlem hatlarında ortam değişkeni olarak otomatik olarak kullanılabilir.

Azure DevOps deposunu ve işlem hatlarını yapılandırma

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. Bu depodaki kodu kullanmak üzere kendi yerel deponuzu ve uzak deponuzu ayarlamak için lütfen yönergeleri izleyin.

Adımlar, hem hem development branches de main depodan kopyalamayı ve kodu yeni Azure DevOps deposuna başvurmak üzere ilişkilendirmeyi içerir. Kod geçişi dışında işlem hatları - hem çekme isteği hem de geliştirme işlem hatları, çekme isteği oluşturma ve birleştirme tetikleyicilerine göre otomatik olarak yürütülebilecek şekilde yapılandırılır.

Geliştirme dalı için dal ilkesi, bir özellik dalından geliştirme dalından yükseltilen tüm PR'ler için PR işlem hattını yürütecek şekilde de yapılandırılmalıdır. Çekme isteği geliştirme dalı ile birleştirildiğinde 'dev' işlem hattı yürütülür. 'dev' işlem hattı hem CI hem de CD aşamalarından oluşur.

İşlem hatları içinde uygulanan döngüde insan da vardır. İşlem hattındaki dev CI aşaması yürütüldükten sonra, CD aşaması el ile onaydan sonra devam eder. Onay, Azure DevOps işlem hattı derleme yürütme kullanıcı arabiriminden gerçekleşmelidir. Varsayılan zaman aşımı, işlem hattının reddedileceği ve CD aşamasının yürütülmediği 60 dakikadır. Yürütmenin el ile onaylanması, işlem hattının CD adımlarının yürütülmesine yol açar. El ile onay, 'replace@youremail.com' öğesine bildirim gönderecek şekilde yapılandırılmıştır. Uygun bir e-posta kimliğiyle değiştirilmelidir.

İşlem hatlarını test edin

İşlem hatlarını test etmek için lütfen adresinde belirtilen 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