Introdução ao uso de implantações provisionadas no Serviço OpenAI do Azure
O guia a seguir orienta você pelas principais etapas na criação de uma implantação provisionada com seu recurso do Serviço OpenAI do Azure. Para mais detalhes sobre os conceitos discutidos aqui, consulte:
Pré-requisitos
- Uma assinatura do Azure - Crie uma gratuitamente
- Função de Colaborador do Azure ou Colaborador dos Serviços Cognitivos
- Acesso ao Azure OpenAI Studio
Obter/verificar a disponibilidade da cota PTU.
As implantações de taxa de transferência provisionada são dimensionadas em unidades chamadas Unidades de Taxa de Transferência Provisionadas (PTUs). A cota de PTU para cada tipo de implantação provisionada é concedida a uma assinatura regionalmente e limita o número total de PTUs que podem ser implantadas nessa região em todos os modelos e versões.
A criação de uma nova implantação requer uma cota disponível (não utilizada) para cobrir o tamanho desejado da implantação. Por exemplo: Se uma assinatura tiver o seguinte no Centro-Sul dos EUA:
- Quota total de PTU = 500 PTU
- Implantações:
- 100 PTUs: GPT-4o, 2024-05-13
- 100 PTUs: GPT-4, 0613
Em seguida, 200 PTUs de cota são consideradas usadas, e há 300 PTUs disponíveis para uso para criar novas implantações.
Uma quantidade padrão de cota provisionada global, de zona de dados e regional é atribuída a assinaturas qualificadas em várias regiões. Você pode exibir a cota disponível para você em uma região visitando o painel Cotas no Azure AI Foundry e selecionando a assinatura e a região desejadas. Por exemplo, a captura de tela abaixo mostra um limite de cota de 500 PTUs no oeste dos EUA para a assinatura selecionada. Observe que você pode ver valores mais baixos de cotas padrão disponíveis.
A cota adicional pode ser solicitada clicando no link Solicitar cota à direita da coluna "Uso/Limite". (Isso está fora da tela na imagem acima).
Criar um recurso do Azure OpenAI
As implantações provisionadas são criadas por meio de objetos de recurso do Azure OpenAI no Azure. Você deve ter um recurso do Azure OpenAI em cada região onde pretende criar uma implantação. Use o portal do Azure para criar um recurso em uma região com cota disponível, se necessário.
Nota
Os recursos do Azure OpenAI podem dar suporte a vários tipos de implantações do Azure OpenAI ao mesmo tempo. Não é necessário dedicar novos recursos para suas implantações provisionadas.
Crie sua implantação provisionada - a capacidade está disponível
Depois de verificar sua cota, você pode criar uma implantação. Para criar uma implantação provisionada, você pode seguir estas etapas; As opções descritas refletem as entradas mostradas na captura de tela.
Entrar no Azure AI Foundry
Escolha a assinatura que foi habilitada para implantações provisionadas & selecione o recurso desejado em uma região onde você tem a cota.
Em Gerenciamento no painel de navegação esquerdo, selecione Implantações.
Selecione Criar nova implantação e configure os campos a seguir. Expanda o menu suspenso de opções avançadas.
Preencha os valores em cada campo. Eis um exemplo:
Campo | Description | Exemplo |
---|---|---|
Selecionar um modelo | Escolha o modelo específico que deseja implantar. | GPT-4 |
Versão do modelo | Escolha a versão do modelo a ser implantado. | 0613 |
Nome da implantação | O nome da implantação é usado em seu código para chamar o modelo usando as bibliotecas de cliente e as APIs REST. | GPT-4 |
Filtro de conteúdo | Especifique a política de filtragem a ser aplicada à implantação. Saiba mais sobre o nosso tutorial de filtragem de conteúdo. | Predefinido |
Tipo de Implementação | Isso afeta a taxa de transferência e o desempenho. Escolha Global Provisioned-Managed, DataZone Provisioned-Managed ou Provisioned-Managed na lista suspensa da caixa de diálogo de implantação para sua implantação | Provisionado-gerenciado |
Unidades de taxa de transferência provisionadas | Escolha a quantidade de taxa de transferência que deseja incluir na implantação. | 100 |
Aspetos importantes a ter em conta:
- A caixa de diálogo de implantação contém um lembrete de que você pode comprar uma Reserva do Azure para o Azure OpenAI Provisionado para obter um desconto significativo para um compromisso de prazo.
Depois de inserir as configurações de implantação, clique em Confirmar preço para continuar. Será exibida uma caixa de diálogo de confirmação de preço que exibirá o preço de tabela para a implantação, se você optar por pagar por ela por hora, sem Reserva do Azure para fornecer um desconto de prazo.
Se você não tiver certeza dos custos, cancele a implantação e prossiga assim que entender o modelo de pagamento e os custos subjacentes para a implantação provisionada. Esta etapa pode evitar cobranças altas e inesperadas na sua fatura de pagamento. Os recursos para se educar incluem:
- Portal de Preços do Azure
- Noções básicas sobre o modelo de compra de taxa de transferência provisionada
A imagem abaixo mostra a confirmação de preço que você verá. O preço apresentado é apenas um exemplo.
Se desejar criar sua implantação programaticamente, você pode fazê-lo com o seguinte comando da CLI do Azure. Para especificar o tipo de implantação, modifique o sku-name
para GlobalProvisionedManaged
, DataZoneProvisionedManaged
ou ProvisionedManaged
com base no tipo de implantação pretendido. Atualize o sku-capacity
com o número desejado de unidades de taxa de transferência provisionadas.
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
REST, modelo ARM, Bíceps e Terraform também podem ser usados para criar implantações. Consulte a seção sobre como automatizar implantações no guia de instruções de gerenciamento de cotas e substitua o sku.name
por GlobalProvisionedManaged
, DataZoneProvisionedManaged
ou ProvisionedManaged
em vez de Standard
.
Crie sua implantação provisionada – a capacidade não está disponível
Devido à natureza dinâmica da disponibilidade de capacidade, é possível que a região do recurso selecionado não tenha a capacidade de serviço para criar a implantação do modelo, da versão e do número de PTUs especificados.
Nesse caso, o Azure AI Foundry direcionará você para outras regiões com cota e capacidade disponíveis para criar uma implantação do modelo desejado. Se isso acontecer, a caixa de diálogo de implantação terá esta aparência:
Coisas a notar:
- Uma mensagem é exibida mostrando muitas PTUs que você tem na cota disponível e quantas podem ser implantadas atualmente no momento.
- Se você selecionar um número de PTUs maior que a capacidade de serviço, aparecerá uma mensagem fornecendo opções para obter mais capacidade e um botão para permitir que você selecione uma região alternativa. Clicar no botão "Ver outras regiões" exibirá uma caixa de diálogo que mostra uma lista de recursos do Azure OpenAI onde você pode criar uma implantação, juntamente com a implantação de tamanho máximo que pode ser criada com base na cota disponível e na capacidade de serviço em cada região.
Selecionar um recurso e clicar em Alternar recurso fará com que a caixa de diálogo de implantação seja reexibida usando o recurso selecionado. Em seguida, você pode continuar a criar sua implantação na nova região.
Opcionalmente, compre uma reserva
Após a criação de sua implantação, talvez você queira comprar um desconto de prazo por meio de uma Reserva do Azure. Uma Reserva do Azure pode fornecer um desconto substancial na taxa horária para usuários que pretendem usar a implantação além de alguns dias.
Para mais informações sobre o modelo de compra e reservas, consulte:
- Economize custos com reservas provisionadas pelo serviço OpenAI do Microsoft Azure.
- Guia de integração provisionada do Azure OpenAI
- Guia para reservas provisionadas do Azure OpenAI
Importante
A disponibilidade de capacidade para implantações de modelos é dinâmica e muda frequentemente entre regiões e modelos. Para evitar que você compre uma reserva para mais PTUs do que você pode usar, crie implantações primeiro e, em seguida, compre a Reserva do Azure para cobrir as PTUs que você implantou. Esta prática recomendada garantirá que você possa aproveitar ao máximo o desconto da reserva e evitar que você adquira um compromisso de prazo que você não pode usar.
Faça suas primeiras chamadas de inferência
O código de inferência para implantações provisionadas é o mesmo que um tipo de implantação padrão. O trecho de código a seguir mostra uma chamada de conclusão de chat para um modelo GPT-4. Pela primeira vez usando esses modelos programaticamente, recomendamos começar com nosso guia de início rápido. Nossa recomendação é usar a biblioteca OpenAI com a versão 1.0 ou superior, pois isso inclui lógica de repetição dentro da biblioteca.
#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)
Importante
Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações sobre segurança de credenciais, consulte o artigo de segurança dos serviços de IA do Azure.
Entendendo a taxa de transferência esperada
A quantidade de taxa de transferência que você pode alcançar no ponto de extremidade é um fator do número de PTUs implantadas, tamanho de entrada, tamanho de saída e taxa de chamada. O número de chamadas simultâneas e o total de tokens processados podem variar com base nesses valores. Nossa maneira recomendada de determinar a taxa de transferência para sua implantação é a seguinte:
Use a calculadora de capacidade para uma estimativa de dimensionamento. Você pode encontrar a calculadora de capacidade no Azure AI Foundry na página de cotas e na guia Provisionado.
Avalie a carga usando a carga de trabalho de tráfego real. Para obter mais informações sobre benchmarking, consulte a seção benchmarking .
Medindo a utilização da implantação
Quando você implanta um número especificado de unidades de taxa de transferência provisionadas (PTUs), uma quantidade definida de taxa de transferência de inferência é disponibilizada para esse ponto de extremidade. A utilização dessa taxa de transferência é uma fórmula complexa baseada no modelo, na taxa de chamada da versão do modelo, no tamanho do prompt e no tamanho da geração. Para simplificar esse cálculo, fornecemos uma métrica de utilização no Azure Monitor. Sua implantação retorna um 429 em qualquer nova chamada depois que a utilização aumenta acima de 100%. A utilização provisionada é definida da seguinte forma:
Utilização da implantação da PTU = (PTUs consumidas no período de tempo) / (PTUs implantadas no período de tempo)
Você pode encontrar a medida de utilização na seção Azure-Monitor para seu recurso. Para acessar os painéis de monitoramento de entrada no https://portal.azure.com, vá para seu recurso do Azure OpenAI e selecione a página Métricas no painel de navegação esquerdo. Na página de métricas, selecione a métrica 'Utilização gerenciada provisionada V2'. Se você tiver mais de uma implantação no recurso, também deverá dividir os valores por cada implantação clicando no botão 'Aplicar divisão'.
Para obter mais informações sobre como monitorar suas implantações, consulte a página Monitorando o Serviço OpenAI do Azure.
Lidando com alta utilização
As implantações provisionadas fornecem uma quantidade alocada de capacidade de computação para executar um determinado modelo. A métrica 'Utilização Gerenciada Provisionada V2' no Azure Monitor mede a utilização da implantação em incrementos de um minuto. As implantações gerenciadas provisionadas também são otimizadas para que as chamadas aceitas sejam processadas com uma latência máxima consistente por chamada. Quando a carga de trabalho excede sua capacidade alocada, o serviço retorna um código de status HTTP 429 até que a utilização caia abaixo de 100%. O tempo antes de tentar novamente é fornecido nos retry-after
cabeçalhos e retry-after-ms
resposta que fornecem o tempo em segundos e milissegundos, respectivamente. Essa abordagem mantém os alvos de latência por chamada e, ao mesmo tempo, dá ao desenvolvedor controle sobre como lidar com situações de alta carga – por exemplo, repetir ou desviar para outra experiência/ponto de extremidade.
O que devo fazer quando receber uma resposta 429?
Uma resposta 429 indica que as PTUs alocadas estão totalmente consumidas no momento da chamada. A resposta inclui os retry-after-ms
cabeçalhos e retry-after
que informam o tempo de espera antes que a próxima chamada seja aceita. A forma como você escolhe lidar com uma resposta 429 depende dos requisitos do seu aplicativo. Aqui estão algumas considerações:
- Se você estiver de acordo com latências por chamada mais longas, implemente a lógica de repetição do lado do cliente para aguardar o
retry-after-ms
tempo e tentar novamente. Essa abordagem permite maximizar a taxa de transferência na implantação. Os SDKs de cliente fornecidos pela Microsoft já lidam com padrões razoáveis. Você ainda pode precisar de mais ajustes com base em seus casos de uso. - Considere redirecionar o tráfego para outros modelos, implantações ou experiências. Essa abordagem é a solução de menor latência porque essa ação pode ser tomada assim que você receber o sinal 429. O sinal 429 não é uma resposta de erro inesperada ao enviar para alta utilização, mas sim parte do design para gerenciar filas e alta carga para implantações provisionadas.
Modificando a lógica de repetição nas bibliotecas de cliente
Os SDKs do Azure OpenAI repetem 429 respostas por padrão e nos bastidores do cliente (até o máximo de tentativas). As bibliotecas respeitam o retry-after
tempo. Você também pode modificar o comportamento de repetição para melhor se adequar à sua experiência. Aqui está um exemplo com a biblioteca python.
Você pode usar a opção para definir ou desativar as max_retries
configurações de nova tentativa:
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?"}
]
)
Executar um benchmark
O desempenho exato e os recursos de taxa de transferência de sua instância dependem do tipo de solicitações feitas e da carga de trabalho exata. A melhor maneira de determinar a taxa de transferência para sua carga de trabalho é executar uma referência em seus próprios dados.
Para ajudá-lo nesse trabalho, a ferramenta de benchmarking fornece uma maneira de executar facilmente benchmarks em sua implantação. A ferramenta vem com várias formas de carga de trabalho pré-configuradas possíveis e produz métricas-chave de desempenho. Saiba mais sobre a ferramenta e as definições de configuração em nosso repositório GitHub: https://github.com/Azure/azure-openai-benchmark.
Recomendamos o seguinte fluxo de trabalho:
- Estime suas PTUs de taxa de transferência usando a calculadora de capacidade.
- Execute um benchmark com esta forma de tráfego por um longo período de tempo (10+ min) para observar os resultados em um estado estacionário.
- Observe a utilização, os tokens processados e os valores da taxa de chamada da ferramenta de referência e do Azure Monitor.
- Execute um benchmark com sua própria forma de tráfego e cargas de trabalho usando sua implementação de cliente. Certifique-se de implementar a lógica de repetição usando uma biblioteca de cliente do Azure OpenAI ou lógica personalizada.
Passos Seguintes
- Para obter mais informações sobre as práticas recomendadas de aplicativos em nuvem, confira Práticas recomendadas em aplicativos em nuvem
- Para obter mais informações sobre implantações provisionadas, confira O que é taxa de transferência provisionada?
- Para obter mais informações sobre a lógica de repetição em cada SDK, confira: