Udostępnij za pośrednictwem


Integrowanie przepływu monitów z usługą DevOps dla aplikacji opartych na usłudze LLM

Przepływ monitów usługi Azure Machine Learning to przyjazna dla deweloperów i łatwa w użyciu metoda typu code-first do tworzenia i iterowania przepływów na potrzeby tworzenia aplikacji opartych na dużym modelu językowym (LLM). Przepływ monitów udostępnia zestaw SDK i interfejs wiersza polecenia, rozszerzenie programu Visual Studio Code oraz interfejs użytkownika tworzenia przepływu. Te narzędzia ułatwiają tworzenie przepływów lokalnych, wyzwalanie przebiegu przepływu lokalnego i uruchamianie oceny oraz przenoszenie przepływów między środowiskami obszaru roboczego lokalnego i chmury.

Możesz połączyć środowisko przepływu monitów i możliwości kodu z operacjami deweloperskimi (DevOps), aby ulepszyć przepływy pracy tworzenia aplikacji oparte na usłudze LLM. Ten artykuł koncentruje się na integracji przepływu monitów i metodyki DevOps dla aplikacji opartych na usłudze Azure Machine Learning LLM.

Na poniższym diagramie przedstawiono interakcję z lokalnym i chmurowym tworzeniem przepływu monitów za pomocą metodyki DevOps.

Diagram przedstawiający następujący przepływ: tworzenie przepływu, opracowywanie i testowanie przepływu, przechowywanie wersji w repozytorium kodu, przesyłanie przebiegów do chmury oraz debiutowanie i iterację.

Wymagania wstępne

Używanie środowiska code-first w przepływie monitu

Tworzenie aplikacji opartych na języku LLM zwykle jest zgodne ze standardowym procesem inżynierii aplikacji, który obejmuje repozytoria kodu źródłowego i potoki ciągłego wdrażania/ciągłego wdrażania (CI/CD). Ten proces promuje usprawnione programowanie, kontrolę wersji i współpracę między członkami zespołu.

Integrowanie metodyki DevOps z interfejsem kodu przepływu monitów oferuje deweloperom kodu wydajniejszy proces iteracji GenAIOps lub LLMOps z następującymi kluczowymi funkcjami i korzyściami:

  • Przechowywanie wersji przepływu w repozytorium kodu. Pliki przepływu można definiować w formacie YAML i być zgodne z przywoływanymi plikami źródłowymi w tej samej strukturze folderów.

  • Integracja przebiegu przepływu z potokami ciągłej integracji/ciągłego wdrażania. Przepływ monitów można bezproblemowo zintegrować z potokami ciągłej integracji/ciągłego wdrażania i procesem dostarczania przy użyciu interfejsu wiersza polecenia przepływu monitu lub zestawu SDK w celu automatycznego wyzwalania przebiegów przepływu.

  • Bezproblemowe przejście między chmurą i lokalną. Możesz łatwo wyeksportować folder przepływu do lokalnego lub nadrzędnego repozytorium kodu na potrzeby kontroli wersji, programowania lokalnego i udostępniania. Możesz również bez wysiłku zaimportować folder przepływu z powrotem do usługi Azure Machine Learning w celu dalszego tworzenia, testowania i wdrażania przy użyciu zasobów w chmurze.

Kod przepływu monitu dostępu

Każdy przepływ monitów ma strukturę folderów przepływu zawierającą niezbędne pliki kodu definiujące przepływ. Struktura folderów organizuje przepływ, ułatwiając bezproblemowe przejścia między środowiskiem lokalnym i chmurą.

Usługa Azure Machine Learning udostępnia udostępniony system plików dla wszystkich użytkowników obszaru roboczego. Po utworzeniu przepływu odpowiedni folder przepływu jest automatycznie generowany i przechowywany w katalogu Users/<username>/promptflow .

Zrzut ekranu przedstawiający standardowe tworzenie przepływu z nowym przepływem.

Praca z plikami kodu przepływu

Po utworzeniu przepływu w usłudze Azure Machine Learning Studio możesz wyświetlać, edytować i zarządzać plikami przepływu w sekcji Pliki na stronie tworzenia przepływu. Wszelkie modyfikacje wprowadzone w plikach odzwierciedlają się bezpośrednio w magazynie udziałów plików.

Zrzut ekranu przedstawiający standardową stronę tworzenia przepływu z wyróżnioną okienkiem Pliki.

Folder przepływu dla przepływu opartego na usłudze LLM zawiera następujące pliki kluczy.

  • flow.dag.yaml jest podstawowym plikiem definicji przepływu w formacie YAML. Ten plik jest integralną częścią tworzenia i definiowania przepływu monitu. Plik zawiera informacje o danych wejściowych, danych wyjściowych, węzłach, narzędziach i wariantach używanych przez przepływ.

  • Pliki kodu źródłowego zarządzanego przez użytkownika w języku Python (.py) lub Jinja 2 (jinja2) konfigurują narzędzia i węzły w przepływie. Narzędzie języka Python używa plików języka Python do definiowania niestandardowej logiki języka Python. Narzędzie monitu i narzędzie LLM używają plików Jinja 2 do zdefiniowania kontekstu monitu.

  • Pliki inne niż źródła, takie jak narzędzia i pliki danych, mogą być zawarte w folderze przepływu wraz z plikami źródłowymi.

Aby wyświetlić i edytować nieprzetworzone kod plików flow.dag.yaml i źródłowych w edytorze plików, włącz tryb nieprzetworzonych plików.

Zrzut ekranu przedstawiający tryb nieprzetworzonego pliku w standardowym przepływie.

Alternatywnie możesz uzyskiwać dostęp do wszystkich folderów i plików przepływu oraz edytować je na stronie Notesy usługi Azure Machine Learning Studio.

Zrzut ekranu przedstawiający notesy w usłudze Azure Machine Learning z folderem przepływu monitu z plikami.

Pobierz i zaewidencjonuj kod przepływu monitu

Aby sprawdzić przepływ do repozytorium kodu, wyeksportuj folder przepływu z usługi Azure Machine Learning Studio do komputera lokalnego. Wybierz ikonę pobierania w sekcji Pliki strony tworzenia przepływu, aby pobrać pakiet ZIP zawierający wszystkie pliki przepływu. Następnie możesz sprawdzić ten plik w repozytorium kodu lub rozpakować go, aby pracować z plikami lokalnie.

Zrzut ekranu przedstawiający ikonę pobierania w Eksploratorze plików.

Aby uzyskać więcej informacji na temat integracji metodyki DevOps z usługą Azure Machine Learning, zobacz Integracja z usługą Git dla usługi Azure Machine Learning.

Programowanie i testowanie lokalne

W miarę udoskonalania i dostosowywania przepływu lub monitów podczas opracowywania iteracyjnego można wykonywać wiele iteracji lokalnie w repozytorium kodu. Wersja społeczności programu VS Code, rozszerzenie przepływu monitu programu VS Code oraz lokalny zestaw SDK i interfejs wiersza polecenia monitu ułatwiają tworzenie i testowanie bez powiązania platformy Azure.

Praca lokalna umożliwia szybkie wprowadzanie i testowanie zmian bez konieczności każdorazowego aktualizowania głównego repozytorium kodu. Aby uzyskać więcej szczegółów i wskazówek dotyczących korzystania z wersji lokalnych, zapoznaj się ze społecznością GitHub monituj o przepływ.

Korzystanie z rozszerzenia przepływu monitu programu VS Code

Korzystając z rozszerzenia VS Code Monituj przepływ, możesz łatwo utworzyć przepływ lokalnie w edytorze programu VS Code z podobnym środowiskiem interfejsu użytkownika, jak w chmurze.

Aby edytować pliki lokalnie w programie VS Code za pomocą rozszerzenia Monituj przepływ:

  1. W programie VS Code z włączonym rozszerzeniem przepływu monitu otwórz folder przepływu monitów.

  2. Otwórz plik flow.dag.yaml i wybierz link Edytor wizualizacji w górnej części pliku.

    Zrzut ekranu przedstawiający link edytora wizualizacji w górnej części pliku definicji przepływu w programie VS Code.

  3. Użyj edytora wizualizacji przepływu monitu, aby wprowadzić zmiany w przepływie, takie jak dostrajanie monitów w wariantach lub dodawanie większej liczby węzłów.

    Zrzut ekranu przedstawiający edytor przepływu monitu wizualizacji w programie VS Code.

  4. Aby przetestować przepływ, wybierz ikonę Uruchom w górnej części edytora wizualizacji lub aby przetestować dowolny węzeł, wybierz ikonę Uruchom w górnej części węzła.

    Zrzut ekranu programu VS Code przedstawiający uruchamianie przepływu lub węzła w edytorze wizualizacji.

Korzystanie z zestawu SDK przepływu monitów i interfejsu wiersza polecenia

Jeśli wolisz pracować bezpośrednio w kodzie lub użyć programu Jupyter, PyCharm, Visual Studio lub innego zintegrowanego środowiska projektowego (IDE), możesz bezpośrednio zmodyfikować kod YAML w pliku flow.dag.yaml .

Zrzut ekranu przedstawiający plik YAML w programie VS Code z wyróżnionym domyślnym katalogiem wejściowym i katalogiem przepływu.

Następnie można wyzwolić pojedynczy przebieg przepływu na potrzeby testowania przy użyciu interfejsu wiersza polecenia przepływu monitu lub zestawu SDK w terminalu w następujący sposób.

Aby wyzwolić uruchomienie z katalogu roboczego, uruchom następujący kod:

pf flow test --flow <directory-name>

Zwracane wartości to dzienniki i dane wyjściowe testów.

Zrzut ekranu przedstawiający dane wyjściowe testu przepływu w programie PowerShell.

Przesyłanie przebiegów do chmury z repozytorium lokalnego

Gdy wyniki testowania lokalnego będą zadowalające, możesz użyć interfejsu wiersza polecenia przepływu monitu lub zestawu SDK, aby przesłać przebiegi do chmury z repozytorium lokalnego. Poniższa procedura i kod są oparte na projekcie pokazowym klasyfikacji internetowej w usłudze GitHub. Możesz sklonować repozytorium projektu lub pobrać kod przepływu monitu do komputera lokalnego.

Instalowanie zestawu SDK przepływu monitów

Zainstaluj zestaw SDK/interfejs wiersza polecenia przepływu monitu platformy Azure, uruchamiając polecenie pip install promptflow[azure] promptflow-tools.

Jeśli używasz projektu demonstracyjnego, pobierz zestaw SDK i inne niezbędne pakiety, instalując requirements.txt za pomocą polecenia
pip install -r <path>/requirements.txt.

Nawiązywanie połączenia z obszarem roboczym usługi Azure Machine Learning

az login

Przekazywanie przepływu i tworzenie przebiegu

Przygotuj plik run.yml do zdefiniowania konfiguracji dla tego przepływu uruchomionego w chmurze.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl

column_mapping:
  url: ${data.url}

# Define cloud compute resource

resources:
  instance_type: <compute-type>

# If using compute instance compute type, also specify instance name
#  compute: <compute-instance-name> 

# Specify connections

  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

Możesz określić nazwę połączenia i wdrożenia dla każdego narzędzia w przepływie, który wymaga połączenia. Jeśli nie określisz nazwy połączenia i wdrożenia, narzędzie użyje połączenia i wdrożenia w pliku flow.dag.yaml . Użyj następującego kodu, aby sformatować połączenia:

...
connections:
  <node-name>:
    connection: <connection-name>
      deployment_name: <deployment-name>
...

Utwórz przebieg.

pfazure run create --file run.yml

Tworzenie przebiegu przepływu oceny

Przygotuj plik run_evaluation.yml, aby zdefiniować konfigurację dla tego przepływu oceny uruchomionego w chmurze.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl
run: <id-of-base-flow-run>
column_mapping:
  <input-name>: ${data.<column-from-test-dataset>}
  <input-name>: ${run.outputs.<column-from-run-output>}

resources:
  instance_type: <compute-type>
  compute: <compute_instance_name> 

connections:
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

Utwórz przebieg oceny.

pfazure run create --file run_evaluation.yml

Wyświetlanie wyników przebiegu

Przesyłanie przebiegu przepływu do chmury zwraca adres URL chmury przebiegu. Możesz otworzyć adres URL, aby wyświetlić wyniki przebiegu w usłudze Azure Machine Learning Studio. Możesz również uruchomić następujące polecenia interfejsu wiersza polecenia lub zestawu SDK, aby wyświetlić wyniki uruchamiania.

Przesyłanie strumieniowe dzienników

pfazure run stream --name <run-name>

Wyświetlanie danych wyjściowych przebiegu

pfazure run show-details --name <run-name>

Wyświetlanie metryk przebiegu oceny

pfazure run show-metrics --name <evaluation-run-name>

Integracja z usługą DevOps

Połączenie lokalnego środowiska programistycznego i systemu kontroli wersji, takiego jak Git, jest zwykle najbardziej skuteczne w przypadku programowania iteracyjnego. Możesz wprowadzić modyfikacje i przetestować kod lokalnie, a następnie zatwierdzić zmiany w usłudze Git. Ten proces tworzy bieżący rekord zmian i umożliwia przywrócenie wcześniejszych wersji w razie potrzeby.

Jeśli musisz udostępniać przepływy w różnych środowiskach, możesz wypchnąć je do repozytorium kodu opartego na chmurze, takiego jak GitHub lub Azure Repos. Ta strategia umożliwia dostęp do najnowszej wersji kodu z dowolnej lokalizacji i udostępnia narzędzia do współpracy i zarządzania kodem.

Postępując zgodnie z tymi rozwiązaniami, zespoły mogą tworzyć bezproblemowe, wydajne i wydajne środowisko współpracy na potrzeby tworzenia monitów dotyczących przepływu.

Na przykład kompleksowe potoki LLMOps, które wykonują przepływy klasyfikacji internetowej, zobacz Konfigurowanie kompleksowej metodyki GenAIOps z monitami Flow i GitHub oraz projektem demonstracyjnym klasyfikacji internetowej usługi GitHub.

Przebiegi przepływu wyzwalacza w potokach ciągłej integracji

Po pomyślnym opracowaniu i przetestowaniu przepływu i zaewidencjonowaniu go jako wersji początkowej możesz przystąpić do dostrajania i testowania iteracji. Na tym etapie można wyzwalać przebiegi przepływu, w tym przebiegi testowania wsadowego i oceny, przy użyciu interfejsu wiersza polecenia przepływu monitu w celu zautomatyzowania kroków w potoku ciągłej integracji.

W całym cyklu życia iteracji przepływu można zautomatyzować następujące operacje za pomocą interfejsu wiersza polecenia:

  • Uruchamianie przepływu monitu po żądaniu ściągnięcia
  • Uruchamianie oceny przepływu monitów w celu zapewnienia wysokiej jakości wyników
  • Rejestrowanie modeli przepływu monitów
  • Wdrażanie modeli przepływu monitów

Używanie interfejsu użytkownika programu Studio do ciągłego opracowywania

W dowolnym momencie tworzenia przepływu możesz wrócić do interfejsu użytkownika usługi Azure Machine Learning Studio i użyć zasobów i środowisk w chmurze, aby wprowadzić zmiany w przepływie.

Aby kontynuować opracowywanie i pracę z najbardziej aktualnymi wersjami plików przepływu, możesz uzyskać dostęp do terminalu na stronie Notes i ściągnąć najnowsze pliki przepływu z repozytorium. Możesz też bezpośrednio zaimportować folder przepływu lokalnego jako nowy przepływ roboczy, aby bezproblemowo przejść między programowaniem lokalnym i chmurowym.

Zrzut ekranu przedstawiający ekran Tworzenie nowego przepływu z wyróżnioną pozycją Przekaż do lokalizacji lokalnej.

Wdrażanie przepływu jako punktu końcowego online

Ostatnim krokiem przechodzenia do środowiska produkcyjnego jest wdrożenie przepływu jako punktu końcowego online w usłudze Azure Machine Learning. Ten proces umożliwia zintegrowanie przepływu z aplikacją i udostępnienie go do użycia. Aby uzyskać więcej informacji na temat wdrażania przepływu, zobacz Wdrażanie przepływów w zarządzanym punkcie końcowym online usługi Azure Machine Learning w celu wnioskowania w czasie rzeczywistym.

Współpraca nad programowaniem przepływu

Współpraca między członkami zespołu może być niezbędna podczas tworzenia aplikacji opartej na usłudze LLM z przepływem monitów. Członkowie zespołu mogą tworzyć i testować ten sam przepływ, pracować nad różnymi aspektami przepływu lub jednocześnie wprowadzać iteracyjne zmiany i ulepszenia. Ta współpraca wymaga wydajnego i usprawnionego podejścia do udostępniania kodu, śledzenia modyfikacji, zarządzania wersjami i integrowania zmian w końcowym projekcie.

Zestaw SDK przepływu monitów/interfejs wiersza polecenia i rozszerzenie przepływu monitu programu VS Code ułatwiają współpracę w zakresie tworzenia przepływów opartych na kodzie w repozytorium kodu źródłowego. Możesz użyć opartego na chmurze systemu kontroli źródła, takiego jak GitHub lub Azure Repos, do śledzenia zmian, zarządzania wersjami i integrowania tych modyfikacji w końcowym projekcie.

Postępuj zgodnie z najlepszymi rozwiązaniami dotyczącymi tworzenia aplikacji do współpracy

  1. Skonfiguruj scentralizowane repozytorium kodu.

    Pierwszym krokiem procesu współpracy jest skonfigurowanie repozytorium kodu jako podstawy kodu projektu, w tym kodu przepływu monitu. To scentralizowane repozytorium umożliwia wydajną organizację, śledzenie zmian i współpracę między członkami zespołu.

  2. Utwórz i przetestuj przepływ lokalnie w programie VS Code za pomocą rozszerzenia Monituj przepływ.

    Po skonfigurowaniu repozytorium członkowie zespołu mogą używać programu VS Code z rozszerzeniem Monituj przepływ na potrzeby lokalnego tworzenia i testowania pojedynczego wejściowego przepływu. Ustandaryzowane zintegrowane środowisko projektowe promuje współpracę między wieloma członkami pracującymi nad różnymi aspektami przepływu.

    Zrzut ekranu przedstawiający programowanie lokalne.

  3. Użyj interfejsu pfazure wiersza polecenia lub zestawu SDK, aby przesłać uruchomienia wsadowe i uruchomienia ewaluacyjne z przepływów lokalnych do chmury.

    Po lokalnym tworzeniu i testowaniu członkowie zespołu mogą przesyłać i oceniać przebiegi wsadowe i ewaluacyjne do chmury przy użyciu interfejsu wiersza polecenia przepływu monitu. Ten proces umożliwia użycie zasobów obliczeniowych w chmurze, trwały magazyn wyników, tworzenie punktu końcowego dla wdrożeń i efektywne zarządzanie w interfejsie użytkownika programu Studio.

    Zrzut ekranu przedstawiający polecenie pfazure w celu przesłania przebiegu do chmury.

  4. Wyświetlanie wyników uruchamiania i zarządzanie nimi w interfejsie użytkownika obszaru roboczego usługi Azure Machine Learning Studio.

    Po przesłaniu przebiegów do chmury członkowie zespołu mogą uzyskać dostęp do interfejsu użytkownika studio, aby efektywnie wyświetlać wyniki i zarządzać eksperymentami. Obszar roboczy w chmurze zapewnia scentralizowaną lokalizację do zbierania historii uruchamiania, dzienników, migawek, kompleksowych wyników oraz danych wejściowych i wyjściowych na poziomie wystąpienia oraz zarządzania nimi.

    Zrzut ekranu przedstawiający migawkę przebiegu w chmurze.

  5. Użyj listy Przebiegi, która rejestruje całą historię uruchamiania, aby łatwo porównać wyniki różnych przebiegów, ułatwiając analizę jakości i niezbędne korekty.

    Zrzut ekranu przedstawiający listę uruchomień w obszarze roboczym.

  6. Kontynuuj korzystanie z lokalnego programowania iteracyjnego.

    Po przeanalizowaniu wyników eksperymentów członkowie zespołu mogą wrócić do lokalnego środowiska i repozytorium kodu, aby uzyskać więcej możliwości programowania i dostrajania, a następnie iteracyjnie przesyłać kolejne uruchomienia do chmury. Takie podejście iteracyjne zapewnia spójne ulepszenia, dopóki zespół nie będzie zadowolony z jakości środowiska produkcyjnego.

  7. Użyj wdrożenia jednoetapowego do środowiska produkcyjnego w studio.

    Gdy zespół jest w pełni pewny jakości przepływu, może bezproblemowo wdrożyć go jako punkt końcowy online w niezawodnym środowisku chmury. Wdrożenie jako punkt końcowy online może być oparte na migawki przebiegu, co umożliwia stabilną i bezpieczną obsługę, dalszą alokację zasobów i śledzenie użycia oraz monitorowanie dzienników w chmurze.

    Zrzut ekranu przedstawiający wdrażanie przepływu z migawki przebiegu.

    Kreator wdrażania usługi Azure Machine Learning Studio ułatwia skonfigurowanie wdrożenia.

    Zrzut ekranu przedstawiający kreatora wdrażania.