Wprowadzenie do korzystania z aprowizowania wdrożeń w usłudze Azure OpenAI

Poniższy przewodnik przeprowadzi Cię przez proces konfigurowania aprowizowanego wdrożenia za pomocą zasobu usługi Azure OpenAI Service.

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Dostęp udzielony usłudze Azure OpenAI w żądanej subskrypcji platformy Azure. Obecnie dostęp do tej usługi odbywa się za pomocą aplikacji. Możesz ubiegać się o dostęp do usługi Azure OpenAI Service, wypełniając formularz pod adresem https://aka.ms/oai/access.
  • Uzyskano limit przydziału dla aprowizowanego wdrożenia i zakupiono zobowiązanie.

Uwaga

Aprowizowanie jednostek przepływności (PTU) różni się od standardowego limitu przydziału w usłudze Azure OpenAI i nie jest domyślnie dostępne. Aby dowiedzieć się więcej o tej ofercie, skontaktuj się z zespołem ds. kont Microsoft.

Tworzenie aprowizowanego wdrożenia

Po zakupie zobowiązania dotyczącego limitu przydziału możesz utworzyć wdrożenie. Aby utworzyć aprowizowane wdrożenie, możesz wykonać następujące kroki: opisane opcje odzwierciedlają wpisy wyświetlane na zrzucie ekranu.

Screenshot of the Azure OpenAI Studio deployment page for a provisioned deployment.

  1. Zaloguj się do programu Azure OpenAI Studio
  2. Wybierz subskrypcję, która została włączona dla wdrożeń aprowizowanych i wybierz żądany zasób w regionie, w którym masz przydział.
  3. W obszarze Zarządzanie w okienku nawigacji po lewej stronie wybierz pozycję Wdrożenia.
  4. Wybierz pozycję Utwórz nowe wdrożenie i skonfiguruj następujące pola. Rozwiń listę rozwijaną "Opcje zaawansowane".
  5. Wypełnij wartości w każdym polu. Oto przykład:
Pole opis Przykład
Wybieranie modelu Wybierz konkretny model, który chcesz wdrożyć. GPT-4
Wersja modelu Wybierz wersję modelu do wdrożenia. 0613
Nazwa wdrożenia Nazwa wdrożenia jest używana w kodzie do wywoływania modelu przy użyciu bibliotek klienckich i interfejsów API REST. gpt-4
Filtr zawartości Określ zasady filtrowania, które mają być stosowane do wdrożenia. Dowiedz się więcej na temat instrukcji filtrowania zawartości. Wartość domyślna
Typ wdrożenia programu Ma to wpływ na przepływność i wydajność. Wybierz pozycję Aprowizacja zarządzana dla aprowizowania wdrożenia Aprowizacja zarządzana
Aprowizowanie jednostek przepływności Wybierz ilość przepływności, którą chcesz uwzględnić we wdrożeniu. 100

Jeśli chcesz programowo utworzyć wdrożenie, możesz to zrobić za pomocą następującego polecenia interfejsu wiersza polecenia platformy Azure. Zaktualizuj element sku-capacity za pomocą żądanej liczby aprowizowanych jednostek przepływności.

az cognitiveservices account deployment create \
--name <myResourceName> \
--resource-group <myResourceGroupName> \
--deployment-name MyModel \
--model-name GPT-4 \
--model-version 0613  \
--model-format OpenAI \
--sku-capacity 100 \
--sku-name ProvisionedManaged

Interfejs REST, szablon usługi ARM, Bicep i narzędzie Terraform mogą również służyć do tworzenia wdrożeń. Zobacz sekcję dotyczącą automatyzowania wdrożeń w przewodniku z instrukcjami dotyczącymi zarządzania limitami przydziału i zastąp element sku.name "ProvisionedManaged", a nie "Standard".

Nawiązywanie pierwszych wywołań

