Skalowanie usługi Azure OpenAI dla języka Python przy użyciu usługi Azure API Management
Dowiedz się, jak dodać równoważenie obciążenia klasy korporacyjnej do aplikacji, aby rozszerzyć aplikację czatu poza limity przydziału tokenu usługi Azure OpenAI i modelu. To podejście używa usługi Azure API Management do inteligentnego kierowania ruchem między trzema zasobami usługi Azure OpenAI.
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.
Moduł równoważenia obciążenia za pomocą usługi Azure API Management
Uwaga
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 API Management
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 API Management. To rozwiązanie bezproblemowo uwidacznia pojedynczy punkt końcowy z usługi Azure API Management do serwera aplikacji czatu.
Zasób usługi Azure API Management, jako warstwa interfejsu API, znajduje się przed zestawem zasobów usługi Azure OpenAI. Warstwa interfejsu API ma zastosowanie do dwóch scenariuszy: normalny i ograniczony. W normalnym scenariuszu, w którym jest dostępny limit przydziału tokenu i modelu, zasób usługi Azure OpenAI zwraca 200 z powrotem za pośrednictwem warstwy interfejsu API i serwera aplikacji zaplecza.
Gdy zasób jest ograniczany z powodu limitów przydziału, warstwa interfejsu API może natychmiast ponowić próbę użycia innego zasobu usługi Azure OpenAI w celu spełnienia oryginalnego żądania aplikacji czatu.
Wymagania wstępne
Subskrypcja platformy Azure. Utwórz bezpłatnie
Dostęp jest udzielany 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 z wszystkimi zależnościami wymaganymi 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.
Otwórz przykładową aplikację lokalnego równoważenia obciążenia usługi Azure API Management
Usługa GitHub Codespaces uruchamia kontener deweloperski zarządzany przez usługę GitHub za pomocą programu Visual Studio Code dla sieci 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żne
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 GitHub Codespaces monthly included storage and core hours (Miesięczne miejsca do magazynowania i godzin rdzeni usługi GitHub Codespaces).
Wdrażanie modułu równoważenia obciążenia usługi Azure API Management
Aby wdrożyć moduł równoważenia obciążenia na platformie Azure, zaloguj się do interfejsu wiersza polecenia dla deweloperów platformy Azure (AZD).
azd auth login
Zakończ instrukcje logowania.
Wdróż aplikację modułu równoważenia obciążenia.
azd up
Musisz wybrać subskrypcję i region wdrożenia. Nie muszą one być tą samą subskrypcją i regionem co aplikacja do czatu.
Przed kontynuowaniem zaczekaj na ukończenie wdrażania. Może to potrwać do 30 minut.
Uzyskiwanie punktu końcowego modułu równoważenia obciążenia
Uruchom następujące polecenie powłoki bash, aby wyświetlić zmienne środowiskowe z wdrożenia. Te informacje będą potrzebne później.
azd env get-values | grep APIM_GATEWAY_URL
Ponowne wdrażanie aplikacji czatu za pomocą punktu końcowego modułu równoważenia obciążenia
Zostały one ukończone w przykładzie aplikacji do czatu.
Otwórz przykładowy kontener deweloperski aplikacji czatu, korzystając z jednej z następujących opcji.
Język Środowiska codespace Visual Studio Code .NET JavaScript Python Zaloguj się do interfejsu wiersza polecenia dla deweloperów platformy Azure (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ą, która informuje zaplecze aplikacji Czat o tym, jaka jest wartość niestandardowego adresu URL żądania OpenAI.
azd env set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
Wdróż aplikację do czatu.
azd up
Konfigurowanie tokenów na minutę przydziału (TPM)
Domyślnie każdy z wystąpień interfejsu OpenAI w module równoważenia obciążenia zostanie wdrożony z 30 000 modułów TPM (tokenów na minutę). Możesz użyć aplikacji czatu z ufnością, że została utworzona w celu skalowania wielu użytkowników bez wyczerpania limitu przydziału. Zmień tę wartość, gdy:
- Występują błędy pojemności wdrożenia: niższa ta wartość.
- Planowanie większej pojemności, podnieś 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 aplikacji czatu, aby wyczyścić te zasoby.
Czyszczenie zasobów modułu równoważenia obciążenia
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
: Usunięcie odbywa się w trybie dyskretnym bez konieczności wyrażania zgody użytkownika.
Czyszczenie usługi GitHub Codespaces
Usunięcie środowiska Usługi GitHub Codespaces gwarantuje, że możesz zmaksymalizować ilość bezpłatnych godzin na godziny korzystania z konta.
Ważne
Aby uzyskać więcej informacji na temat uprawnień konta usługi GitHub, zobacz Artykuł GitHub Codespaces monthly included storage and core hours (Miesięczne miejsca do magazynowania i godzin rdzeni w usłudze GitHub).
Zaloguj się do pulpitu nawigacyjnego usługi GitHub Codespaces (https://github.com/codespaces).
Znajdź aktualnie uruchomione środowisko Codespaces pochodzące z
azure-samples/openai-apim-lb
repozytorium GitHub.Otwórz menu kontekstowe dla elementu Codespaces, a następnie wybierz pozycję Usuń.
Uzyskaj pomoc
Jeśli masz problemy z wdrożeniem modułu równoważenia obciążenia usługi Azure API Management, zaloguj się do problemów z repozytorium.
Przykładowy kod
Przykłady używane w tym artykule obejmują:
- Aplikacja do czatu w języku Python z aplikacją RAG
- Usługa Load Balancer z usługą Azure API Management
Następny krok
- Wyświetlanie danych diagnostycznych usługi Azure API Management w usłudze Azure Monitor
- Testowanie obciążenia platformy Azure do testowania obciążenia aplikacji czatu za pomocą polecenia