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

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ą GitHub w celu zautomatyzowania cyklu życia tworzenia aplikacji w ramach programu LLM z monitem.

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.

Dzięki przestrzeganiu tej metodologii ustrukturyzowanej usługa Prompt Flow umożliwia niezawodne opracowywanie, rygorystyczne testowanie, dostosowywanie i wdrażanie przepływów, co prowadzi do tworzenia niezawodnych i zaawansowanych aplikacji sztucznej inteligencji.

Szablon LLMOps Prompt Flow sformalizuje tę metodologię ustrukturyzowaną przy użyciu podejścia opartego na kodzie i pomaga tworzyć aplikacje z obsługą przepływów llM za pomocą usługi Prompt Flow przy użyciu narzędzi i procesów związanych z przepływem monitów. 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 Prompt Flow żą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 obsługą protokołu LLM przy użyciu przepływu monitów i usługi GitHub. 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.
  • Usługa GitHub jako repozytorium kontroli źródła.

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

Usługa Prompt Flow używa zasobu połączeń do łączenia się 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 monitowania.

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 repozytorium GitHub

Istnieje wiele kroków, które należy wykonać w celu skonfigurowania procesu LLMOps przy użyciu repozytorium GitHub.

Rozwidlenie i konfigurowanie repozytorium

Postępuj zgodnie z wytycznymi, aby utworzyć rozwidlenie repozytorium w organizacji usługi GitHub. To repozytorium używa dwóch gałęzi — main i development do promocji kodu i wykonywania potoków zamiast zmian w kodzie w nich.

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

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

Ten krok umożliwia skonfigurowanie wpisu tajnego usługi GitHub, który przechowuje informacje o jednostce usługi. Przepływy pracy w repozytorium mogą odczytywać informacje o połączeniu przy użyciu nazwy wpisu tajnego. Ułatwia to skonfigurowanie kroków przepływu pracy usługi GitHub w celu automatycznego nawiązywania połączenia z platformą Azure.

Klonowanie repozytorium

Postępuj zgodnie z wytycznymi, aby utworzyć nowe repozytorium lokalne.

Pomoże nam to utworzyć nową gałąź funkcji z gałęzi programowania i wprowadzić zmiany.

Testowanie potoków

Postępuj zgodnie z wytycznymi, aby przetestować potoki. Kroki są następujące:

  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