Share via


Introdução ao uso de implantações provisionadas no Serviço OpenAI do Azure

O guia a seguir orienta você na configuração de uma implantação provisionada com seu recurso do Serviço OpenAI do Azure.

Pré-requisitos

  • Uma assinatura do Azure - Crie uma gratuitamente
  • Acesso concedido ao Azure OpenAI na assinatura desejada do Azure. Atualmente, o acesso a este serviço é feito por aplicativo. Você pode solicitar acesso ao Serviço OpenAI do Azure preenchendo o formulário em https://aka.ms/oai/access.
  • Obteve Quota para uma implantação provisionada e adquiriu um compromisso.

Nota

As Unidades de Taxa de Transferência Provisionadas (PTU) são diferentes da cota padrão no Azure OpenAI e não estão disponíveis por padrão. Para saber mais sobre esta oferta, contacte a sua Equipa de Conta Microsoft.

Crie sua implantação provisionada

Depois de comprar um compromisso em 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.

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

  1. Entre no Azure OpenAI Studio
  2. Escolha a assinatura que foi habilitada para implantações provisionadas & selecione o recurso desejado em uma região onde você tem a cota.
  3. Em Gerenciamento no painel de navegação esquerdo, selecione Implantações.
  4. Selecione Criar nova implantação e configure os campos a seguir. Expanda a lista suspensa 'opções avançadas'.
  5. 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 Provisioned-Managed para sua implantação provisionada Provisionado-gerenciado
Unidades de taxa de transferência provisionadas Escolha a quantidade de taxa de transferência que deseja incluir na implantação. 100

Se desejar criar sua implantação programaticamente, você pode fazê-lo com o seguinte comando da CLI do Azure. Atualize o com o sku-capacity 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, Bicep 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 sobre gerenciamento de cotas e substitua por sku.name "ProvisionedManaged" em vez de "Padrão".

Faça as suas primeiras chamadas

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:

  1. 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.
  2. 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 medida 'Utilização gerenciada provisionada'. 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'.

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

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' 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 resposta que fornecem o tempo em segundos e retry-after-ms 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://aka.ms/aoai/benchmarking.

Recomendamos o seguinte fluxo de trabalho:

  1. Estime suas PTUs de taxa de transferência usando a calculadora de capacidade.
  2. 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.
  3. Observe a utilização, os tokens processados e os valores da taxa de chamada da ferramenta de referência e do Azure Monitor.
  4. 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