Comece com implementações provisionadas no Microsoft Foundry

O guia seguinte guia-o pelos passos principais para criar uma implementação provisionada com o seu recurso Microsoft Foundry. Para mais detalhes sobre os conceitos aqui discutidos, veja:

Pré-requisitos

Verificar a disponibilidade da quota da PTU

As implementações de throughput provisionado são dimensionadas em unidades chamadas Unidades de Débito Provisionadas (UDPs). A quota de PTU para cada tipo de implementação provisionada é concedida a uma subscrição regionalmente e limita o número total de PTUs que podem ser implementadas nessa região em todos os modelos e versões.

Criar uma nova implementação requer uma quota disponível (não utilizada) para cobrir o tamanho desejado da implementação. Por exemplo: Se uma subscrição tiver o seguinte no Centro-Sul dos EUA:

  • Quota Total de PTU = 500 PTUs
  • Implementações:
    • 100 PTUs: GPT-4o, 2024-05-13
    • 100 PTUs: DeepSeek-R1, 1

Depois, 200 PTUs de quota são consideradas usadas, e estão disponíveis 300 PTUs para serem usadas em novas implementações.

Uma quantidade padrão de quota global, de zona de dados e regional é atribuída a assinaturas elegíveis em várias regiões.

Pode ver a quota disponível para si numa região visitando o painel Quota na secção Microsoft FoundryOperar e selecionando a subscrição e a região desejadas.

Quotas adicionais podem ser solicitadas selecionando o botão Solicitar Cota .

Criar um recurso de Foundry

As implementações provisionadas são criadas através de objetos de recurso Foundry dentro do Azure. É necessário ter um recurso Foundry em cada região onde pretende criar uma implantação.

Nota

Os recursos da Foundry podem suportar vários tipos de implementações da Foundry ao mesmo tempo. Não é necessário dedicar novos recursos para as suas implantações provisionadas.

Descubra modelos com opção de implementação provisionada

Depois de verificar a sua quota, pode criar uma implantação. Navegue até ao catálogo de modelos Foundry para descobrir os modelos com opções de implementação provisionadas.

  1. Iniciar sessão no Microsoft Foundry. Certifica-te de que a opção New Foundry está ativada. Estes passos referem-se à Foundry (nova).
  2. Na página inicial do portal da Foundry, escolha a subscrição que foi ativada para implementações provisionadas e selecione o recurso desejado numa região onde tem a quota.
  3. Selecione Descobrir no canto superior direito da navegação, depois Modelos no painel esquerdo.
  4. Selecione o filtro Collections e filtre por Diretamente de Azure para ver os modelos detidos e servidos por Azure diretamente. Alguns destes modelos suportam a opção de implementação com throughput provisionado.
  5. Seleciona o modelo que queres implementar para abrir a sua placa modelo.
  6. Selecione Definir>definições personalizadas para personalizar a sua implementação.
  7. Selecione o menu suspenso Tipo de Implementação para verificar se a implementação provisionada está disponível para o modelo.

Crie a sua implantação provisionada – a capacidade está disponível

Pode criar a sua implementação programaticamente, usando o seguinte comando CLI do Azure. Para especificar o tipo de implantação, modifique o sku-name para GlobalProvisionedManaged, DataZoneProvisionedManaged, ou ProvisionedManaged com base no tipo de implementação pretendido. Atualize o sku-capacity com o número desejado de unidades de débito 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, template ARM, Bicep e Terraform também podem ser usados para criar implementações. Veja a secção sobre automatização de implementações no guia prático Managing Quota e substitua o sku.name por GlobalProvisionedManaged, DataZoneProvisionedManaged, ou ProvisionedManaged em vez de Standard.

Opcionalmente, compre uma reserva

Após a criação da sua implementação, poderá querer adquirir um desconto por prazo através de uma Reserva Azure. Uma Reserva Azure pode proporcionar um desconto substancial na tarifa horária para utilizadores que pretendam usar a implementação para além de alguns dias.

Para mais informações sobre o modelo de compra e reservas, consulte:

Importante

A disponibilidade de capacidade para implementações de modelos é dinâmica e muda frequentemente entre regiões e modelos. Para evitar que compres uma reserva para mais PTUs do que podes usar, cria primeiro as implementações e depois compra a Reserva Azure para cobrir as PTUs que implementaste. Esta melhor prática garante que pode tirar pleno partido do desconto de reserva e evitar que adquira um compromisso temporário que não pode usar.

Faça as suas primeiras decisões de inferência

O código de inferência para implantações provisionadas é o mesmo que um tipo de implementação padrão. O seguinte excerto de código mostra uma chamada de conclusão de chat para um modelo GPT-4. Para a sua primeira utilização programática destes modelos, recomendamos começar pelo nosso guia de início rápido. A nossa recomendação é usar a biblioteca OpenAI com a versão 1.0 ou superior, pois inclui lógica de retentativa dentro da biblioteca.

    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-10-21"
    )

    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 services support this too?"}
        ]
    )

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

Importante

Para produção, usa uma forma segura de armazenar e aceder às tuas credenciais, como Azure Key Vault. Para mais informações sobre segurança de credenciais, consulte este artigo sobre segurança .

