Integrowanie przepływu monitów z opartą na usłudze LLM aplikacją DevOps
W tym artykule dowiesz się więcej na temat integracji przepływu monitów z opartą na usłudze LLM aplikacją DevOps w usłudze Azure Machine Learning. Przepływ monitów oferuje przyjazne dla deweloperów i łatwe w użyciu środowisko oparte na kodzie, które umożliwia tworzenie i iterowanie przepływu pracy tworzenia aplikacji opartych na usłudze LLM.
Udostępnia zestaw SDK przepływu monitów i interfejs wiersza polecenia, rozszerzenie programu VS Code oraz nowy interfejs użytkownika eksploratora folderów przepływu, aby ułatwić lokalne opracowywanie przepływów, lokalne wyzwalanie przebiegów przepływów i przebiegów oceny oraz przechodzenie przepływów z środowiska lokalnego na chmurę (obszar roboczy usługi Azure Machine Learning).
Ta dokumentacja koncentruje się na tym, jak skutecznie łączyć możliwości środowiska kodu przepływu monitów i metodyki DevOps w celu ulepszenia przepływów pracy tworzenia aplikacji opartych na usłudze LLM.
Wprowadzenie środowiska code-first w przepływie monitów
Podczas tworzenia aplikacji korzystających z usługi LLM często występuje standardowy proces inżynierii aplikacji, który obejmuje repozytoria kodu i potoki ciągłej integracji/ciągłego wdrażania. Ta integracja umożliwia usprawniony proces programowania, kontrolę wersji i współpracę między członkami zespołu.
Dla deweloperów doświadczonych w tworzeniu kodu, którzy szukają bardziej wydajnego procesu iteracji GenAIOps (czasami nazywanego llMOps), następujące kluczowe funkcje i korzyści, które można uzyskać dzięki środowisku kodu przepływu monitów:
- Przechowywanie wersji przepływu w repozytorium kodu. Możesz zdefiniować przepływ w formacie YAML, który może być zgodny z przywoływanymi plikami źródłowymi w strukturze folderów.
- Integrowanie przebiegu przepływu z potokiem ciągłej integracji/ciągłego wdrażania. Przebiegi przepływu można wyzwalać przy użyciu interfejsu wiersza polecenia przepływu monitu lub zestawu SDK, który można bezproblemowo zintegrować z potokiem ciągłej integracji/ciągłego wdrażania i procesem dostarczania.
- Bezproblemowe przejście z chmury lokalnej do chmury. Możesz łatwo wyeksportować folder przepływu do lokalnego lub repozytorium kodu na potrzeby kontroli wersji, lokalnego programowania i udostępniania. Podobnie folder przepływu można łatwo zaimportować z powrotem do chmury w celu dalszego tworzenia, testowania i wdrażania w zasobach w chmurze.
Uzyskiwanie dostępu do definicji kodu przepływu monitu
Każdy przepływ każdego przepływu monitu jest skojarzony ze strukturą folderów przepływu, która zawiera podstawowe pliki służące do definiowania przepływu w strukturze folderów kodu. Ta struktura folderów organizuje przepływ, ułatwiając bezproblemowe przejścia.
Usługa Azure Machine Learning oferuje 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 nim znajdujący się w Users/<username>/promptflow
katalogu.
Struktura folderów usługi Flow
Omówienie struktury folderów przepływu i plików kluczy, które zawiera:
- flow.dag.yaml: ten podstawowy plik definicji przepływu w formacie YAML zawiera informacje o danych wejściowych, wyjściowych, węzłach, narzędziach i wariantach używanych w przepływie. Jest integralną częścią tworzenia i definiowania przepływu monitu.
- Pliki kodu źródłowego (.py, .jinja2): Folder przepływu zawiera również pliki kodu źródłowego zarządzanego przez użytkownika, które są określane przez narzędzia/węzły w przepływie.
- Do plików w formacie języka Python (.py) można odwoływać się za pomocą narzędzia języka Python do definiowania niestandardowej logiki języka Python.
- Do plików w formacie Jinja 2 (.jinja2) można odwoływać się za pomocą narzędzia monitu lub narzędzia LLM do definiowania kontekstu monitu.
- Pliki inne niż źródłowe: folder przepływu może również zawierać pliki nieźródle, takie jak pliki narzędziowe i pliki danych, które mogą być zawarte w plikach źródłowych.
Po utworzeniu przepływu możesz przejść do strony tworzenia przepływu, aby wyświetlić i obsługiwać pliki przepływu w prawym eksploratorze plików. Dzięki temu można wyświetlać, edytować i zarządzać plikami. Wszelkie modyfikacje wprowadzone w plikach są bezpośrednio odzwierciedlane w magazynie udziałów plików.
Po włączeniu trybu nieprzetworzonego pliku można wyświetlać i edytować nieprzetworzone treści plików w edytorze plików, w tym plik flow.dag.yaml
definicji przepływu i pliki źródłowe.
Alternatywnie możesz uzyskać dostęp do wszystkich folderów przepływu bezpośrednio w notesie usługi Azure Machine Learning.
Przepływ monitu o wersje w repozytorium kodu
Aby zaewidencjonować przepływ do repozytorium kodu, możesz łatwo wyeksportować folder przepływu ze strony tworzenia przepływu do systemu lokalnego. Spowoduje to pobranie pakietu zawierającego wszystkie pliki z eksploratora do komputera lokalnego, który można następnie zaewidencjonować w repozytorium kodu.
Aby uzyskać więcej informacji na temat integracji metodyki DevOps z usługą Azure Machine Learning, zobacz Integracja z usługą Git w usłudze Azure Machine Learning
Przesyłanie przebiegów do chmury z repozytorium lokalnego
Wymagania wstępne
Ukończ tworzenie zasobów, aby rozpocząć pracę , jeśli nie masz jeszcze obszaru roboczego usługi Azure Machine Learning.
Środowisko języka Python, w którym zainstalowano zestaw SDK języka Python usługi Azure Machine Learning w wersji 2 — instrukcje instalacji. To środowisko służy do definiowania i kontrolowania zasobów usługi Azure Machine Learning i jest oddzielone od środowiska używanego podczas sesji obliczeniowej. Aby dowiedzieć się więcej, zobacz jak zarządzać sesją obliczeniową na potrzeby inżynierii przepływu monitów.
Zestaw SDK przepływu monitów instalacji
pip install -r ../../examples/requirements.txt
Nawiązywanie połączenia z obszarem roboczym usługi Azure Machine Learning
Przygotuj element run.yml
, aby zdefiniować konfigurację dla tego przebiegu przepływu w chmurze.
$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 using serverless compute type
# resources:
# instance_type: <instance_type>
# if using compute instance compute type
# resources:
# compute: <compute_instance_name>
# overrides connections
connections:
classify_with_llm:
connection: <connection_name>
deployment_name: <deployment_name>
summarize_text_content:
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. Jeśli nie określisz nazwy połączenia i wdrożenia, użyje jednego połączenia i wdrożenia w flow.dag.yaml
pliku. Aby sformatować połączenia:
...
connections:
<node_name>:
connection: <connection_name>
deployment_name: <deployment_name>
...
pfazure run create --file run.yml
Przygotuj element 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.jsonl
run: <id of web-classification flow run>
column_mapping:
groundtruth: ${data.answer}
prediction: ${run.outputs.category}
# define cloud resource
# if using serverless compute type
# resources:
# instance_type: <instance_type>
# if using compute instance compute type
# resources:
# compute: <compute_instance_name>
# 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
Wyświetlanie wyników przebiegu w obszarze roboczym usługi Azure Machine Learning
Przesyłanie przebiegu przepływu do chmury spowoduje zwrócenie adresu URL portalu przebiegu. Możesz otworzyć identyfikator URI, aby wyświetlić wyniki przebiegu w portalu.
Możesz również użyć następującego polecenia, aby wyświetlić wyniki przebiegów.
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>
Ważne
Aby uzyskać więcej informacji, zapoznaj się z dokumentacją interfejsu wiersza polecenia przepływu monitu dla platformy Azure.
Programowanie iteracyjne na podstawie dostrajania
Lokalne programowanie i testowanie
Podczas opracowywania iteracyjnego w miarę udoskonalania i dostosowywania przepływu lub monitów korzystne może być przeprowadzenie wielu iteracji lokalnie w repozytorium kodu. Dostępna jest wersja społeczności, rozszerzenie programu VS Code z monitem o przepływ oraz lokalny zestaw SDK i interfejs wiersza polecenia w celu ułatwienia czystego lokalnego programowania i testowania bez powiązania platformy Azure.
Rozszerzenie VS Code przepływu monitu
Po zainstalowaniu rozszerzenia VS Code przepływu monitu możesz łatwo utworzyć przepływ lokalnie z poziomu edytora programu VS Code, zapewniając podobne środowisko interfejsu użytkownika, jak w chmurze.
Aby użyć rozszerzenia:
- Otwórz folder przepływu monitów w programie VS Code Desktop.
- Otwórz plik ""flow.dag.yaml" w widoku notesu.
- Użyj edytora wizualizacji, aby wprowadzić wszelkie niezbędne zmiany w przepływie, takie jak dostrojenie monitów w wariantach lub dodanie większej liczby narzędzi.
- Aby przetestować przepływ, wybierz przycisk Uruchom przepływ w górnej części edytora wizualizacji. Spowoduje to wyzwolenie testu przepływu.
Monituj lokalny zestaw SDK i interfejs wiersza polecenia przepływu
Jeśli wolisz używać programów Jupyter, PyCharm, Visual Studio lub innych ide, możesz bezpośrednio zmodyfikować definicję YAML w flow.dag.yaml
pliku.
Następnie można wyzwolić pojedynczy przebieg przepływu na potrzeby testowania przy użyciu interfejsu wiersza polecenia przepływu monitu lub zestawu SDK.
Przy założeniu, że jesteś w katalogu roboczym <path-to-the-sample-repo>/examples/flows/standard/
pf flow test --flow web-classification # "web-classification" is the directory name
Dzięki temu można szybko wprowadzać i testować zmiany bez konieczności każdorazowego aktualizowania głównego repozytorium kodu. Gdy wyniki testowania lokalnego będą zadowalające, możesz przesłać przebiegi do chmury z repozytorium lokalnego w celu przeprowadzenia przebiegów eksperymentów w chmurze.
Aby uzyskać więcej szczegółów i wskazówek dotyczących korzystania z wersji lokalnych, możesz zapoznać się ze społecznością usługi GitHub z monitami dotyczącymi przepływu.
Wróć do interfejsu użytkownika programu Studio na potrzeby ciągłego opracowywania
Alternatywnie możesz wrócić do interfejsu użytkownika studio, korzystając z zasobów chmury i środowiska, aby wprowadzić zmiany w przepływie na stronie tworzenia przepływu.
Aby kontynuować opracowywanie i pracę z najbardziej aktualną wersją plików przepływu, możesz uzyskać dostęp do terminalu w notesie i ściągnąć najnowsze zmiany plików przepływu z repozytorium.
Ponadto jeśli wolisz kontynuować pracę w interfejsie użytkownika programu Studio, możesz bezpośrednio zaimportować folder przepływu lokalnego jako nowy przepływ roboczy. Dzięki temu można bezproblemowo przechodzić między programowaniem lokalnym i chmurowym.
Ciągła integracja/ciągłe wdrażanie
Ciągła integracja: Uruchamianie przepływu wyzwalacza w potoku ciągłej integracji
Po pomyślnym utworzeniu i przetestowaniu przepływu i sprawdzeniu go jako wersji początkowej możesz przystąpić do następnego 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. Może to służyć jako zautomatyzowany przepływ pracy w potoku ciągłej integracji.
W całym cyklu życia iteracji przepływu można zautomatyzować kilka operacji:
- 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
Aby zapoznać się z kompleksowym przewodnikiem dotyczącym kompleksowego potoku metodyki MLOps, który wykonuje przepływ klasyfikacji internetowej, zobacz Konfigurowanie kompleksowej metodyki GenAIOps z monitami flow i GitHub oraz projektu demonstracyjnego GitHub.
Ciągłe wdrażanie
Ostatnim krokiem do przejścia do środowiska produkcyjnego jest wdrożenie przepływu jako punktu końcowego online w usłudze Azure Machine Learning. Dzięki temu można zintegrować przepływ z aplikacją i udostępnić 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 przy użyciu interfejsu wiersza polecenia i zestawu SDK.
Współpraca nad opracowywaniem przepływów w środowisku produkcyjnym
W kontekście tworzenia aplikacji opartej na usłudze LLM z przepływem monitów współpraca między członkami zespołu jest często niezbędna. Członkowie zespołu mogą być zaangażowani w ten sam przepływ tworzenia i testowania, pracując nad różnymi aspektami przepływu lub jednocześnie wprowadzając iteracyjne zmiany i ulepszenia.
Taka współpraca wymaga wydajnego i usprawnionego podejścia do udostępniania kodu, śledzenia modyfikacji, zarządzania wersjami i integrowania tych zmian w końcowym projekcie.
Wprowadzenie zestawu SDK/ interfejsu wiersza polecenia przepływu monitów i rozszerzenia programu Visual Studio Code w ramach środowiska kodu przepływu monitów ułatwia współpracę w zakresie opracowywania przepływów w repozytorium kodu. Zaleca się korzystanie z repozytorium kodu opartego na chmurze, takiego jak GitHub lub Azure DevOps, w celu śledzenia zmian, zarządzania wersjami i integrowania tych modyfikacji w końcowym projekcie.
Najlepsze rozwiązanie w zakresie tworzenia aplikacji do współpracy
Tworzenie i pojedyncze testowanie przepływu lokalnie — repozytorium kodu i rozszerzenie VSC
- Pierwszym krokiem tego procesu współpracy jest użycie repozytorium kodu jako podstawy kodu projektu, który zawiera kod przepływu monitu.
- To scentralizowane repozytorium umożliwia wydajną organizację, śledzenie wszystkich zmian kodu i współpracę między członkami zespołu.
- Po skonfigurowaniu repozytorium członkowie zespołu mogą używać rozszerzenia VSC do lokalnego tworzenia i testowania pojedynczych danych wejściowych przepływu.
- Pierwszym krokiem tego procesu współpracy jest użycie repozytorium kodu jako podstawy kodu projektu, który zawiera kod przepływu monitu.
Testowanie i ocena wsadowa oparta na chmurze — interfejs wiersza polecenia przepływu monitu/zestaw SDK i interfejs użytkownika portalu obszaru roboczego
- Po fazie lokalnego programowania i testowania deweloperzy przepływu mogą przesyłać przebiegi i oceny wsadowe z plików przepływu lokalnego do chmury przy użyciu interfejsu wiersza polecenia pfazure lub zestawu SDK.
- Ta akcja umożliwia korzystanie z zasobów w chmurze, przechowywanie wyników w sposób trwały i zarządzany wydajnie za pomocą interfejsu użytkownika portalu w obszarze roboczym usługi Azure Machine Learning. Ten krok umożliwia użycie zasobów w chmurze, w tym zasoby obliczeniowe i magazyn oraz dalszy punkt końcowy dla wdrożeń.
- Po przesłaniu do chmury członkowie zespołu mogą uzyskiwać dostęp do interfejsu użytkownika portalu w chmurze, aby efektywnie wyświetlać wyniki i zarządzać eksperymentami.
- Ten obszar roboczy w chmurze zapewnia scentralizowaną lokalizację do zbierania wszystkich historii przebiegów, dzienników, migawek, kompleksowych wyników, w tym danych wejściowych i wyjściowych na poziomie wystąpienia.
- Na liście uruchomień, która rejestruje całą historię uruchamiania z poziomu procesu programowania, członkowie zespołu mogą łatwo porównać wyniki różnych przebiegów, co pomaga w analizie jakości i niezbędnych korektach.
- Po fazie lokalnego programowania i testowania deweloperzy przepływu mogą przesyłać przebiegi i oceny wsadowe z plików przepływu lokalnego do chmury przy użyciu interfejsu wiersza polecenia pfazure lub zestawu SDK.
Lokalne programowanie iteracyjne lub jednoetapowe wdrażanie interfejsu użytkownika dla środowiska produkcyjnego
- Po analizie eksperymentów członkowie zespołu mogą wrócić do repozytorium kodu na potrzeby innego programowania i dostrajania. Kolejne przebiegi można następnie przesyłać do chmury w sposób iteracyjny.
- Takie podejście iteracyjne zapewnia spójne ulepszenie, dopóki zespół nie będzie zadowolony z jakości gotowej do produkcji.
- Gdy zespół jest w pełni pewny jakości przepływu, można go bezproblemowo wdrożyć za pośrednictwem kreatora interfejsu użytkownika jako punktu końcowego online w usłudze Azure Machine Learning. Gdy zespół jest całkowicie pewny jakości przepływu, może zostać bezproblemowo przeniesiony do środowiska produkcyjnego za pośrednictwem kreatora wdrażania interfejsu użytkownika jako punktu końcowego online w niezawodnym środowisku chmury.
- Po analizie eksperymentów członkowie zespołu mogą wrócić do repozytorium kodu na potrzeby innego programowania i dostrajania. Kolejne przebiegi można następnie przesyłać do chmury w sposób iteracyjny.
Dlaczego zalecamy używanie repozytorium kodu do wspólnego programowania
W przypadku programowania iteracyjnego kombinacja lokalnego środowiska programistycznego i systemu kontroli wersji, takiego jak Git, jest zwykle bardziej efektywna. Możesz wprowadzić modyfikacje i przetestować kod lokalnie, a następnie zatwierdzić zmiany w usłudze Git. Spowoduje to utworzenie bieżącego rekordu zmian i umożliwia przywrócenie wcześniejszych wersji w razie potrzeby.
W przypadku konieczności udostępniania przepływów w różnych środowiskach zalecane jest użycie repozytorium kodu opartego na chmurze, takiego jak GitHub lub Azure Repos. Dzięki temu można uzyskać dostęp do najnowszej wersji kodu z dowolnej lokalizacji i udostępnia narzędzia do współpracy i zarządzania kodem.
Korzystając z tego najlepszego rozwiązania, zespoły mogą tworzyć bezproblemowe, wydajne i wydajne środowisko współpracy na potrzeby tworzenia monitów dotyczących przepływu.