GenAIOps z przepływem monitów i usługą GitHub
W miarę wzrostu zapotrzebowania na aplikacje z dodatkiem LLM organizacje potrzebują spójnych i usprawnionych procesów w celu zarządzania całym cyklem życia tych aplikacji. Generowanie operacji sztucznej inteligencji (GenAIOps), czasami nazywanych LLMOps, jest podstawą wydajnej inżynierii monitów i tworzenia i wdrażania aplikacji opartych na technologii LLM.
W tym artykule pokazano, w jaki sposób usługa Azure Machine Learning umożliwia integrację z usługą GitHub w celu zautomatyzowania cyklu życia tworzenia aplikacji z wbudowanym modułem LLM przy użyciu przepływu monitów. Przepływ monitów zapewnia usprawnione i ustrukturyzowane podejście do tworzenia aplikacji z wbudowanymi rozwiązaniami LLM. Jego dobrze zdefiniowany proces i cykl życia prowadzą przez proces tworzenia, testowania, optymalizowania i wdrażania przepływów, co kończy się tworzeniem w pełni funkcjonalnych rozwiązań z obsługą funkcji LLM.
Funkcje przepływu monitów genAIOps
Metodyka GenAIOps z przepływem monitów korzysta z szablonu GenAIOps i wskazówek, aby ułatwić tworzenie aplikacji z obsługą interfejsu LLM za pomocą przepływu monitów. Metodyka GenAIOps z przepływem monitów ma możliwości dla prostych lub złożonych aplikacji z obsługą funkcji LLM i jest dostosowywana do potrzeb aplikacji.
Usługa GenAIOps z platformą przepływu monitów udostępnia następujące funkcje:
Scentralizowane hostowanie kodu. Repozytorium obsługuje hostowanie kodu dla wielu przepływów monitów, zapewniając jedno repozytorium dla wszystkich przepływów. To repozytorium jest jak biblioteka przepływów, co ułatwia znajdowanie, uzyskiwanie dostępu i współpracę nad różnymi projektami.
Zarządzanie cyklem życia. Każdy przepływ ma własny cykl życia, zapewniając bezproblemowe przejście od eksperymentów lokalnych do wdrożenia produkcyjnego.
Eksperymentowanie wariantów i hiperparametrów. Warianty i hiperparametry są jak składniki w przepisie. Platforma umożliwia eksperymentowanie z różnymi kombinacjami wariantów w wielu węzłach w przepływie. Możesz eksperymentować z wieloma wariantami i hiperparametrami, aby łatwo ocenić warianty przepływu.
Wiele obiektów docelowych wdrożenia. Platforma generuje obrazy platformy Docker wzbogacone przepływem i sesją obliczeniową na potrzeby wdrożenia do dowolnej platformy docelowej i systemu operacyjnego obsługującego platformę Docker. Przepływy można wdrażać w usługach aplikacja systemu Azure Services, Kubernetes i Zarządzanych obliczeniach platformy Azure oraz konfigurować je do skalowania zgodnie z potrzebami.
Wdrożenie A/B. Metodyka GenAIOps z przepływem monitów bezproblemowo implementuje wdrożenia A/B, umożliwiając łatwe porównywanie różnych wersji przepływu. Ta platforma ułatwia wdrażanie A/B na potrzeby przepływu monitów w taki sam sposób, jak w tradycyjnej witrynie internetowej A/B testing. Możesz łatwo porównać różne wersje przepływu w rzeczywistym ustawieniu, aby określić, która wersja działa najlepiej.
Wiele do wielu zestawów danych do przepływu relacji. Funkcja GenAIOps z przepływem monitów obsługuje wiele zestawów danych dla każdego przepływu standardu i oceny, umożliwiając wszechstronność testowania i oceny przepływu.
Dane warunkowe i rejestracja modelu. Platforma rejestruje nową wersję zestawu danych dla zasobu danych usługi Azure Machine Learning i przepływów w rejestrze modeli tylko wtedy, gdy nastąpiła zmiana w zestawie danych.
Kompleksowe raportowanie. Metodyka GenAIOps z przepływem monitów generuje szczegółowe raporty dla każdej konfiguracji wariantu, umożliwiając podejmowanie świadomych decyzji. Platforma udostępnia szczegółowe zbieranie metryk, eksperymenty i przebiegi zbiorcze wariantów dla wszystkich przebiegów i eksperymentów, umożliwiając podejmowanie decyzji opartych na danych zarówno dla plików CSV, jak i HTML.
Funkcja GenAIOps z przepływem monitów udostępnia następujące inne funkcje dostosowywania:
- Funkcja Bring-your-own-flows (BYOF) udostępnia pełną platformę do tworzenia wielu przypadków użycia związanych z aplikacjami z wbudowanymi rozwiązaniami LLM.
- Programowanie oparte na konfiguracji oznacza, że nie ma potrzeby pisania obszernego kodu kociołowego.
- Monitowanie eksperymentowania i oceny jest wykonywane lokalnie i w chmurze.
- Notesy na potrzeby oceny monitów lokalnych udostępniają bibliotekę funkcji do eksperymentowania lokalnego.
- Testowanie punktu końcowego w potoku po wdrożeniu sprawdza dostępność i gotowość punktu końcowego.
- Opcjonalna pętla human-in-loop weryfikuje metryki monitu przed wdrożeniem.
Etapy GenAIOps
Cykl życia GenAIOps składa się z czterech odrębnych etapów:
Inicjowanie. Jasno zdefiniuj cel biznesowy, zbierz odpowiednie próbki danych, ustanów podstawową strukturę monitów i utwórz przepływ zwiększający jego możliwości.
Eksperymentowanie. Zastosuj przepływ do przykładowych danych, oceń wydajność monitu i dostosuj przepływ zgodnie z potrzebami. Stale iteruj, aż wyniki będą zadowalające.
Ocena i uściślenie. Przeprowadź test porównawczy wydajności przepływu przy użyciu większego zestawu danych, oceń skuteczność monitu i odpowiednio uściślij. Przejdź do następnego etapu, jeśli wyniki spełniają żądane standardy.
Wdrożenie. Zoptymalizuj przepływ pod kątem wydajności i skuteczności, wdróż go w środowisku produkcyjnym, w tym wdrożenie A/B, monitoruj jego wydajność, zbieraj opinie użytkowników i korzystaj z tych informacji, aby jeszcze bardziej ulepszyć przepływ.
Stosując się do tej metodologii ustrukturyzowanej, przepływ monitów umożliwia niezawodne opracowywanie, rygorystyczne testowanie, dostosowywanie i wdrażanie przepływów, co prowadzi do tworzenia niezawodnych i zaawansowanych aplikacji sztucznej inteligencji.
Szablon przepływu monitów GenAIOps sformalizuje tę metodologię ustrukturyzowaną przy użyciu podejścia opartego na kodzie i pomaga tworzyć aplikacje z obsługą przepływów llM przy użyciu narzędzi przepływu monitów i procesów oraz funkcji przepływu monitów GenAIOps. Ten szablon jest dostępny w witrynie GenAIOps z szablonem przepływu monitów.
Przepływ procesu GenAIOps
- Na etapie inicjowania tworzysz przepływy, przygotowujesz i curate dane oraz aktualizujesz powiązane pliki konfiguracji GenAIOps.
- Po utworzeniu lokalnego przy użyciu programu Visual Studio Code z rozszerzeniem Prompt Flow należy zgłosić żądanie ściągnięcia z gałęzi funkcji do gałęzi programowania, która wykonuje potok weryfikacji kompilacji i przepływy eksperymentowania.
- Żądanie ściągnięcia jest zatwierdzane ręcznie, a kod jest scalony z gałęzią programowania.
- Po scaleniu żądania ściągnięcia z gałęzią programowania potok ciągłej integracji (CI) dla środowiska deweloperskiego jest wykonywany. Potok ciągłej integracji wykonuje zarówno przepływy eksperymentowania, jak i oceny w sekwencji i rejestruje przepływy w rejestrze usługi Azure Machine Learning oprócz innych kroków w potoku.
- Po zakończeniu wykonywania potoku ciągłego wdrażania wyzwalacz ciągłego wdrażania wykonuje potok ciągłego wdrażania, który wdraża standardowy przepływ z usługi Azure Machine Learning Registry jako punkt końcowy online usługi Azure Machine Learning. Następnie potok uruchamia testy integracji i kompilacji w wdrożonym przepływie.
- Gałąź wydania jest tworzona z gałęzi programowania lub żądanie ściągnięcia jest wywoływane z gałęzi programowania do gałęzi wydania.
- Żądanie ściągnięcia jest zatwierdzane ręcznie, a kod jest scalony z gałęzią wydania. Po scaleniu żądania ściągnięcia z gałęzią wydania potok ciągłej integracji dla środowiska produkcyjnego zostanie wykonany. Potok wykonuje zarówno przepływy eksperymentowania, jak i oceny w sekwencji oraz rejestruje przepływy w usłudze Azure Machine Learning Registry poza innymi krokami w potoku.
- Po zakończeniu wykonywania potoku ciągłej integracji wyzwalacz ciągłego wdrażania wykonuje potok ciągłego wdrażania, który wdraża standardowy przepływ z usługi Azure Machine Learning Registry jako punkt końcowy online usługi Azure Machine Learning. Następnie potok uruchamia testy integracji i kompilacji w wdrożonym przepływie.
Tworzenie przepływu monitu genAIOps
W pozostałej części tego artykułu pokazano, jak używać metody GenAIOps z przepływem monitów, korzystając z kompleksowego przykładu w repozytorium szablonów przepływu monitów, które ułatwia tworzenie aplikacji z obsługą przepływów LLM przy użyciu przepływu monitów i usługi GitHub. Podstawowym celem jest zapewnienie pomocy w tworzeniu tych aplikacji przy użyciu możliwości przepływu monitów i metodyki GenAIOps.
Wymagania wstępne
- Subskrypcja platformy Azure z bezpłatną lub płatną wersją usługi Azure Machine Learning.
- Obszar roboczy usługi Azure Machine Learning.
- Usługa Git w wersji 2.27 lub nowszej działa na komputerze lokalnym z możliwością utworzenia repozytorium kontroli źródła w usłudze GitHub.
- Znajomość sposobu integrowania metody GenAIOps z przepływem monitów.
Konfigurowanie połączenia przepływu monitu
Przepływ monitowania używa zasobu połączenia do nawiązywania połączenia z punktami końcowymi usługi Azure OpenAI, OpenAI lub Azure AI Search. Połączenie można utworzyć za pomocą interfejsu użytkownika portalu przepływu monitów lub przy użyciu interfejsu API REST. Aby uzyskać więcej informacji, zobacz Połączenia w przepływie monitów.
Aby utworzyć połączenie, postępuj zgodnie z instrukcjami w temacie Konfigurowanie połączeń dla przepływu monitów. Przykładowe przepływy używają połączenia o nazwie aoai
, więc nadaj temu połączeniu nazwę.
Konfigurowanie sesji obliczeniowej
Przepływ monitu używa sesji obliczeniowej do wykonania przepływu. Utwórz i uruchom sesję obliczeniową przed wykonaniem przepływu monitu.
Konfigurowanie repozytorium GitHub
Aby utworzyć rozwidlenie repozytorium w organizacji usługi GitHub, postępuj zgodnie z instrukcjami w temacie Konfigurowanie repozytorium GitHub. To repozytorium używa dwóch gałęzi i main
development
, do promocji kodu i wykonywania potoku.
Aby utworzyć nowe repozytorium lokalne, postępuj zgodnie z instrukcjami w temacie Klonowanie repozytorium. Ten klon pomaga utworzyć nową gałąź funkcji z gałęzi programowania i uwzględnić zmiany.
Konfigurowanie uwierzytelniania między usługą GitHub i platformą Azure
Ten proces umożliwia skonfigurowanie wpisu tajnego usługi GitHub, który przechowuje informacje o jednostce usługi. Aby nawiązać automatyczne połączenie z platformą Azure, przepływy pracy w repozytorium mogą odczytywać informacje o połączeniu przy użyciu nazwy wpisu tajnego. Aby uzyskać więcej informacji, zobacz Używanie funkcji GitHub Actions do nawiązywania połączenia z platformą Azure.
- Utwórz jednostkę usługi, postępując zgodnie z instrukcjami w temacie Tworzenie jednostki usługi platformy Azure.
- Użyj jednostki usługi, aby skonfigurować uwierzytelnianie między repozytorium GitHub i usługami platformy Azure, postępując zgodnie z instrukcjami w temacie Konfigurowanie uwierzytelniania za pomocą platformy Azure i usługi GitHub.
Testowanie potoku
Aby przetestować potoki, postępuj zgodnie z instrukcjami w temacie Aktualizowanie danych testowych. Pełny proces obejmuje następujące kroki:
- Żądanie ściągnięcia jest wywoływane z gałęzi funkcji do gałęzi programowania.
- Potok żądania ściągnięcia jest wykonywany automatycznie z powodu konfiguracji zasad gałęzi.
- Żądanie ściągnięcia jest scalane z gałęzią programowania.
- Skojarzony
dev
potok jest wykonywany, co powoduje pełne wykonanie ciągłej integracji i ciągłego wdrażania oraz aprowizowanie lub aktualizowanie punktów końcowych usługi Azure Machine Learning.
Dane wyjściowe powinny wyglądać podobnie do przykładów w przykładowym scenariuszu uruchamiania, oceny i wdrażania.
Korzystanie z wykonywania lokalnego
Aby użyć funkcji wykonywania lokalnego, wykonaj następujące kroki.
Sklonuj repozytorium w następujący sposób:
git clone https://github.com/microsoft/genaiops-promptflow-template.git
Utwórz plik env na najwyższym poziomie folderu. Dodaj wiersze dla każdego połączenia, aktualizując wartości symboli zastępczych. Przykłady w przykładowym repozytorium używają połączenia AzureOpenAI o nazwie
aoai
i wersji2024-02-01
interfejsu API .aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"} <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
Przygotuj lokalne środowisko conda lub środowisko wirtualne, aby zainstalować zależności.
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
Wprowadzanie lub zapisywanie przepływów w szablonie na podstawie instrukcji w temacie Jak dołączyć nowe przepływy.
Napisz skrypty języka Python w folderze local_execution podobnym do podanych przykładów.