LLM tabanlı uygulama DevOps ile istem akışını tümleştirme

Bu makalede, istem akışının Azure Machine Learning'de LLM tabanlı uygulama DevOps ile tümleştirilmesi hakkında bilgi edineceksiniz. prompt flow, LLM tabanlı uygulama geliştirme iş akışınızın tamamıyla akış geliştirme ve yineleme için geliştirici dostu ve kullanımı kolay bir kod öncelikli deneyim sunar.

Akışların yerel olarak geliştirilmesini kolaylaştırmak, akış çalıştırmalarının ve değerlendirme çalıştırmalarının yerel olarak tetiklenmesi ve akışların yerel ortamdan buluta (Azure Machine Learning çalışma alanı) geçişini kolaylaştırmak için bir istem akış SDK'sı ve CLI, bir VS kod uzantısı ve akış klasör gezgininin yeni kullanıcı arabirimini sağlar.

Bu belge, LLM tabanlı uygulama geliştirme iş akışlarınızı geliştirmek için istem akışı kodu deneyiminin ve DevOps'un özelliklerini etkili bir şekilde birleştirmeye odaklanmaktadır.

Diagram of the showing the following flow: create flow, develop and test flow, versioning in code repo, submit runs to cloud, and debut and iteration.

İstem akışında kod öncelikli deneyime giriş

LLM kullanarak uygulama geliştirirken, kod depolarını ve CI/CD işlem hatlarını içeren standartlaştırılmış bir uygulama mühendisliği süreci yaygın olarak kullanılır. Bu tümleştirme, ekip üyeleri arasında kolaylaştırılmış bir geliştirme süreci, sürüm denetimi ve işbirliği sağlar.

Daha verimli bir LLMOps yineleme işlemi arayan kod geliştirme konusunda deneyimli geliştiriciler için, istem akışı kodu deneyiminden elde ettiğiniz aşağıdaki temel özellikler ve avantajlar:

  • Kod deposunda akış sürümü oluşturma. Akışınızı YAML biçiminde tanımlayabilirsiniz; bu, klasör yapısında başvurulan kaynak dosyalarla uyumlu kalabilir.
  • Akış çalıştırmayı CI/CD işlem hattıyla tümleştirme. Akış çalıştırmalarını, CI/CD işlem hattınızla ve teslim sürecinizle sorunsuz bir şekilde tümleştirilebilen istem akışı CLI'sını veya SDK'sını kullanarak tetikleyebilirsiniz.
  • Yerelden buluta sorunsuz geçiş. Akış klasörünüzü sürüm denetimi, yerel geliştirme ve paylaşım için yerel veya kod deponuza kolayca dışarı aktarabilirsiniz. Benzer şekilde, bulut kaynaklarında daha fazla yazma, test ve dağıtım için akış klasörü zahmetsizce buluta aktarılabilir.

İstem akışı kodu tanımına erişme

Her akış, her istem akışı, akışı kod klasörü yapısında tanımlamak için gerekli dosyaları içeren bir akış klasörü yapısıyla ilişkilendirilir. Bu klasör yapısı akışınızı düzenleyerek daha sorunsuz geçişleri kolaylaştırır.

Azure Machine Learning, tüm çalışma alanı kullanıcıları için paylaşılan bir dosya sistemi sunar. Akış oluşturulduktan sonra, ilgili akış klasörü otomatik olarak oluşturulur ve dizinde Users/<username>/promptflow bulunan orada depolanır.

Screenshot of standard flow creation showing the create a new flow.

Akış klasörü yapısı

Akış klasörü yapısına ve içerdiği anahtar dosyalara genel bakış:

  • flow.dag.yaml: YAML biçimindeki bu birincil akış tanımı dosyası, akışta kullanılan girişler, çıkışlar, düğümler, araçlar ve çeşitlemeler hakkında bilgi içerir. İstem akışını yazmak ve tanımlamak için tam sayıdır.
  • Kaynak kod dosyaları (.py, .jinja2): Akış klasörü, akıştaki araçlar/düğümler tarafından başvurulan kullanıcı tarafından yönetilen kaynak kodu dosyalarını da içerir.
    • Python (.py) biçimindeki dosyalara, özel python mantığı tanımlamak için python aracı tarafından başvurulabilir.
    • Jinja 2 (.jinja2) biçimindeki dosyalara istem bağlamını tanımlamak için istem aracı veya LLM aracı tarafından başvurulabilir.
  • Kaynak olmayan dosyalar: Akış klasörü, kaynak dosyalara dahil edilebilecek yardımcı program dosyaları ve veri dosyaları gibi kaynak olmayan dosyalar da içerebilir.

Akış oluşturulduktan sonra akış dosyalarını doğru dosya gezgininde görüntülemek ve çalıştırmak için Akış Yazma Sayfasına gidebilirsiniz. Bu, dosyalarınızı görüntülemenize, düzenlemenize ve yönetmenize olanak tanır. Dosyalarda yapılan tüm değişiklikler doğrudan dosya paylaşımı depolama alanına yansıtılır.

Screenshot of standard flow highlighting the files explorer.

"Ham dosya modu" açıkken, akış tanımı dosyası flow.dag.yaml ve kaynak dosyalar dahil olmak üzere dosya düzenleyicisinde dosyaların ham içeriğini görüntüleyebilir ve düzenleyebilirsiniz.

Screenshot of raw file mode on a standard flow.

Screenshot of flow source file in a standard flow.

Alternatif olarak, tüm akış klasörlerine doğrudan Azure Machine Learning not defteri içinden erişebilirsiniz.

Screenshot of notebooks in Azure Machine Learning in the prompt flow folder showing the files.

Kod deposunda sürüm oluşturma istemi akışı

Akışınızı kod deponuza iade etmek için akış klasörünü akış yazma sayfasından yerel sisteminize kolayca dışarı aktarabilirsiniz. Bu işlem, gezgindeki tüm dosyaları içeren bir paketi yerel makinenize indirir ve bu paketi kod deponuza iade edebilirsiniz.

Screenshot of showing the download button in the file explorer.

Azure Machine Learning ile DevOps tümleştirmesi hakkında daha fazla bilgi için bkz. Azure Machine Learning'de Git tümleştirmesi

Çalıştırmaları yerel depodan buluta gönderme

Önkoşullar

İstem akışı SDK'sı yükleme

pip install -r ../../examples/requirements.txt

Azure Machine Learning çalışma alanına Bağlan

az login

run.yml Bu akış çalıştırmasının yapılandırmasını bulutta tanımlamak için öğesini hazırlayın.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl

column_mapping:
  url: ${data.url}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specify automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

Akıştaki her araç için bağlantı ve dağıtım adını belirtebilirsiniz. Bağlantı ve dağıtım adını belirtmezseniz, dosyadaki flow.dag.yaml tek bağlantı ve dağıtımı kullanır. Bağlantıları biçimlendirmek için:

...
connections:
  <node_name>:
    connection: <connection_name>
      deployment_name: <deployment_name>
...

pfazure run create --file run.yml

run_evaluation.yml Bu değerlendirme akışı çalıştırmasının yapılandırmasını bulutta tanımlamak için öğesini hazırlayın.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl
run: <id of web-classification flow run>
column_mapping:
  groundtruth: ${data.answer}
  prediction: ${run.outputs.category}

# define cloud resource
# if omitted, it will use the automatic runtime, you can also specify the runtime name, specif automatic will also use the automatic runtime.
runtime: <runtime_name> 


# define instance type only work for automatic runtime, will be ignored if you specify the runtime name.
# resources:
#   instance_type: <instance_type>

# overrides connections 
connections:
  classify_with_llm:
    connection: <connection_name>
    deployment_name: <deployment_name>
  summarize_text_content:
    connection: <connection_name>
    deployment_name: <deployment_name>

pfazure run create --file run_evaluation.yml

Azure Machine Learning çalışma alanında çalıştırma sonuçlarını görüntüleme

Akış çalıştırmasını buluta gönder, çalıştırmanın portal url'sini döndürür. Çalıştırma sonuçlarını portalda uri görünümünü açabilirsiniz.

Çalıştırma sonuçlarını görüntülemek için aşağıdaki komutu da kullanabilirsiniz.

Günlükleri akışla aktarma

pfazure run stream --name <run_name>

Çalıştırma çıkışlarını görüntüleme

pfazure run show-details --name <run_name>

Değerlendirme çalıştırmasının ölçümlerini görüntüleme

pfazure run show-metrics --name <evaluation_run_name>

Önemli

Daha fazla bilgi için Azure için istem akışı CLI belgelerine başvurabilirsiniz.

İnce ayardan yinelemeli geliştirme

Yerel geliştirme ve test

Yinelemeli geliştirme sırasında, akışınızı veya istemlerinizi iyileştirip ince ayarlarken, kod deponuzda birden çok yinelemeyi yerel olarak gerçekleştirmek yararlı olabilir. Azure bağlaması olmadan yalnızca yerel geliştirme ve test işlemlerini kolaylaştırmak için topluluk sürümü, istem akışı VS Code uzantısı ve istem akışı yerel SDK 'sı ve CLI sağlanır.

İstem akışı VS Code uzantısı

komut istemi akışı VS Code uzantısı yüklendikten sonra akışınızı VS Code düzenleyicisinden kolayca yerel olarak yazabilir ve buluttakine benzer bir kullanıcı arabirimi deneyimi sağlayabilirsiniz.

Uzantıyı kullanmak için:

  1. VS Code Desktop'ta bir istem akışı klasörü açın.
  2. '''flow.dag.yaml'' dosyasını not defteri görünümünde açın.
  3. Değişkenlerdeki istemleri ayarlamak veya daha fazla araç eklemek gibi gerekli değişiklikleri akışınızda yapmak için görsel düzenleyiciyi kullanın.
  4. Akışınızı test etmek için görsel düzenleyicinin üst kısmındaki Akışı Çalıştır düğmesini seçin. Bu, akış testlerini tetikler.

Screenshot of VS Code showing running the flow in the visual editor.

İstem akışı yerel SDK & CLI

Jupyter, PyCharm, Visual Studio veya diğer IDE'leri kullanmayı tercih ediyorsanız, dosyadaki flow.dag.yaml YAML tanımını doğrudan değiştirebilirsiniz.

Screenshot of a yaml file in VS Code highlighting the default input and flow directory.

Ardından, istem akışı CLI'sını veya SDK'sını kullanarak test için bir akış tek çalıştırması tetikleyebilirsiniz.

Çalışma dizininde olduğunuzu varsayarsak <path-to-the-sample-repo>/examples/flows/standard/

pf flow test --flow web-classification  # "web-classification" is the directory name

Screenshot of the flow test output in PowerShell.

Bu, ana kod deposunu her seferinde güncelleştirmeye gerek kalmadan değişiklikleri hızlı bir şekilde yapmanıza ve test etmenize olanak tanır. Yerel testinizin sonuçlarından memnun olduktan sonra bulutta deneme çalıştırmaları gerçekleştirmek için çalıştırmaları yerel depodan buluta göndermeye aktarabilirsiniz.

Yerel sürümleri kullanma hakkında daha fazla ayrıntı ve kılavuz için github istemi akışı topluluğuna başvurabilirsiniz.

Sürekli geliştirme için studio kullanıcı arabirimine geri dönün

Alternatif olarak, akış yazma sayfasında akışınızda değişiklik yapmak için bulut kaynaklarını ve deneyimi kullanarak stüdyo kullanıcı arabirimine geri dönme seçeneğiniz vardır.

Akış dosyalarının en güncel sürümüyle geliştirmeye ve çalışmaya devam etmek için not defterindeki terminale erişebilir ve akış dosyalarının en son değişikliklerini deponuzdan çekebilirsiniz.

Ayrıca, stüdyo kullanıcı arabiriminde çalışmaya devam etmek isterseniz, yerel akış klasörünü doğrudan yeni bir taslak akış olarak içeri aktarabilirsiniz. Bu, yerel ve bulut geliştirme arasında sorunsuz geçiş yapmanızı sağlar.

Screenshot of the create a new flow panel with upload to local highlighted.

CI/CD tümleştirmesi

CI: Ci işlem hattında akış çalıştırmalarını tetikleme

Akışınızı başarıyla geliştirip test ettikten ve ilk sürüm olarak iade ettikten sonra, sonraki ayarlama ve test yinelemesi için hazır olursunuz. Bu aşamada, istem akışı CLI'sını kullanarak toplu test ve değerlendirme çalıştırmaları dahil olmak üzere akış çalıştırmalarını tetikleyebilirsiniz. Bu, Sürekli Tümleştirme (CI) işlem hattınızda otomatik bir iş akışı olarak görev yapabilir.

Akış yinelemelerinizin yaşam döngüsü boyunca çeşitli işlemler otomatikleştirilebilir:

  • Çekme İsteğinden sonra istem akışını çalıştırma
  • Sonuçların yüksek kalitede olduğundan emin olmak için istem akışı değerlendirmesi çalıştırma
  • İstem akışı modellerini kaydetme
  • İstem akışı modellerinin dağıtımı

Web sınıflandırma akışı yürüten uçtan uca MLOps işlem hattıyla ilgili kapsamlı bir kılavuz için bkz . Flow ve GitHub istemiyle uçtan uca LLMOps'u ayarlama ve GitHub tanıtım projesi.

CD: Sürekli dağıtım

Üretime gitmek için son adım, akışınızı Azure Machine Learning'de çevrimiçi uç nokta olarak dağıtmaktır. Bu sayede akışınızı uygulamanızla tümleştirebilir ve kullanıma sunabilirsiniz.

Akışınızı dağıtma hakkında daha fazla bilgi için bkz . CLI ve SDK ile gerçek zamanlı çıkarım için akışları Azure Machine Learning yönetilen çevrimiçi uç noktasına dağıtma.

Üretimde akış geliştirme üzerinde işbirliği yapma

İstem akışıyla LLM tabanlı bir uygulama geliştirme bağlamında, ekip üyeleri arasında işbirliği yapılması genellikle önemlidir. Ekip üyeleri aynı akış yazma ve test çalışmalarına, akışın çeşitli modelleri üzerinde çalışmalarına veya eşzamanlı olarak yinelemeli değişiklikler ve geliştirmeler yapmalarına neden olabilir.

Bu tür işbirliği, kodu paylaşma, değişiklikleri izleme, sürümleri yönetme ve bu değişiklikleri son projeyle tümleştirme konusunda verimli ve kolaylaştırılmış bir yaklaşım gerektirir.

komut istemi akışının kod deneyiminin bir parçası olarak istem akışı SDK'sı/CLI ve Visual Studio Code Uzantısı'nın tanıtılması, kod deponuzda akış geliştirme konusunda kolay işbirliği sağlar. Değişiklikleri izlemek, sürümleri yönetmek ve bu değişiklikleri son projeyle tümleştirmek için GitHub veya Azure DevOps gibi bulut tabanlı bir kod deposu kullanılması önerilir.

İşbirliğine dayalı geliştirme için en iyi uygulama

  1. Akışınızı yerel olarak yazma ve tek test etme - Kod deposu ve VSC Uzantısı

    • Bu işbirliğine dayalı işlemin ilk adımı, proje kodunuzun temeli olarak bir kod deposu kullanmaktır ve bu da istem akış kodunu içerir.
      • Bu merkezi depo verimli bir kuruluşa, tüm kod değişikliklerinin izlenmesine ve ekip üyeleri arasında işbirliğine olanak tanır.
    • Depo ayarlandıktan sonra, ekip üyeleri akışın yerel yazma ve tek giriş testi için VSC uzantısını kullanabilir.
      • Bu standartlaştırılmış tümleşik geliştirme ortamı, akışın farklı yönleri üzerinde çalışan birden çok üye arasında işbirliğini teşvik eder. Screenshot of local development.
  2. Bulut tabanlı deneysel toplu test ve değerlendirme - istem akışı CLI/SDK ve çalışma alanı portalı kullanıcı arabirimi

    • Yerel geliştirme ve test aşamasından sonra akış geliştiricileri pfazure CLI veya SDK'yı kullanarak yerel akış dosyalarından buluta toplu çalıştırma ve değerlendirme çalıştırmaları gönderebilir.
      • Bu eylem, Azure Machine Learning çalışma alanında bir portal kullanıcı arabirimiyle bulut kaynağının tüketilmesi, sonuçların kalıcı olarak depolanması ve verimli bir şekilde yönetilmesi için bir yol sağlar. Bu adım, işlem ve depolama ile dağıtımlar için daha fazla uç nokta dahil olmak üzere bulut kaynağı tüketimine olanak tanır. Screenshot of pfazure command to submit run to cloud.
    • Buluta gönderilen gönderiler sonrasında ekip üyeleri, sonuçları görüntülemek ve denemeleri verimli bir şekilde yönetmek için bulut portalı kullanıcı arabirimine erişebilir.
      • Bu bulut çalışma alanı tüm çalıştırma geçmişini, günlükleri, anlık görüntüleri, örnek düzeyindeki girişler ve çıkışlar dahil olmak üzere kapsamlı sonuçları toplamak ve yönetmek için merkezi bir konum sağlar. Screenshot of cloud run snapshot.
      • Geliştirme sırasındaki tüm çalıştırma geçmişini kaydeden çalıştırma listesinde, ekip üyeleri farklı çalıştırmaların sonuçlarını kolayca karşılaştırarak kalite analizine ve gerekli ayarlamalara yardımcı olabilir. Screenshot of run list in workspace. Screenshot of run comparison in workspace.
  3. Yerel yinelemeli geliştirme veya üretim için tek adımlı kullanıcı arabirimi dağıtımı

    • Denemelerin analizinden sonra, ekip üyeleri başka bir geliştirme ve ince ayar için kod deposuna geri dönebilir. Daha sonra sonraki çalıştırmalar yinelemeli bir şekilde buluta gönderilebilir.
      • Bu yinelemeli yaklaşım, ekip üretime hazır kaliteden memnun kalana kadar tutarlı bir geliştirme sağlar.
    • Ekip akışın kalitesine tamamen güvendikten sonra, Azure Machine Learning'de çevrimiçi uç nokta olarak kullanıcı arabirimi sihirbazı aracılığıyla sorunsuz bir şekilde dağıtılabilir. Ekip akışın kalitesine tamamen güvendikten sonra, güçlü bir bulut ortamında çevrimiçi uç nokta olarak kullanıcı arabirimi dağıtım sihirbazı aracılığıyla sorunsuz bir şekilde üretime geçirilebilir.
      • Çevrimiçi uç noktadaki bu dağıtım, çalıştırma anlık görüntüsünü temel alarak kararlı ve güvenli hizmet sunma, daha fazla kaynak ayırma ve kullanım izleme ve bulutta günlük izleme olanağı sağlayabilir. Screenshot of deploying flow from a run snapshot. Screenshot of deploy wizard.

İşbirliğine dayalı geliştirme için kod deposunu kullanmanızı neden öneririz?

Yinelemeli geliştirme için, yerel geliştirme ortamı ile Git gibi bir sürüm denetim sisteminin birleşimi genellikle daha etkilidir. Değişiklikler yapabilir ve kodunuzu yerel olarak test edebilir, ardından değişiklikleri Git'e işleyebilirsiniz. Bu, değişikliklerinizin devam eden bir kaydını oluşturur ve gerekirse önceki sürümlere geri dönme olanağı sunar.

Akışları farklı ortamlarda paylaşmak gerektiğinde GitHub veya Azure Repos gibi bulut tabanlı bir kod deposu kullanılması önerilir. Bu, kodunuzun en son sürümüne herhangi bir konumdan erişmenizi sağlar ve işbirliği ve kod yönetimi için araçlar sağlar.

Ekipler, bu en iyi uygulamayı izleyerek hızlı akış geliştirme için sorunsuz, verimli ve üretken bir işbirliği ortamı oluşturabilir.

Sonraki adımlar