Skalowanie usługi Azure OpenAI na potrzeby czatu w języku Python przy użyciu rozwiązania RAG z usługą Azure Container Apps
Dowiedz się, jak dodać równoważenie obciążenia do aplikacji, aby rozszerzyć funkcjonalność aplikacji czatu poza limity przydziału tokenów usługi Azure OpenAI i modelu. To podejście używa usługi Azure Container Apps do tworzenia trzech punktów końcowych usługi Azure OpenAI, a także podstawowego kontenera do kierowania ruchu przychodzącego do jednego z trzech punktów końcowych.
Ten artykuł wymaga wdrożenia dwóch oddzielnych przykładów:
Aplikacja do czatu
Jeśli aplikacja czatu nie została jeszcze wdrożona, poczekaj na wdrożenie przykładu modułu równoważenia obciążenia.
Jeśli aplikacja czatu została już wdrożona raz, zmienisz zmienną środowiskową tak, aby obsługiwała niestandardowy punkt końcowy dla modułu równoważenia obciążenia i ponownie ją wdrożysz.
Aplikacja do czatu dostępna w następujących językach:
- .NET
- JavaScript
- Python
Aplikacja modułu równoważenia obciążenia
Notatka
W tym artykule użyto co najmniej jednego szablonu aplikacji sztucznej inteligencji jako podstawy przykładów i wskazówek w artykule. Szablony aplikacji sztucznej inteligencji zapewniają dobrze utrzymywane, łatwe w wdrażaniu implementacje referencyjne, które pomagają zapewnić wysokiej jakości punkt wyjścia dla aplikacji sztucznej inteligencji.
Architektura równoważenia obciążenia usługi Azure OpenAI za pomocą usługi Azure Container Apps
Ponieważ zasób usługi Azure OpenAI ma określone limity przydziału tokenu i modelu, aplikacja czatu korzystająca z jednego zasobu usługi Azure OpenAI jest podatna na błędy konwersacji z powodu tych limitów.
Aby użyć aplikacji do czatu bez osiągnięcia tych limitów, użyj rozwiązania o zrównoważonym obciążeniu w usłudze Azure Container Apps. To rozwiązanie bezproblemowo uwidacznia pojedynczy punkt końcowy z usługi Azure Container Apps na serwerze aplikacji czatu.
Aplikacja Azure Container znajduje się przed zestawem zasobów usługi Azure OpenAI. Aplikacja Kontenerowa rozwiązuje dwa scenariusze: normalny i ograniczony. W normalnym scenariuszu, w którym jest dostępny limit przydziału tokenu i modelu, zasób Azure OpenAI zwraca 200 poprzez aplikację kontenera i serwer aplikacji.
Gdy zasób znajduje się w scenariuszu ograniczonym, takim jak z powodu limitów przydziału, aplikacja kontenera platformy Azure może natychmiast ponowić próbę innego zasobu usługi Azure OpenAI, aby spełnić oryginalne żądanie aplikacji czatu.
Warunki wstępne
Subskrypcja platformy Azure. Utwórz konto bezpłatnie
Dostęp udzielony usłudze Azure OpenAI w żądanej subskrypcji platformy Azure.
Obecnie dostęp do tej usługi jest udzielany tylko przez aplikację. Możesz ubiegać się o dostęp do usługi Azure OpenAI, wypełniając formularz pod adresem https://aka.ms/oai/access.
Kontenery deweloperskie są dostępne dla obu przykładów, ze wszystkimi zależnościami potrzebnymi do ukończenia tego artykułu. Kontenery deweloperskie można uruchamiać w usłudze GitHub Codespaces (w przeglądarce) lub lokalnie przy użyciu programu Visual Studio Code.
- Codespaces (zalecane)
- programu Visual Studio Code
- Konto usługi GitHub
Uruchom przykładową aplikację Container Apps do lokalnego równoważenia obciążenia.
- Codespaces (zalecane)
- programu Visual Studio Code
GitHub Codespaces uruchamia kontener deweloperski zarządzany przez GitHub przy użyciu Visual Studio Code dla Web jako interfejsu użytkownika. W przypadku najprostszego środowiska programistycznego użyj usługi GitHub Codespaces, aby wstępnie zainstalować odpowiednie narzędzia deweloperskie i zależności, aby ukończyć ten artykuł.
Ważny
Wszystkie konta usługi GitHub mogą korzystać z usługi Codespaces przez maksymalnie 60 godzin bezpłatnych każdego miesiąca z 2 podstawowymi wystąpieniami. Aby uzyskać więcej informacji, zobacz miesięczne limity dla magazynu i godzin rdzeni w usłudze GitHub Codespaces.
Wdrażanie modułu równoważenia obciążenia usługi Azure Container Apps
Zaloguj się do CLI dewelopera platformy Azure, aby zapewnić uwierzytelnienie dla kroków aprowizacji i wdrażania.
azd auth login --use-device-code
Ustaw zmienną środowiskową, aby używać uwierzytelniania Azure CLI w kroku po dostarczeniu.
azd config set auth.useAzCliAuth "true"
Wdróż aplikację modułu równoważenia obciążenia.
azd up
Musisz wybrać subskrypcję i region wdrożenia. Nie musi to być ta sama subskrypcja i ten sam obszar co aplikacja do czatu.
Przed kontynuowaniem poczekaj na zakończenie wdrożenia.
Pobierz punkt końcowy wdrożenia
Użyj następującego polecenia, aby wyświetlić wdrożony punkt końcowy dla aplikacji kontenera platformy Azure.
azd env get-values
Skopiuj wartość
CONTAINER_APP_URL
. Użyjesz tego w następnej sekcji.
Ponowne wdrażanie aplikacji czatu za pomocą punktu końcowego modułu równoważenia obciążenia
Zostały one ukończone w wersji testowej aplikacji do czatu.
Otwórz przykładowy kontener deweloperski aplikacji czatu, korzystając z jednej z następujących opcji.
Język Codespaces Visual Studio Code .NET JavaScript Pyton Zaloguj się do Azure Developer CLI (AZD).
azd auth login
Zakończ instrukcje logowania.
Utwórz środowisko AZD o nazwie takiej jak
chat-app
.azd env new <name>
Dodaj następującą zmienną środowiskową, która informuje zaplecze aplikacji Czat o użyciu niestandardowego adresu URL dla żądań OpenAI.
azd env set OPENAI_HOST azure_custom
Dodaj następującą zmienną środowiskową, zastępując
<CONTAINER_APP_URL>
adresem URL z poprzedniej sekcji. Ta akcja informuje zaplecze aplikacji Czat o tym, jaka jest wartość niestandardowego adresu URL żądania OpenAI.azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
Wdróż aplikację do czatu.
azd up
Teraz możesz używać aplikacji do czatu z pewnością, że została utworzona do skalowania dla wielu użytkowników bez wyczerpania limitu.
Przeglądanie logów, aby zobaczyć wyniki równoważenia obciążenia
W witrynie Azure Portalwyszukaj grupę zasobów.
Z listy zasobów w grupie wybierz zasób aplikacji kontenerowej.
Wybierz monitorowanie - strumień dziennika>, aby wyświetlić dziennik.
Użyj aplikacji do czatu, aby wygenerować ruch w dzienniku.
Poszukaj dzienników, które odwołują się do zasobów usługi Azure OpenAI. Każdy z trzech zasobów ma swoją tożsamość liczbową w komentarzu dziennika rozpoczynającym się od
Proxying to https://openai3
, gdzie3
wskazuje trzeci zasób usługi Azure OpenAI.Podczas korzystania z aplikacji do czatu, gdy moduł równoważenia obciążenia otrzymuje informację o przekroczeniu kwoty, automatycznie przełącza się na inny zasób.
Konfiguracja limitu TPM
Domyślnie każde wystąpienie usługi Azure OpenAI w module równoważenia obciążenia jest wdrażane z pojemnością 30 000 tokenów na minutę (TPM). Możesz używać aplikacji czatu z ufnością, że została zaprojektowana do obsługi wielu użytkowników bez wyczerpania limitu przydziału. Zmień tę wartość, gdy:
- Pojawiają się błędy związane z pojemnością wdrożenia: zmniejsz wartość.
- Potrzebujesz większej pojemności: zwiększ wartość.
Użyj następującego polecenia, aby zmienić wartość:
azd env set OPENAI_CAPACITY 50
Ponownie wdróż moduł równoważenia obciążenia:
azd up
Czyszczenie zasobów
Gdy skończysz z aplikacją czatu i modułem równoważenia obciążenia, wyczyść zasoby. Zasoby platformy Azure utworzone w tym artykule są rozliczane z subskrypcją platformy Azure. Jeśli nie spodziewasz się, że te zasoby będą potrzebne w przyszłości, usuń je, aby uniknąć naliczania dodatkowych opłat.
Czyszczenie zasobów aplikacji do czatu
Wróć do artykułu o aplikacji czatu, aby wyczyścić te zasoby.
- .NET
- JavaScript
- Python
Czyszczenie zasobów równoważnika przesyłania danych
Uruchom następujące polecenie interfejsu wiersza polecenia dla deweloperów platformy Azure, aby usunąć zasoby platformy Azure i usunąć kod źródłowy:
azd down --purge --force
Przełączniki zapewniają:
-
purge
: usunięte zasoby są natychmiast czyszczone. Umożliwia to ponowne użycie modułu TPM usługi Azure OpenAI. -
force
: usuwanie odbywa się dyskretnie bez konieczności wyrażania zgody użytkownika.
Czyszczenie usługi GitHub Codespaces
- GitHub Codespaces
- programu Visual Studio Code
Usunięcie środowiska Usługi GitHub Codespaces gwarantuje, że możesz zmaksymalizować ilość bezpłatnych godzin na godziny korzystania z konta.
Ważny
Aby uzyskać więcej informacji na temat uprawnień konta GitHub, zobacz miesięczne limity magazynowania i godziny rdzeni zawarte w usłudze GitHub Codespaces.
Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces (https://github.com/codespaces).
Znajdź aktualnie uruchomione usługi Codespaces pochodzące z repozytorium
azure-samples/openai-aca-lb
GitHub.Otwórz menu kontekstowe dla przestrzeni kodu, a następnie wybierz pozycję Usuń.
Uzyskiwanie pomocy
Jeśli masz problemy z wdrożeniem modułu równoważenia obciążenia usługi Azure API Management, zgłoś swój problem w sekcji Issues repozytorium.
Przykładowy kod
Przykłady używane w tym artykule obejmują:
Następny krok
- Użyj Azure Load Testing do testowania obciążeniowego swojej aplikacji czatu.