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.
- Zaloguj się do programu Azure OpenAI Studio
- Wybierz subskrypcję, która została włączona dla wdrożeń aprowizowanych i wybierz żądany zasób w regionie, w którym masz przydział.
- W obszarze Zarządzanie w okienku nawigacji po lewej stronie wybierz pozycję Wdrożenia.
- Wybierz pozycję Utwórz nowe wdrożenie i skonfiguruj następujące pola. Rozwiń listę rozwijaną "Opcje zaawansowane".
- 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:
- 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.
- 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ł".
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:
- Szacowanie przepływności jednostek PTU przy użyciu kalkulatora pojemności.
- Uruchom test porównawczy z tym kształtem ruchu przez dłuższy czas (10+ min), aby obserwować wyniki w stanie stałym.
- Obserwuj użycie, przetworzone tokeny i wartości współczynnika wywołań z poziomu narzędzia porównawczego i usługi Azure Monitor.
- 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
- Aby uzyskać więcej informacji na temat najlepszych rozwiązań dotyczących aplikacji w chmurze, zapoznaj się z tematem Najlepsze rozwiązania w aplikacjach w chmurze
- Aby uzyskać więcej informacji na temat aprowizowania wdrożeń, zobacz Co to jest aprowizowana przepływność?
- Aby uzyskać więcej informacji na temat logiki ponawiania prób w ramach każdego zestawu SDK, zobacz: