O que é taxa de transferência provisionada?

A funcionalidade da taxa de transferência provisionada permite que você especifique a quantidade de taxa de transferência necessária em uma implantação. Em seguida, o serviço aloca a capacidade de processamento de modelo necessária e garante que ele esteja pronto para você. A taxa de transferência é definida em termos de PTU (unidades de taxa de transferência provisionada), que é uma maneira normalizada de representar a taxa de transferência para sua implantação. Cada par de modelo/versão requer diferentes quantidades de PTU para implantar e fornecer diferentes quantidades de taxa de transferência por PTU.

O que o tipo de implantação provisionada fornece?

  • Desempenho previsível: latência máxima estável e taxa de transferência para cargas de trabalho uniformes.
  • Capacidade de processamento reservada: Uma implantação configura a quantidade de taxa de transferência. Uma vez implantada, a taxa de transferência estará disponível, sendo usada ou não.
  • Economia de custos: as cargas de trabalho com alta taxa de transferência podem oferecer economia de custos em comparação com o consumo baseado em token.

Uma implantação do OpenAI do Azure é uma unidade de gerenciamento para um modelo de OpenAI específico. Uma implantação fornece acesso ao cliente a um modelo de inferência e integra mais recursos, como a Moderação de Conteúdo (Consulte a documentação da moderação de conteúdo).

Observação

A cota de PTU (Unidades de Taxa de Transferência Provisionada) é diferente da cota padrão no OpenAI do Azure e não está disponível por padrão. Para saber mais sobre essa oferta, entre em contato com a Equipe de Conta da Microsoft.

O que você obtém?

Tópico Provisionado
O que é isso? Fornece uma taxa de transferência garantida em incrementos menores do que a oferta provisionada existente. As implantações terão uma latência máxima consistente para determinado modelo/versão.
Para quem são? Clientes que desejam uma taxa de transferência garantida com uma variação de latência mínima.
Quota Unidades de taxa de transferência provisionada-gerenciada para um determinado modelo.
Latency Latência máxima restrita do modelo. A latência geral é um fator de forma de chamada.
Utilização Medida de utilização provisionada-gerenciada fornecida no Azure Monitor.
Estimando o tamanho Calculadora fornecida no estúdio e script de benchmarking.

Como fazer para obter acesso ao Provisioned?

Você precisa falar com sua equipe de vendas/conta da Microsoft para adquirir a taxa de transferência provisionada. Se você não tiver uma equipe de vendas/contas, infelizmente, no momento, não poderá adquirir a taxa de transferência provisionada.

Conceitos principais

Unidades de taxa de transferência provisionada

PTUs (unidades de taxa de transferência provisionada) são unidades de capacidade de processamento de modelo que você pode reservar e implantar para processar solicitações e gerar preenchimentos. A capacidade mínima de implantação, incrementos e processamento de PTU associada a cada unidade varia de acordo com o tipo de modelo e versão.

Tipos de implantação

Ao implantar um modelo no OpenAI do Azure, você precisa definir o sku-name como Provisionado-Gerenciado. O sku-capacity especifica o número de PTUs atribuídas à implantação.

az cognitiveservices account deployment create \
--name <myResourceName> \
--resource-group  <myResourceGroupName> \
--deployment-name MyDeployment \
--model-name gpt-4 \
--model-version 0613  \
--model-format OpenAI \
--sku-capacity 100 \
--sku-name ProvisionedManaged 

Quota

A cota de taxa de transferência provisionada representa uma quantidade específica da taxa de transferência total que você pode implantar. A cota no Serviço OpenAI do Azure é gerenciada no nível da assinatura. Todos os recursos do OpenAI do Azure dentro da assinatura compartilham essa cota.

A cota é especificada em unidades de produtividade provisionadas e é específica para um terceto (tipo de implementação, modelo, região). A cota não é intercambiável. Ou seja, você não pode usar a cota para GPT-4 e implantar GPT-35-turbo. Os clientes podem gerar uma solicitação de suporte para mover a cota entre os tipos de implantação, modelos ou regiões, mas não podemos garantir que a troca será possível.

Embora façamos todas as tentativas para garantir que a cota possa ser implantada, não há garantias de que a capacidade subjacente estará disponível. O serviço atribui capacidade durante a operação de implantação e, se a capacidade não estiver disponível, a implantação falhará com um erro de capacidade insuficiente.

Determinando o número de PTUs necessários para uma carga de trabalho

As PTUs representam uma quantidade de capacidade de processamento do modelo. De forma semelhante ao seu computador ou banco de dados, diferentes cargas de trabalho ou solicitações ao modelo consumirão diferentes quantidades de capacidade de processamento subjacente. A conversão das características do formato da chamada (tamanho do prompt, tamanho da geração e taxa de chamada) para PTUs é complexa e não linear. Para simplificar esse processo, você pode usar a Calculadora de capacidade do OpenAI do Azure para dimensionar formas específicas de carga de trabalho.

Algumas considerações de alto nível:

  • As gerações exigem mais capacidade do que os prompts
  • Chamadas maiores são progressivamente mais caras para serem computadas. Por exemplo, 100 chamadas com um tamanho de prompt de 1.000 tokens exigirão menos capacidade do que uma chamada com 100.000 tokens no prompt. Isso também significa que a distribuição desses formatos de chamada é importante para a taxa de transferência geral. Os padrões de tráfego com uma distribuição ampla que inclui algumas chamadas muito grandes podem ter uma taxa de transferência menor por PTU do que uma distribuição mais restrita com os mesmos tamanhos médios de token de prompt e conclusão.

Como funciona a imposição de 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 Provisioned-Managed Utilization no Azure Monitor mede uma determinada utilização de implantações em incrementos de 1 minuto. As implantações provisionadas-gerenciadas são otimizadas para garantir que as chamadas aceitas sejam processadas com um tempo de processamento de modelo consistente (a latência real de ponta a ponta depende das características de uma chamada). Quando a carga de trabalho excede a capacidade de PTU alocada, o serviço retorna um código de status HTTP 429 até que a utilização cai abaixo de 100%.

O que devo fazer quando receber uma resposta 429?

A resposta 429 não é um erro, mas, em vez disso, parte do design para dizer aos usuários que uma determinada implantação é totalmente utilizada em um momento. Ao fornecer uma resposta de falha rápida, você tem controle sobre como lidar com essas situações de maneira que melhor atenda aos seus requisitos de aplicativo.

Os cabeçalhos retry-after-ms e retry-after na resposta informam o tempo de espera antes que a próxima chamada seja aceita. A forma de lidar com essa resposta depende dos requisitos do seu aplicativo. Estas são algumas considerações:

  • Você pode considerar 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.
  • Se você não tem problemas com latências mais longas por chamada, implemente a lógica de repetição do lado do cliente. Essa opção oferece a você a maior quantidade de taxa de transferência por PTU. As bibliotecas de clientes do OpenAI do Azure incluem recursos internos para lidar com novas tentativas.

Como o serviço decide quando enviar um 429?

Usamos uma variação do algoritmo de balde furado para manter a utilização abaixo de 100%, permitindo alguma intermitência no tráfego. A lógica de alto nível é a seguinte:

  1. Cada cliente tem uma quantidade definida de capacidade que pode utilizar em uma implantação

  2. Quando uma solicitação é feita:

    a. Quando a utilização atual está acima de 100%, o serviço retorna um código 429 com o cabeçalho retry-after-ms definido como o tempo até que a utilização esteja abaixo de 100%

    b. Caso contrário, o serviço estima a alteração incremental para utilização necessária para atender à solicitação combinando tokens de prompt e o max_tokens especificado na chamada. Se o parâmetro max_tokens não for especificado, o serviço estimará um valor. Essa estimativa pode levar a uma simultaneidade menor do que a esperada quando o número de tokens reais gerados é pequeno. Para maior simultaneidade, verifique se o valor max_tokens é o mais próximo possível do tamanho da geração real.

  3. Quando uma solicitação é concluída, passamos a saber o custo real de computação para a chamada. Para garantir uma contabilidade precisa, corrigimos a utilização usando a seguinte lógica:

    a. Se o > real for estimado, a diferença será adicionada à utilização b da implantação. Se o < real for estimado, a diferença será subtraída.

  4. A utilização geral é decrementada a uma taxa contínua com base no número de PTUs implantadas.

Observação

As chamadas são aceitas até que a utilização alcance 100%. As Intermitências acima de 100% podem ser permitidas em períodos curtos, mas, ao longo do tempo, seu tráfego é limitado a 100% de utilização.

Diagram showing how subsequent calls are added to the utilization.

Quantas chamadas simultâneas posso ter na minha implantação?

O número de chamadas simultâneas que você pode alcançar depende da forma de cada chamada (tamanho do prompt, parâmetro max_token etc.). O serviço continuará aceitando chamadas até que a utilização chegue a 100%. Para determinar o número aproximado de chamadas simultâneas, você pode modelar o máximo de solicitações por minuto para uma forma de chamada específica na calculadora de capacidade. Se o sistema gerar menos do que o número de tokens de amostragem, como max_token, ele aceitará mais solicitações.

Próximas etapas