Metodyka LLMOps z przepływem monitów i usługą Azure DevOps

Duże operacje językowe ( LLMOps) stały się podstawą wydajnej inżynierii monitów i tworzenia i wdrażania aplikacji z wbudowanym modułem LLM. W miarę jak zapotrzebowanie na aplikacje z dodatkiem LLM nadal rośnie, organizacje potrzebują spójnych i usprawnionych procesów w celu zarządzania cyklem życia kompleksowego.

Usługa Azure Machine Edukacja umożliwia integrację z usługą Azure DevOps w celu zautomatyzowania cyklu życia tworzenia aplikacji z wbudowanym modułem LLM przy użyciu przepływu monitów.

Usługa Azure Machine Edukacja Prompt Flow zapewnia uproszczone i ustrukturyzowane podejście do tworzenia aplikacji z obsługą funkcji LLM. Jego dobrze zdefiniowany proces i cykl życia przeprowadzi Cię przez proces tworzenia, testowania, optymalizowania i wdrażania przepływów, co kończy się tworzeniem w pełni funkcjonalnych rozwiązań z wbudowanymi rozwiązaniami LLM.

Funkcje przepływu monitów LLMOps

Metodyka LLMOps z przepływem monitów to "szablon LLMOps i wskazówki", które ułatwiają tworzenie aplikacji z obsługą protokołu LLM przy użyciu przepływu monitu. Oferuje ono następujące funkcje:

  • Scentralizowane hostowanie kodu: to repozytorium obsługuje hostowanie kodu dla wielu przepływów na podstawie przepływu monitów, zapewniając jedno repozytorium dla wszystkich przepływów. Ta platforma jest jednym repozytorium, w którym znajduje się cały kod przepływu monitów. Jest to biblioteka przepływów, która ułatwia znajdowanie, uzyskiwanie dostępu i współpracę nad różnymi projektami.

  • Zarządzanie cyklem życia: każdy przepływ cieszy się własnym cyklem życia, co umożliwia płynne przejście z eksperymentów lokalnych do wdrożenia produkcyjnego. Screenshot of pipeline.

  • Wariant i eksperymentowanie hiperparametryczne: eksperymentuj z wieloma wariantami i hiperparametrami, łatwo oceniając warianty przepływu. Warianty i hiperparametry są jak składniki w przepisie. Ta platforma umożliwia eksperymentowanie z różnymi kombinacjami wariantów w wielu węzłach w przepływie.

  • Wiele celów wdrażania: repozytorium obsługuje wdrażanie przepływów w usługach aplikacja systemu Azure Services, Kubernetes, azure Managed computes sterowanych konfiguracją, zapewniając, że przepływy mogą być skalowane zgodnie z potrzebami. Generuje również obrazy platformy Docker z wbudowanym środowiskiem uruchomieniowym usługi Flow i przepływami na potrzeby wdrażania do dowolnej platformy docelowej i systemu operacyjnego obsługującego platformę Docker. Screenshot of endpoints.

  • Wdrożenie A/B: bezproblemowo implementuj wdrożenia A/B, umożliwiając łatwe porównywanie różnych wersji przepływu. Podobnie jak w przypadku tradycyjnego testowania A/B dla witryn internetowych ta platforma ułatwia wdrażanie A/B na potrzeby przepływu monitów. Oznacza to, że można bez wysiłku porównać różne wersje przepływu w rzeczywistym ustawieniu, aby określić, które działa najlepiej. Screenshot of deployments.

  • Relacje wiele-do-wielu zestawów danych/przepływu: uwzględnij wiele zestawów danych dla każdego przepływu standardowego i ewaluacyjnego, zapewniając wszechstronność testowania i oceny przepływu. Platforma została zaprojektowana tak, aby pomieścić wiele zestawów danych dla każdego przepływu.

  • Rejestracja danych warunkowych i modelu: platforma tworzy nową wersję zestawu danych w usłudze Azure Machine Edukacja zasób danych i przepływy w rejestrze modeli tylko wtedy, gdy nastąpiła w nich zmiana, a nie w przeciwnym razie.

  • Kompleksowe raportowanie: generowanie szczegółowych raportów dla każdej konfiguracji wariantu, co umożliwia podejmowanie świadomych decyzji. Zawiera szczegółowe przebiegi zbiorcze zbierania metryk, eksperymentów i wariantów dla wszystkich przebiegów i eksperymentów, co umożliwia podejmowanie decyzji opartych na danych w pliku CSV oraz plików HTML. Screenshot of flow variants report.Screenshot of metrics report.

Inne funkcje dostosowywania:

  • Oferuje rozwiązanie BYOF (bring-your-own-flows). Pełna platforma do tworzenia wielu przypadków użycia związanych z aplikacjami z obsługą funkcji LLM.

  • Oferuje programowanie oparte na konfiguracji. Nie trzeba pisać obszernego kodu płyty kotłowej.

  • Zapewnia wykonywanie zarówno eksperymentów monitów, jak i oceny lokalnie, jak również w chmurze.

  • Udostępnia notesy do lokalnej oceny monitów. Udostępnia bibliotekę funkcji do eksperymentowania lokalnego.

  • Testowanie punktów końcowych w potoku po wdrożeniu w celu sprawdzenia jego dostępności i gotowości.

  • Udostępnia opcjonalną pętlę human-in-loop, aby zweryfikować metryki monitu przed wdrożeniem.

Metodyka LLMOps z przepływem monitów zapewnia możliwości zarówno dla prostych, jak i złożonych aplikacji z wbudowanym modułem LLM. Jest ona całkowicie dostosowywalna do potrzeb aplikacji.

Etapy LLMOps

Cykl życia 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, który zwiększa 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 LLMOps formalizuje tę metodologię ustrukturyzowaną przy użyciu podejścia opartego na kodzie i ułatwia tworzenie aplikacji z obsługą przepływu monitów przy użyciu narzędzi i procesu odpowiedniego do monitowania przepływu. Oferuje szereg funkcji, w tym scentralizowane hostowanie kodu, zarządzanie cyklem życia, eksperymentowanie wariantów i hiperparametrów, wdrażanie A/B, raportowanie wszystkich przebiegów i eksperymentów i nie tylko.

Repozytorium dla tego artykułu jest dostępne na stronie LLMOps z szablonem przepływu monitu

Przepływ procesu LLMOps

Screenshot of LLMOps prompt flow process.

  1. Jest to etap inicjowania. W tym miejscu przepływy są opracowywane, dane są przygotowywane, a pliki konfiguracji powiązane z llMOps i llMOps są aktualizowane.
  2. Po utworzeniu lokalnego przy użyciu programu Visual Studio Code wraz z rozszerzeniem przepływu monitu żądanie ściągnięcia jest zgłaszane z gałęzi funkcji do gałęzi programowania. Spowoduje to wykonanie potoku weryfikacji kompilacji. Wykonuje również przepływy eksperymentowania.
  3. Żądanie ściągnięcia jest zatwierdzane ręcznie, a kod jest scalony z gałęzią programowania
  4. Po scaleniu żądania ściągnięcia z gałęzią programowania potok ciągłej integracji dla środowiska deweloperskiego jest wykonywany. Wykonuje on zarówno przepływy eksperymentowania, jak i oceny w sekwencji oraz rejestruje przepływy w usłudze Azure Machine Edukacja Registry poza innymi krokami w potoku.
  5. Po zakończeniu wykonywania potoku ciągłej integracji wyzwalacz ciągłego wdrażania zapewnia wykonanie potoku ciągłego wdrażania, który wdraża standardowy przepływ z usługi Azure Machine Edukacja Registry jako punkt końcowy usługi Azure Machine Edukacja online i wykonał testy integracji i kompilacji w wdrożonym przepływie.
  6. Gałąź wydania jest tworzona z gałęzi programowania lub żądanie ściągnięcia jest wywoływane z gałęzi programowania do gałęzi wydania.
  7. Żą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 prod jest wykonywany. Wykonuje on zarówno przepływy eksperymentowania, jak i oceny w sekwencji oraz rejestruje przepływy w usłudze Azure Machine Edukacja Registry poza innymi krokami w potoku.
  8. Po zakończeniu wykonywania potoku ciągłej integracji wyzwalacz ciągłego wdrażania zapewnia wykonanie potoku ciągłego wdrażania, który wdraża standardowy przepływ z usługi Azure Machine Edukacja Registry jako punkt końcowy usługi Azure Machine Edukacja online i wykonał testy integracji i kompilacji w wdrożonym przepływie.

W tym miejscu możesz nauczyć się metodyki LLMOps z przepływem monitów, postępując zgodnie z udostępnionymi przez nas przykładami, które ułatwiają tworzenie aplikacji z wbudowanym modułem LLM przy użyciu przepływu monitów i usługi Azure DevOps. Jego głównym celem jest zapewnienie pomocy w tworzeniu takich aplikacji, wykorzystując możliwości przepływu monitów i LLMOps.

Napiwek

Zalecamy zapoznanie się z integracją metody LLMOps z przepływem monitów.

Ważne

Przepływ monitów jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie jest zalecana w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Wymagania wstępne

  • Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Edukacja.
  • Obszar roboczy usługi Azure Machine Learning.
  • Usługa Git uruchomiona na komputerze lokalnym.
  • Organizacja w usłudze Azure DevOps. Organizacja w usłudze Azure DevOps ułatwia współpracę, planowanie i śledzenie błędów pracy i kodu oraz konfigurowanie ciągłej integracji i wdrażania.
  • Rozszerzenie Terraform dla usługi Azure DevOps, jeśli używasz usługi Azure DevOps i narzędzia Terraform do uruchamiania infrastruktury

Uwaga

Wymagana jest usługa Git w wersji 2.27 lub nowszej. Aby uzyskać więcej informacji na temat instalowania polecenia Git, zobacz https://git-scm.com/downloads i wybierz system operacyjny

Ważne

Polecenia interfejsu wiersza polecenia w tym artykule zostały przetestowane przy użyciu powłoki Bash. Jeśli używasz innej powłoki, mogą wystąpić błędy.

Konfigurowanie przepływu monitów

Przepływ monitowania używa zasobu połączeń do nawiązywania połączenia z punktami końcowymi, takimi jak Azure OpenAI, OpenAI lub Azure AI Search i używa środowiska uruchomieniowego do wykonywania przepływów. Te zasoby należy utworzyć przed wykonaniem przepływów w przepływie monitu.

Konfigurowanie połączeń dla przepływu monitów

Połączenie ions można utworzyć za pomocą interfejsu użytkownika portalu przepływu monitów lub interfejsu API REST. Postępuj zgodnie z wytycznymi, aby utworzyć połączenia dla przepływu monitów.

Kliknij link, aby dowiedzieć się więcej o połączeniach.

Uwaga

Przykładowe przepływy używają połączenia "aoai" i należy utworzyć połączenie o nazwie "aoai" w celu ich wykonania.

Konfigurowanie środowiska obliczeniowego i środowiska uruchomieniowego na potrzeby przepływu monitów

Środowisko uruchomieniowe można utworzyć za pomocą interfejsu użytkownika portalu przepływu monitów lub interfejsu API REST. Postępuj zgodnie z wytycznymi, aby skonfigurować środowisko obliczeniowe i środowisko uruchomieniowe na potrzeby przepływu monitów.

Kliknij link, aby dowiedzieć się więcej o środowisku uruchomieniowym.

Uwaga

Ta sama nazwa środowiska uruchomieniowego powinna być używana w pliku LLMOps_config.json wyjaśnionej później.

Konfigurowanie jednostki usługi platformy Azure

Jednostka usługi platformy Azure to tożsamość zabezpieczeń używana przez aplikacje, usługi i narzędzia automatyzacji do uzyskiwania dostępu do zasobów platformy Azure. Reprezentuje aplikację lub usługę, która musi uwierzytelniać się za pomocą platformy Azure i uzyskiwać dostęp do zasobów w Twoim imieniu. Postępuj zgodnie z wytycznymi, aby utworzyć jednostkę usługi na platformie Azure.

Ta jednostka usługi jest później używana do konfigurowania połączenia usługi Azure DevOps i usługi Azure DevOps w celu uwierzytelniania i nawiązywania połączenia z usługami platformy Azure. Zadania wykonywane w przepływie monitów dla obu experiment and evaluation runs znajdują się pod tożsamością tej jednostki usługi. Ponadto zarówno element , jak compute i runtime są tworzone przy użyciu tej samej jednostki usługi.

Napiwek

Konfiguracja zapewnia owner uprawnienia do jednostki usługi.

  • Dzieje się tak, ponieważ potok ciągłego wdrażania automatycznie zapewnia dostęp do nowo aprowizowanego punktu końcowego usługi Azure Machine Edukacja do obszaru roboczego usługi Azure Machine Edukacja w celu odczytywania informacji o połączeniach.
  • Dodaje ją również do usługi Azure Machine Edukacja Obszaru roboczego skojarzonego z zasadami magazynu kluczy z uprawnieniami i list wpisami tajnymiget.

Uprawnienie właściciela można zmienić na contributor uprawnienia na poziomie, zmieniając kod YAML potoku i usuwając krok związany z uprawnieniami.

Konfigurowanie usług Azure DevOps

Istnieje wiele kroków, które należy wykonać w celu skonfigurowania procesu LLMOps przy użyciu usługi Azure DevOps.

Tworzenie nowego projektu usługi Azure DevOps

Postępuj zgodnie z wytycznymi, aby utworzyć nowy projekt usługi Azure DevOps przy użyciu interfejsu użytkownika usługi Azure DevOps.

Konfigurowanie uwierzytelniania między usługą Azure DevOps i platformą Azure

Postępuj zgodnie z wytycznymi, aby użyć wcześniej utworzonej jednostki usługi i skonfigurować uwierzytelnianie między usługami Azure DevOps i Azure.

Ten krok umożliwia skonfigurowanie nowej Połączenie usługi Azure DevOps Service, która przechowuje informacje o jednostce usługi. Potoki w projekcie mogą odczytywać informacje o połączeniu przy użyciu nazwy połączenia. Ułatwia to skonfigurowanie kroków potoku usługi Azure DevOps w celu automatycznego nawiązywania połączenia z platformą Azure.

Tworzenie grupy zmiennych usługi Azure DevOps

Postępuj zgodnie z wytycznymi, aby utworzyć nową grupę zmiennych i dodać zmienną powiązaną z usługą Azure DevOps Service Połączenie ion.

Nazwa główna usługi jest dostępna automatycznie jako zmienna środowiskowa potoków.

Konfigurowanie repozytorium i potoków usługi Azure DevOps

To repozytorium używa dwóch gałęzi — main i development do promocji kodu i wykonywania potoków zamiast zmian w kodzie w nich. Postępuj zgodnie z wytycznymi, aby skonfigurować własne repozytorium lokalne, a także repozytorium zdalne, aby używać kodu z tego repozytorium.

Kroki obejmują klonowanie repozytorium main i development branches z repozytorium oraz kojarzenie kodu w celu odwoływania się do nowego repozytorium usługi Azure DevOps. Oprócz migracji kodu potoki — zarówno żądania ściągnięcia, jak i potoki deweloperskie są konfigurowane tak, aby były wykonywane automatycznie na podstawie wyzwalaczy tworzenia i scalania żądań ściągnięcia.

Zasady gałęzi dla gałęzi programowania powinny być również skonfigurowane do wykonywania potoku żądania ściągnięcia dla dowolnego żądania ściągnięcia zgłoszonego w gałęzi programowania z gałęzi funkcji. Potok "dev" jest wykonywany po scaleniu żądania ściągnięcia z gałęzią programowania. Potok "dev" składa się zarówno z faz ciągłej integracji, jak i ciągłego wdrażania.

W pętli zaimplementowano również człowieka w potokach. Po wykonaniu fazy ciągłej integracji w dev potoku faza ciągłej integracji następuje po ręcznym zatwierdzeniu. Zatwierdzenie powinno nastąpić z poziomu interfejsu użytkownika wykonywania kompilacji potoku usługi Azure DevOps. Domyślny limit czasu wynosi 60 minut, po którym potok zostanie odrzucony, a faza ciągłego wdrażania nie zostanie wykonana. Ręczne zatwierdzanie wykonania spowoduje wykonanie kroków ciągłego wdrażania potoku. Zatwierdzenie ręczne jest skonfigurowane do wysyłania powiadomień do "replace@youremail.com". Powinien zostać zastąpiony odpowiednim identyfikatorem poczty e-mail.

Testowanie potoków

Postępuj zgodnie z wytycznymi wymienionymi na stronie, aby przetestować potoki.

Kroki to:

  1. Zgłoś żądanie ściągnięcia (żądanie ściągnięcia) z gałęzi funkcji do gałęzi programowania.
  2. Potok żądania ściągnięcia powinien być wykonywany automatycznie w wyniku konfiguracji zasad gałęzi.
  3. Żądanie ściągnięcia jest następnie scalane z gałęzią programowania.
  4. Zostanie wykonany skojarzony potok "dev". Spowoduje to pełne wykonanie ciągłej integracji i ciągłego wdrażania oraz aprowizowanie lub aktualizowanie istniejących punktów końcowych usługi Azure Machine Edukacja.

Dane wyjściowe testu powinny być podobne do tych pokazanych tutaj.

Wykonywanie lokalne

Aby wykorzystać możliwości lokalnego wykonywania, wykonaj następujące kroki instalacji:

  1. Sklonuj repozytorium: zacznij od sklonowania repozytorium szablonu z repozytorium GitHub.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. Skonfiguruj plik env: utwórz plik env na najwyższym poziomie folderu i podaj informacje o wymienionych elementach. Dodaj dowolną liczbę nazw połączeń. Wszystkie przykłady przepływu w tym repozytorium używają połączenia AzureOpenAI o nazwie aoai. Dodaj wiersz aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"} ze zaktualizowanymi wartościami dla api_key i api_base. Jeśli w przepływach są używane dodatkowe połączenia z różnymi nazwami, należy je odpowiednio dodać. Obecnie przepływ za pomocą interfejsu AzureOpenAI jako dostawcy jako obsługiwanego.

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. 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

  1. Tutaj przeprowadź lub zapisz przepływy w szablonie na podstawie dokumentacji.

  2. Napisz skrypty języka Python podobne do podanych przykładów w folderze local_execution.

Następne kroki