Kod wnioskowania dla aprowizowania wdrożeń jest taki sam jak standardowy typ wdrożenia. Poniższy fragment kodu przedstawia wywołanie uzupełniania czatu do modelu GPT-4. Podczas pierwszego korzystania z tych modeli programowo zalecamy rozpoczęcie pracy z naszym przewodnikiem Szybki start. Naszym zaleceniem jest użycie biblioteki OpenAI w wersji 1.0 lub nowszej, ponieważ obejmuje to logikę ponawiania prób w bibliotece.

    #Note: The openai-python library support for Azure OpenAI is in preview. 
    import os
    from openai import AzureOpenAI

    client = AzureOpenAI(
        azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
        api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
        api_version="2024-02-01"
    )

    response = client.chat.completions.create(
        model="gpt-4", # model = "deployment_name".
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
            {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
            {"role": "user", "content": "Do other Azure AI services support this too?"}
        ]
    )

    print(response.choices[0].message.content)

Ważne

W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.

Opis oczekiwanej przepływności

Ilość przepływności, którą można osiągnąć w punkcie końcowym, jest czynnikiem liczby wdrożonych jednostek PTU, rozmiaru danych wejściowych, rozmiaru danych wyjściowych i szybkości wywołań. Liczba współbieżnych wywołań i łączna liczba przetworzonych tokenów może się różnić w zależności od tych wartości. Zalecanym sposobem określania przepływności wdrożenia jest następujące:

  1. Użyj kalkulatora pojemności w celu oszacowania rozmiaru. Kalkulator pojemności można znaleźć w narzędziu Azure OpenAI Studio na stronie limitów przydziału i karcie Aprowizowanie.
  2. Przeprowadź test porównawczy obciążenia przy użyciu obciążenia ruchu rzeczywistego. Aby uzyskać więcej informacji na temat testów porównawczych, zobacz sekcję dotyczącą testów porównawczych .

Mierzenie wykorzystania wdrożenia

Podczas wdrażania określonej liczby aprowizowanych jednostek przepływności (PTU) dla tego punktu końcowego jest udostępniana określona przepływność wnioskowania. Wykorzystanie tej przepływności jest złożoną formułą opartą na modelu, szybkości wywołania wersji modelu, rozmiarze monitu, rozmiarze generowania. Aby uprościć to obliczenie, udostępniamy metrykę wykorzystania w usłudze Azure Monitor. Wdrożenie zwraca wartość 429 dla nowych wywołań po wzroście wykorzystania powyżej 100%. Aprowizowane wykorzystanie jest definiowane w następujący sposób:

Wykorzystanie wdrożenia PTU = (jednostki PTU używane w okresie) / (jednostki PTU wdrożone w okresie)

Miarę wykorzystania można znaleźć w sekcji Azure-Monitor dla zasobu. Aby uzyskać dostęp do logowania się do https://portal.azure.compulpitów nawigacyjnych monitorowania, przejdź do zasobu usługi Azure OpenAI i wybierz stronę Metryki z lewej nawigacji. Na stronie metryk wybierz miarę "Aprowizowane wykorzystanie zarządzane". Jeśli w zasobie znajduje się więcej niż jedno wdrożenie, należy również podzielić wartości poszczególnych wdrożeń, klikając przycisk "Zastosuj podział".

Screenshot of the provisioned managed utilization on the resource's metrics blade in the Azure portal.

Aby uzyskać więcej informacji na temat monitorowania wdrożeń, zobacz stronę Monitorowanie usługi Azure OpenAI.

Obsługa wysokiego wykorzystania

Aprowidowane wdrożenia zapewniają przydzieloną ilość mocy obliczeniowej do uruchomienia danego modelu. Metryka "Aprowizowane wykorzystanie zarządzane" w usłudze Azure Monitor mierzy wykorzystanie wdrożenia w jednominutowych przyrostach. Wdrożenia zarządzane przez aprowizację są również zoptymalizowane tak, aby wywołania akceptowane były przetwarzane przy użyciu spójnego opóźnienia maksymalnego dla poszczególnych wywołań. Gdy obciążenie przekroczy przydzieloną pojemność, usługa zwraca kod stanu HTTP 429, dopóki użycie nie spadnie poniżej 100%. Czas przed ponowną próbą jest podany w retry-after nagłówkach odpowiedzi i retry-after-ms , które zapewniają odpowiednio czas w sekundach i milisekundach. Takie podejście utrzymuje cele opóźnienia poszczególnych wywołań, zapewniając deweloperowi kontrolę nad sposobem obsługi sytuacji o dużym obciążeniu — na przykład ponawianie próby lub przekierowanie do innego środowiska/punktu końcowego.

Co należy zrobić, gdy otrzymuję odpowiedź 429?

Odpowiedź 429 wskazuje, że przydzielone jednostki PTU są w pełni używane w momencie wywołania. Odpowiedź zawiera retry-after-ms nagłówki i retry-after , które informują o czasie oczekiwania przed zaakceptowaniem następnego wywołania. Sposób obsługi odpowiedzi 429 zależy od wymagań aplikacji. Oto kilka zagadnień:

  • Jeśli masz problemy z dłuższymi opóźnieniami poszczególnych wywołań, zaimplementuj logikę ponawiania po stronie klienta, aby poczekać i ponowić próbę retry-after-ms . Takie podejście pozwala zmaksymalizować przepływność wdrożenia. Zestawy SDK klienta dostarczone przez firmę Microsoft obsługują je już z rozsądnymi wartościami domyślnymi. Nadal może być konieczne dalsze dostrajanie na podstawie przypadków użycia.
  • Rozważ przekierowanie ruchu do innych modeli, wdrożeń lub środowisk. Takie podejście jest rozwiązaniem o najniższym opóźnieniu, ponieważ tę akcję można podjąć natychmiast po otrzymaniu sygnału 429. Sygnał 429 nie jest nieoczekiwanym komunikatem o błędzie podczas wypychania do wysokiego wykorzystania, ale zamiast tego częścią projektu do zarządzania kolejkowaniem i wysokim obciążeniem dla aprowizowania wdrożeń.

Modyfikowanie logiki ponawiania prób w bibliotekach klienta

Zestawy SDK usługi Azure OpenAI domyślnie ponawiają próby odpowiedzi 429 i za kulisami w kliencie (maksymalnie ponawiane próby). Biblioteki szanują retry-after czas. Możesz również zmodyfikować zachowanie ponawiania w celu lepszego dopasowania do środowiska. Oto przykład z biblioteką języka Python.

Możesz użyć max_retries opcji , aby skonfigurować lub wyłączyć ustawienia ponawiania prób:

from openai import AzureOpenAI

# Configure the default for all requests:
client = AzureOpenAI(
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version="2024-02-01",
    max_retries=5,# default is 2
)

# Or, configure per-request:
client.with_options(max_retries=5).chat.completions.create(
    model="gpt-4", # model = "deployment_name".
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

Uruchamianie testu porównawczego

Dokładne możliwości wydajności i przepływności wystąpienia zależą od rodzaju żądań i dokładnego obciążenia. Najlepszym sposobem określenia przepływności obciążenia jest uruchomienie testu porównawczego na własnych danych.

Aby ułatwić ci pracę, narzędzie do testów porównawczych umożliwia łatwe uruchamianie testów porównawczych we wdrożeniu. Narzędzie zawiera kilka możliwych wstępnie skonfigurowanych kształtów obciążeń i generuje kluczowe metryki wydajności. Dowiedz się więcej o ustawieniach narzędzia i konfiguracji w naszym repozytorium GitHub: https://aka.ms/aoai/benchmarking.

Zalecamy następujący przepływ pracy:

  1. Szacowanie przepływności jednostek PTU przy użyciu kalkulatora pojemności.
  2. Uruchom test porównawczy z tym kształtem ruchu przez dłuższy czas (10+ min), aby obserwować wyniki w stanie stałym.
  3. Obserwuj użycie, przetworzone tokeny i wartości współczynnika wywołań z poziomu narzędzia porównawczego i usługi Azure Monitor.
  4. Uruchom test porównawczy z własnym kształtem ruchu i obciążeniami przy użyciu implementacji klienta. Pamiętaj, aby zaimplementować logikę ponawiania prób przy użyciu biblioteki klienta usługi Azure Openai lub logiki niestandardowej.

Następne kroki