Compreender a taxa de transferência esperada

A quantidade de largura de banda que pode alcançar no endpoint é um fator do número de PTUs desdobradas, tamanho da entrada, tamanho da saída, taxa de chamadas. O número de chamadas simultâneas e o total de tokens processados podem variar com base nestes valores.

Medir a utilização da implementação

Quando se implementa um número especificado de unidades de taxa de transferência provisionadas (PTUs), uma quantidade definida de taxa de inferência fica disponível para esse endpoint. A utilização desta largura de banda é uma fórmula complexa baseada no modelo, na taxa de chamadas da versão do modelo, no tamanho do prompt e no tamanho da geração. Para simplificar este cálculo, fornecemos uma métrica de utilização no Azure Monitor. A sua implementação devolve um erro 429 em quaisquer novas chamadas após a utilização ultrapassar os 100%. A utilização aprovisionada é definida da seguinte forma:

Utilização da implantação das PTUs = (PTUs consumidas no período de tempo) / (PTUs implementadas nesse período)

Pode encontrar a medida de utilização na secção Azure-Monitor do seu recurso. Para aceder aos painéis de monitorização, inicie sessão no https://portal.azure.com, aceda ao seu recurso Azure OpenAI e selecione a página de Métricas no menu à esquerda. Na página de métricas, selecione a métrica 'Utilização Gerida Provisionada V2'. Se tiver mais do que uma implementação no recurso, deve também dividir os valores por cada implementação selecionando o botão 'Aplicar Divisão'.

Captura de ecrã da utilização gerida provisionada na lâmina de métricas do recurso no portal Azure.

Lidar com a elevada utilização

As implementações provisionadas fornecem-lhe uma quantidade alocada de capacidade de computação para executar um determinado modelo. A métrica 'Provisioned-Managed Utilization V2' no Azure Monitor mede a utilização da implementação em incrementos de um minuto cada. Provisioned-Managed implementações também são otimizadas para que as chamadas aceites sejam processadas com uma latência máxima consistente por chamada. Quando a carga de trabalho excede a capacidade alocada, o serviço devolve um código de estado HTTP 429 até que a utilização desça 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, respetivamente. Esta abordagem mantém os objetivos de latência por chamada, ao mesmo tempo que dá ao programador controlo sobre como lidar com situações de alta carga – por exemplo, tentar novamente ou desviar para outra experiência/endpoint.

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 indicam o tempo a esperar antes que a próxima chamada seja aceite. A forma como escolhes lidar com uma resposta 429 depende dos requisitos da tua candidatura. Aqui estão algumas considerações:

  • Se não se importar com latências por chamada mais longas, implemente lógica de reintentar do lado do cliente para aguardar pelo retry-after-ms tempo e tentar novamente. Esta abordagem permite-lhe maximizar o throughput na implementação. Os SDKs de clientes fornecidos pela Microsoft já tratam disso com padrões razoáveis. Ainda podes precisar de ajustes adicionais consoante os teus casos de uso.
  • Considere redirecionar o tráfego para outros modelos, implementações ou experiências. Esta abordagem é a solução de menor latência porque pode ser tomada assim que receber o sinal 429. O sinal 429 não é uma resposta de erro inesperada quando se passa para alta utilização, mas sim parte do design para gerir filas e carga elevada para implantações provisionadas.

Modificação da lógica de tentativas de repetição nas bibliotecas do cliente

Os SDKs do Azure OpenAI reprocessam automaticamente as respostas 429 e de forma automática pelo cliente (até ao máximo de tentativas). As bibliotecas respeitam o retry-after tempo. Também podes modificar o comportamento de tentativa de novo para se adaptar melhor à tua experiência. Aqui está um exemplo com a biblioteca Python.

Pode usar a opção max_retries para configurar ou desativar as definições de tentativa:

import os
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-10-21",
    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 services support this too?"}
    ]
)

Executar um benchmark

O desempenho exato e as capacidades de rendimento da sua instância dependem do tipo de pedidos que faz e da carga de trabalho exata. A melhor forma de determinar o throughput para a sua carga de trabalho é fazer um teste de benchmark nos seus próprios dados.

Para o ajudar neste trabalho, a ferramenta de benchmarking oferece uma forma fácil de executar benchmarks na sua implementação. A ferramenta vem com várias formas possíveis de carga de trabalho pré-configuradas e fornece métricas-chave de desempenho. Saiba mais sobre a ferramenta e as definições de configuração no nosso GitHub Repo: https://github.com/Azure/azure-openai-benchmark.

Recomendamos o seguinte fluxo de trabalho:

  1. Estima as tuas PTUs de débito usando o calculador de capacidade.
  2. Execute um benchmark com esta forma de tráfego durante um período prolongado (10+ min) para observar os resultados num estado estável.
  3. Observe a utilização, os tokens processados e os valores de taxa de chamadas da ferramenta de benchmark e do Azure Monitor.
  4. Executa um benchmark com a tua própria forma de tráfego e cargas de trabalho usando a implementação do teu cliente. Certifique-se de implementar a lógica de repetição usando uma biblioteca cliente do Azure OpenAI ou lógica personalizada.