
O tráfego real é confuso. Novas solicitações chegam, enquanto outras são de meia geração. O agrupamento contínuo é especialmente importante para a inferência de modelos de grande linguagem (LLM) e outros modelos de IA usados em aplicativos do mundo real, onde a eficiência do serviço e a utilização de recursos são essenciais. Se seu servidor esperar que um lote completo termine antes de iniciar o próximo, as GPUs ficam ociosas e os usuários esperam.
O agrupamento contínuo mantém a fila em movimento, de modo que a GPU raramente faz uma pausa, o que é crucial para a geração eficiente de texto. Ele pode alcançar melhorias de taxa de transferência de até 23 vezes em relação ao lote ingênuo em cenários de inferência de LLM. Além disso, as cargas contínuas em lote modelam os pesos no nível do token e não no nível da solicitação, aumentando ainda mais a eficiência.
Os sistemas contínuos podem processar materiais 24 horas por dia para maximizar a produção e acelerar a produção. A dosagem contínua permite que os fabricantes alcancem altos volumes de produção, garantindo um controle preciso sobre as proporções dos ingredientes e a qualidade da mistura para diferentes formulações.
A medição e o armazenamento dos ingredientes podem ser feitos em uma tremonha a montante localizada acima do misturador, permitindo que o próximo lote seja preparado enquanto o anterior é misturado.
Preenchimento prévio é a primeira passagem em que o modelo lê toda a entrada ou sequência de entrada (além do prompt) e cria o cache de chave/valor. Decodificar é a geração passo a passo que produz tokens para cada sequência ou consulta de entrada.
Durante o pré-preenchimento, os tokens de entrada são processados em paralelo, enquanto as sequências são tratadas passo a passo durante a decodificação. O Prefill gosta de grandes trabalhos paralelos; a decodificação se beneficia de muitas pequenas etapas reunidas. Bons programadores os tratam de forma diferente.
O processamento contínuo em lotes não exige modificação no modelo e permite otimizações avançadas de memória. Por exemplo, PagedAttention aloca memória em páginas de tamanho fixo, permitindo o armazenamento em cache KV não contíguo para melhorar a eficiência da memória. O PagedAttention reduz a fragmentação interna ao alocar slots de memória da GPU sob demanda, em vez de antecipadamente.
O agrupamento contínuo também ajuda a gerenciar os pesos do modelo de forma eficiente durante a inferência. A taxa de transferência e a latência são aprimoradas em todos os percentis ao usar lotes contínuos na inferência LLM. A inferência LLM é vinculada à memória IO, não à computação, o que significa que leva mais tempo para carregar dados na GPU do que para realizar cálculos.
No entanto, a fabricação contínua normalmente exige um investimento de capital significativo, e o processo é mais complexo do que os sistemas de lotes tradicionais. Na fabricação de medicamentos, a dosagem contínua permite o monitoramento da qualidade em tempo real enquanto define lotes específicos para atender aos requisitos regulatórios.
A fabricação contínua em produtos farmacêuticos pode incorporar a dosagem para segmentos como síntese em várias etapas, onde os intermediários são isolados e validados antes de continuar em um fluxo contínuo.
Além disso, a dosagem contínua envolve tecnologia avançada de automação e sistemas de controle complexos que exigem conhecimento especializado. As operações sequenciais em dosagem contínua envolvem carregar o próximo lote pré-pesado no misturador enquanto o lote atual está sendo descarregado, criando um fluxo de trabalho tranquilo. A implementação de um sistema de dosagem contínua exige um investimento significativo em infraestrutura de hardware e software.
Esta seção descreve as principais etapas para criar uma configuração de lote eficiente para seus modelos.
Comece com os padrões e depois altere uma coisa de cada vez:
Para uma validação completa, é recomendável executar esses testes em várias iterações, usando diferentes iterações e várias iterações para cobrir uma variedade de cenários. Por exemplo, você pode variar a duração dos prompts ou os níveis de simultaneidade em cada execução para observar o comportamento do sistema.
Acompanhe-os no mínimo:
A dosagem contínua não é mágica. É uma forma prática de mantenha as GPUs ocupadas e os usuários ficam felizes quando o tráfego é irregular. Comece com tampas seguras, meça TTFT e TPS e ajuste os limites do lote onde os números dizem que é importante.
Experimente o Compute hoje
Quando estiver pronto, inicie um Endpoint vLLM na computação. Escolha hardware, defina limites e obtenha uma URL HTTPS que funcione com os SDKs do OpenAI.
O Prefill lê o prompt inteiro uma vez para configurar a memória. O Decode gera tokens passo a passo usando essa memória.
Grande o suficiente para manter a GPU ocupada durante a decodificação sem causar perda de cache. Teste com suas instruções reais e limite máximo de tokens.
Normalmente, pressão de memória ou saídas grandes. Reduza as solicitações, limite as saídas e verifique a taxa de conversão do cache.
Sim O streaming é o padrão para muitos servidores. Os usuários veem os tokens enquanto o agendador continua admitindo outras solicitações.
Não. Os nós de GPU única se beneficiam muito. A MultiGPU ajuda quando as necessidades de memória ou taxa de transferência excedem uma placa.
O ChatGPT normalmente gera tokens em uma taxa que depende do hardware e da carga subjacente, mas as taxas de transferência comuns variam de centenas a milhares de tokens por segundo em servidores otimizados.
Em média, 1.000 tokens correspondem a cerca de 750 palavras, embora isso possa variar dependendo do idioma e do método de tokenização.
Um token é uma unidade de texto usada no processamento de linguagem natural, geralmente uma peça de palavra ou subpalavra que o modelo processa durante a inferência ou o treinamento.
Os humanos geralmente lêem cerca de 200 a 300 palavras por minuto, o que se traduz aproximadamente em 250 a 400 fichas por minuto, ou cerca de 4 a 7 fichas por segundo.
TTFT significa Time To First Token, a latência medida desde o recebimento de uma solicitação até o momento em que o primeiro token da saída do modelo é gerado.
O TTFT é medido cronometrando o intervalo entre o momento em que um modelo de servidor recebe a primeira solicitação e a saída do primeiro token, geralmente rastreado em scripts de benchmarking.
O TPOT (Tokens por tempo de operação) é uma métrica de desempenho que indica quantos tokens um modelo gera por unidade de tempo de processamento, útil para avaliar a taxa de transferência.
TPS significa Tokens por segundo, uma medida da taxa de transferência do modelo durante a inferência, indicando quantos tokens são gerados a cada segundo.
O cache KV se refere ao cache de valores-chave que armazena tensores intermediários de chave e valor calculados durante o mecanismo de atenção para acelerar a geração subsequente de tokens.
O cache KV da GPU é o armazenamento de pares de valores chave na memória da GPU usado durante a inferência do modelo para otimizar os cálculos de atenção e reduzir os cálculos redundantes.
Em modelos de linguagem grandes, o cache KV contém vetores de chave e valor em cache de tokens anteriores para computar com eficiência a atenção para novos tokens sem recalcular estados anteriores.
Um cache de armazenamento de valores-chave é um método de armazenamento de dados em que os dados são armazenados como pares de chaves e valores correspondentes, permitindo uma recuperação rápida; em LLMs, esse conceito se aplica ao armazenamento em cache de cálculos intermediários.
O batching dinâmico agrupa as solicitações de inferência recebidas em lotes dinamicamente com base nos horários de chegada e nos limites de tamanho do lote, executando lotes quando cheios ou após um tempo limite para equilibrar a latência e a taxa de transferência.
O lote estático espera que um lote seja preenchido completamente antes do processamento, aumentando potencialmente a latência, enquanto o lote dinâmico processa os lotes uma vez cheios ou após um tempo definido, melhorando a latência e a utilização de recursos. O lote estático é mais apropriado quando a latência não é um problema. O batching estático pode aumentar substancialmente a latência, limitando seus casos de uso. O agrupamento estático exige uma linha de solicitações bem gerenciada para alimentar o modelo com eficiência. O batching estático pode aumentar substancialmente a latência, limitando seus casos de uso. O batching estático processa as solicitações quando um determinado número de solicitações é recebido.
No transporte, o agrupamento em lotes se refere ao agrupamento de vários pedidos ou remessas para otimizar a eficiência do transporte e reduzir custos.
No Unity, o agrupamento dinâmico é uma técnica de otimização de renderização que combina várias malhas pequenas em uma única chamada de desenho dinamicamente para melhorar o desempenho gráfico.