Introdução ao uso de Implantações Provisionadas no Serviço OpenAI do Azure
O guia a seguir orienta você nas principais etapas da criação de uma implantação provisionada com seu recurso do Serviço OpenAI do Azure. Para obter mais detalhes sobre os conceitos discutidos aqui, veja:
Pré-requisitos
- Uma assinatura do Azure – crie uma gratuitamente
- Função de Colaborador do Azure ou Colaborador de Serviços Cognitivos
- Acesso ao Azure OpenAI Studio
Obtenha/verifique a disponibilidade de cotas de PTU.
As implantações de rendimento provisionado são dimensionadas em unidades chamadas Unidades de produtividade provisionado (PTUs). A cota de PTU é concedida regionalmente a uma assinatura e limita o número total de PTUs que podem ser implantados 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:
- Cota total de PTUs = 500 PTUs
- Implantações:
- 100 PTUs: GPT-4o, 2024-05-13
- 100 PTUs: GPT-4, 0613
Então, 200 PTUs de cota são considerados usados e há 300 PTUs disponíveis para uso na criação de novas implantações.
Uma quantidade padrão de cota provisionada e global provisionada é atribuída a todas as assinaturas em várias regiões. Você pode visualizar a cota disponível em uma região visitando a folha Cotas no Azure OpenAI Studio 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ê poderá ver valores mais baixos de cotas padrão disponíveis.
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 OpenAI do Azure
As implantações provisionadas e globais provisionadas são criadas por meio de objetos de recurso de OpenAI do Azure no Azure. Você deve ter um recurso Azure OpenAI em cada região onde pretende criar uma implantação. Utilize o portal do Azure para criar um recurso numa região com quota disponível, se necessário.
Observação
Os recursos do Azure OpenAI podem suportar vários tipos de implantações do Azure OpenAI ao mesmo tempo. Não é necessário dedicar novos recursos para suas implantações provisionadas ou globais provisionadas.
Crie sua implantação provisionada ou globais provisionadas – 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.
Entre no Azure OpenAI Studio
Escolha a assinatura que foi habilitada para implantações provisionadas e globais provisionadas selecione o recurso desejado em uma região em que você tenha a cota.
Em Gerenciamento, na navegação à esquerda, selecione Implantações.
Selecione Criar nova implantação e configure os seguintes campos. Expanda o menu suspenso opções avançadas.
Preencha os valores em cada campo. Veja um exemplo:
Campo | Descrição | Exemplo |
---|---|---|
Selecionar um modelo | Escolha o modelo específico que você deseja implantar. | GPT-4 |
Versão do modelo | Escolha a versão do modelo a ser implantada. | 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 em nossas instruções Filtragem de Conteúdo. | Default |
Tipo de Implantação | Isso afeta a produtividade e o desempenho. Escolha Gerenciada Provisionada ou Gerenciada Provisionada Global para sua implantação | Provisionado-Gerenciado |
Unidades de Produtividade Provisionadas | Escolha a quantidade de produtividade que você deseja incluir na implantação. | 100 |
Aspectos importantes a serem observados:
- A caixa de diálogo de implantação contém um lembrete de que você pode comprar uma Reserva do Azure para Azure OpenAI Provisioned para obter um desconto significativo para um compromisso de prazo.
Depois de inserir as configurações de implantação, clique em Confirmar Preços para continuar. Uma caixa de diálogo de confirmação de preços será exibida, a qual exibirá o preço de lista da 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 depois de entender o modelo de pagamento e os custos subjacentes para implantação provisionada. Essa etapa pode evitar encargos inesperados e altos em sua fatura de pagamento. Os recursos para você se instruir incluem:
- Portal de Preços do Azure
- Noções básicas sobre o modelo de aquisição de taxa de transferência provisionada
A imagem abaixo mostra a confirmação de preços que você verá. O preço mostrado é apenas um exemplo.
Se você quiser criar sua implantação programaticamente, poderá fazer isso com o seguinte comando da CLI do Azure. Para especificar o tipo de implantação, modifique o sku-name
para ProvisionedManaged
ou GlobalProvisionedManaged
com base no tipo de implantação pretendido. Atualize o sku-capacity
com o número desejado de unidades de produtividade 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, Bicep e Terraform também podem ser usados para criar implantações. Consulte a seção sobre a automação de implantações do guia de instruções Gerenciamento de Cotas e substitua o sku.name
por “ProvisionedManaged” ou “GlobalProvisionedManaged” ao invés de “Standard”.
Crie sua implantação provisionada ou globais provisionadas – a capacidade não está disponível
Devido à natureza dinâmica da disponibilidade de capacidade, é possível que a região do seu recurso selecionado não tenha a capacidade de serviço para criar a implantação do modelo, versão e número de PTUs especificados.
Nesse evento, o Azure OpenAI Studio irá direcioná-lo para outras regiões com cota disponível e capacidade para criar uma implantação do modelo desejado. Se isso acontecer, a caixa de diálogo de implantação ficará assim:
Coisas a serem observadas:
- Uma mensagem é exibida mostrando quantos PTUs você tem na cota disponível e quantos podem ser implantados no momento.
- Se você selecionar um número de PTUs maior que a capacidade de serviço, aparecerá uma mensagem com opções para obter mais capacidade e um botão para permitir a seleção de 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 exibida novamente usando o recurso selecionado. Você poderá então prosseguir para criar sua implantação na nova região.
Opcionalmente, compre uma reserva
Após a criação da sua implantação, o ideal é comprar um desconto de termos por meio de uma Reserva do Azure. Uma Reserva do Azure pode oferecer um desconto substancial na taxa por hora para os usuários que pretendem usar a implantação por mais de alguns dias.
Para obter mais informações sobre o modelo de compra e as reservas, confira:
- Economize custos com reservas provisionadas do serviço OpenAI do Microsoft Azure.
- Guia de integração provisionado 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 impedir que você compre uma reserva para mais PTUs do que pode usar, crie implantações primeiro e, em seguida, compre a Reserva do Azure para cobrir as PTUs implantadas. Essa prática recomendada garantirá que você possa aproveitar ao máximo o desconto de reserva e impedir que você adquira um compromisso de termo que não possa 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 snippet de código a seguir mostra uma chamada de conclusão de chat para um modelo GPT-4. Para sua primeira vez usando esses modelos programaticamente, recomendamos iniciar com nosso guia de início rápido. Nossa recomendação é usar a biblioteca do 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 segurança dos serviços de IA do Azure.
Reconhecimento da produtividade esperada
A quantidade da taxa de transferência que você pode alcançar no ponto de extremidade é um fator do número de PTUs implantados, do tamanho da entrada, do tamanho da saída e da taxa de chamada. O número de chamadas simultâneas e o total de tokens processados pode variar com base nesses valores. Nossa maneira recomendada de determinar a produtividade 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 OpenAI Studio na página de cotas e na guia Provisionado.
- Faça o parâmetro de comparação da carga usando a carga de trabalho de tráfego real. Para obter mais informações sobre o parâmetro de comparação, consulte a seção parâmetro de comparação.
Medindo a utilização da sua implantação
Quando você implanta um número específico de unidades de produtividade provisionadas (PTUs), uma quantidade definida de inferência de produtividade é disponibilizada para esse ponto de extremidade. A utilização dessa produtividade é uma fórmula complexa baseada no modelo, na taxa de chamadas da versão do modelo, no tamanho da solicitação 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 novas chamadas depois que a utilização aumenta acima de 100%. A utilização provisionada é definida da seguinte forma:
Utilização de implantação de 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, entre em https://portal.azure.com, vá até o recurso do OpenAI do Azure e selecione a página Métricas na navegação à esquerda. Na página de métricas, selecione a métrica 'Utilização gerenciada provisionada V2'. Se houver mais de uma implantação no recurso, você 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 Monitoramento do Serviço OpenAI do Azure.
Tratamento de alta utilização
As implantações provisionadas fornecem a você uma quantidade alocada de capacidade de computação para executar um determinado modelo. A métrica "Uso Provisionado-Gerenciado" no Azure Monitor mede a utilização da implantação em incrementos de um minuto. As implantações Provisionadas-Gerenciadas 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 cai abaixo de 100%. O tempo antes de tentar novamente é fornecido nos cabeçalhos de resposta retry-after
e retry-after-ms
que fornecem o tempo em segundos e milissegundos, respectivamente. Essa abordagem mantém os destinos de latência por chamada, dando ao desenvolvedor controle sobre como lidar com situações de alta carga - por exemplo, tentar novamente 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 cabeçalhos retry-after-ms
e retry-after
que informam o tempo de espera antes que a próxima chamada seja aceita. A forma de lidar com uma resposta 429 depende dos requisitos do seu aplicativo. Estas são algumas considerações:
- Se você estiver bem com latências mais longas por chamada, implemente a lógica de repetição do lado do cliente para aguardar o tempo
retry-after-ms
e tente novamente. Essa abordagem permite maximizar a produtividade na implantação. Os SDKs de cliente fornecidos pela Microsoft já tratam disso com padrões razoáveis. Talvez você ainda precise de ajustes adicionais com base nos 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ê recebe o sinal 429. O sinal 429 não é uma resposta de erro inesperada ao efetuar push para alta utilização, mas sim para parte do design para gerenciar filas e a alta carga para implantações provisionadas.
Modificando a lógica de repetição dentro das bibliotecas de cliente
Os SDKs do OpenAI do Azure repetem 429 respostas por padrão e nos bastidores do cliente (até o máximo de repetições). As bibliotecas respeitam o tempo retry-after
. Você também pode modificar o comportamento de repetição para se adequar melhor à sua experiência. Aqui está um exemplo com a biblioteca do Python.
Você pode usar a opção max_retries
para definir ou desabilitar as configurações de repetição:
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 parâmetro de comparação
As capacidades exatas de desempenho e produtividade de sua instância dependem do tipo de solicitações que você faz e da carga de trabalho exata. A melhor maneira de determinar a produtividade para sua carga de trabalho é executar um parâmetro de comparação em seus próprios dados.
Para ajudá-lo nesse trabalho, a ferramenta de parâmetro de comparação fornece uma maneira de executar facilmente os parâmetros de comparação em sua implantação. A ferramenta vem com várias formas possíveis de carga de trabalho pré-configuradas e gera métricas de desempenho importantes. Saiba mais sobre a ferramenta e as definições de configuração em nosso Repositório GitHub: https://aka.ms/aoai/benchmarking.
Recomendamos o seguinte fluxo de trabalho:
- Faça uma estimativa de suas PTUs de produtividade usando a calculadora de capacidade.
- Execute um parâmetro de comparação com essa forma de tráfego por um longo período de tempo (mais de 10 min) para observar os resultados em um estado estável.
- Observe a utilização, os tokens processados e os valores da taxa de chamada da ferramenta de parâmetro de comparação e do Azure Monitor.
- Execute um parâmetro de comparação com sua própria forma de tráfego e cargas de trabalho usando a implementação do cliente. Certifique-se de implementar a lógica de repetição usando uma biblioteca de cliente Azure OpenAI ou uma lógica personalizada.
Próximas etapas
- Para obter mais informações sobre as melhores práticas do aplicativo de nuvem, confira Melhores práticas em aplicativos de nuvem
- Para obter mais informações sobre implantações provisionadas, confira O que é produtividade provisionada?
- Para obter mais informações sobre a lógica de repetição em cada SDK, confira: