Simple Science

Ciência de ponta explicada de forma simples

# Informática# Inteligência Artificial# Desempenho

Acelerando Modelos de Linguagem com Decodificação Especulativa

Melhorando os tempos de resposta para modelos de linguagem grandes com uma nova abordagem adaptativa.

― 11 min ler


Aumentando a VelocidadeAumentando a Velocidadedo LLMresposta para modelos de linguagem.Métodos adaptativos reduzem o tempo de
Índice

Reducir o tempo que leva pra obter respostas de Modelos de linguagem grandes (LLMs) é super importante pra várias aplicações, tipo chatbots e assistentes virtuais. Um método chamado Decodificação Especulativa (SD) se destaca como uma boa abordagem pra acelerar as coisas. Em vez de deixar o LLM criar todas as palavras direto, a decodificação especulativa usa proxies mais rápidos pra adivinhar quais podem ser as Saídas. O LLM então verifica essas adivinhações pra garantir que sejam de alta qualidade.

Mas, usar a decodificação especulativa em sistemas reais pode ser complicado. Em alguns casos, ela não acelera as coisas quando o número de Pedidos é alto, ou se as adivinhações não são precisas. Em vez disso, pode até aumentar o tempo de resposta. Outro desafio é que não existe um comprimento único que funcione bem pra adivinhações em diferentes condições.

Pra lidar com esses problemas, a gente criou um sistema dinâmico que pode ajustar o comprimento das adivinhações com base em uma nova medida chamada Goodput. Goodput ajuda a identificar como o sistema está se saindo, medindo as adivinhações aceitas e a carga atual. A gente descobriu que usar esse sistema pode reduzir o tempo médio de pedido em até 3,2 vezes em comparação com métodos de decodificação tradicionais em várias configurações.

A Importância da Velocidade em LLMs

Quando se implanta LLMs em serviços online como motores de busca ou chatbots, a velocidade é crítica. O processo de geração dos LLMs geralmente leva tempo, porque cada palavra depende das anteriores, resultando em um ritmo lento. A decodificação especulativa tenta reduzir essa demora usando proxies mais leves e rápidos pra adivinhar várias saídas de uma vez. Isso permite que o modelo principal verifique essas adivinhações tudo de uma vez, em vez de gerar uma palavra por vez.

A decodificação especulativa pode reduzir a latência por duas razões principais. Primeiro, usar um modelo leve pra criar as adivinhações iniciais é muito mais rápido do que esperar o modelo principal gerar cada palavra. Segundo, verificar essas adivinhações demora menos do que gerar uma única palavra, o que pode resultar em várias palavras sendo criadas de uma vez, se as adivinhações estiverem corretas.

Desafios com a Decodificação Especulativa

Enquanto a decodificação especulativa mostra potencial pra acelerar pedidos únicos, incorporá-la em sistemas que lidam com muitos pedidos ao mesmo tempo apresenta desafios. Aplicações do mundo real costumam agrupar vários pedidos pra tirar o melhor proveito dos recursos de GPU. Aqui, a decodificação especulativa pode se tornar ineficiente e, em algumas situações, até aumentar o tempo de resposta.

Esse atraso acontece principalmente por causa do trabalho extra necessário pra rodar os modelos de proxy mais rápidos e verificar as adivinhações que podem não ser aceitas. Se esse esforço adicional ajuda a reduzir a latência real depende de dois fatores principais: quão precisas são as adivinhações e quanta carga o sistema está aguentando.

Quando a maioria das adivinhações é aceita, a decodificação especulativa pode proporcionar um aumento significativo de velocidade. Mas, taxas de aceitação baixas podem resultar em esforços desperdiçados. Nesses casos, o modelo principal pode acabar fazendo a maior parte do trabalho mesmo assim, o que diminuiria a velocidade.

À medida que o sistema se aproxima do seu limite lidando com muitos pedidos, fica crítico alocar os recursos de forma eficaz. Em situações de alta demanda, faz mais sentido focar na geração tradicional do que adivinhar demais. Assim, os recursos são usados de maneira eficiente, minimizando o desperdício de computação.

Especulação Adaptativa pra Diferentes Cargas

Idealmente, a decodificação especulativa deveria se ajustar automaticamente às condições do sistema, muito parecido com como serviços de streaming de vídeo ajustam a qualidade com base na velocidade da internet do espectador. Quando os pedidos são baixos, o sistema pode se dar ao luxo de fazer adivinhações amplas, usando mais poder computacional. Mas, quando a demanda é alta, o sistema deveria limitar as adivinhações pra economizar recursos.

Apesar do seu potencial, a decodificação especulativa não foi aplicada de forma eficaz em sistemas do mundo real. Estudos anteriores testaram isso principalmente com um único pedido, e trabalhos recentes olharam pra lotes maiores, mas normalmente em modelos menores ou em configurações controladas.

Nosso trabalho visa integrar a decodificação especulativa em um sistema de serviço totalmente operacional chamado vLLM. Focando em como equilibrar os custos de adivinhação com a qualidade, introduzimos o goodput como um componente vital. Goodput mede quantos tokens o sistema pode criar por segundo, levando em conta apenas aqueles tokens que são aceitos e verificados pelo modelo principal.

O que é Goodput?

Goodput é fundamental pra entender quão eficaz é a decodificação especulativa. Enquanto o throughput reflete o número de tokens gerados ao longo do tempo, o goodput olha especificamente pra taxa de tokens aceitos. Essa diferença é importante pra determinar como o sistema tá funcionando e quão longe a decodificação especulativa pode ser levada.

Goodput depende de dois fatores principais: a precisão das adivinhações e a carga do sistema. Sob carga pesada, goodput pode tornar a adivinhação especulativa menos desperdício. Por exemplo, durante períodos de pico de demanda, goodput pode ajudar a desligar a adivinhação completamente pra garantir que os recursos não sejam desperdiçados.

Quando os pedidos são mais fáceis de prever, goodput permite que o sistema aumente seu alcance de adivinhação. Assim, ele aproveita a previsibilidade de certos pedidos, levando a um desempenho melhor.

Pra aplicar goodput de forma eficaz, precisamos estimá-lo sem medições diretas. Ao prever o comprimento das adivinhações aceitas pra todos os pedidos simultaneamente, podemos selecionar comprimentos adequados com base no goodput. Um modelo simples estima o tempo de execução do lote, o que nos permite aproximar o goodput.

Utilizando goodput, desenvolvemos um framework dinâmico de decodificação especulativa que ajusta os comprimentos das adivinhações de acordo com o goodput estimado. Essa abordagem flexível pode acomodar vários métodos de decodificação especulativa, como aqueles usando modelos de rascunho ou outras técnicas como busca de prompt.

Desempenho em Diferentes Tarefas

Através de todos os métodos de decodificação especulativa e conjuntos de dados, nosso sistema visa garantir desempenho melhorado sem perder qualidade. O objetivo maior é reduzir a latência de uma forma que seja valiosa para aplicações do mundo real.

O sistema dinâmico que criamos integra a decodificação especulativa em uma configuração online que pode lidar com batching contínuo. Definindo goodput e empregando-o na tomada de decisões, buscamos encontrar o melhor comprimento para adivinhações adaptadas às condições atuais do sistema.

Testes em cinco modelos diferentes e várias tarefas mostraram uma redução de até 3,2 vezes no tempo médio de resposta em comparação com métodos de decodificação tradicionais. Esse aumento de desempenho é crucial pra tornar a decodificação especulativa viável em aplicações do mundo real.

O Funcionamento da Decodificação Especulativa

Quando os pedidos são gerenciados, a decodificação especulativa permite que o sistema gere muitas saídas potenciais em paralelo. Em cada etapa, um modelo de rascunho mais leve propõe uma gama de saídas candidatas. O modelo principal avalia essas saídas de uma vez.

Uma única etapa pode levar a múltiplas saídas para cada pedido, o que é uma mudança significativa. Por exemplo, com um modelo de rascunho sugerindo várias palavras potenciais, o modelo principal pode verificar essas adivinhações de forma mais eficiente, produzindo resultados mais rápido do que os métodos tradicionais.

Benefícios e Compensações

A decodificação especulativa tem duas vantagens principais. Primeiro, ela não altera a forma como o LLM principal gera saídas; mantém a mesma qualidade de saída que os métodos tradicionais. Segundo, sua eficácia depende muito da precisão e eficiência do modelo de rascunho.

Historicamente, as pesquisas têm buscado melhorar a precisão da decodificação especulativa. Isso pode ser feito através de modelos que usam LLMs menores como rascunhos ou outros métodos que dependem de aspectos do modelo principal.

Batching Contínuo pra Aumentar a Eficiência

Pra gerenciar efetivamente múltiplos pedidos de uma vez, o batching contínuo ajuda a melhorar a utilização da GPU, processando pedidos em tempo real. Em vez de agrupar os pedidos no começo, o batching contínuo permite processar pedidos concluídos enquanto adiciona novos.

A decodificação especulativa pode otimizar esse processo permitindo a geração de várias palavras por pedido em cada lote. Ao colocar saídas propostas em uma única rodada de verificação, pode aumentar significativamente a velocidade.

Ainda assim, a decodificação especulativa sozinha pode não levar sempre a uma melhor eficiência. À medida que as taxas de pedido aumentam, a desaceleração resultante destaca a importância de equilibrar o número de saídas propostas em relação à capacidade do sistema.

Avaliando Latência e Desempenho

Fizemos avaliações detalhadas de quão bem a decodificação especulativa funciona em diferentes cenários. Nossas análises mostraram que a decodificação especulativa é mais benéfica quando as cargas do sistema são baixas. Sob cargas mais pesadas, no entanto, ela pode às vezes levar a tempos de resposta mais longos do que simplesmente processar pedidos sem especulação.

A compensação entre o comprimento da proposta das adivinhações e o tempo de resposta prático cria um ato de equilíbrio. Comprimentos de proposta mais altos significam respostas potencialmente mais rápidas, mas também podem levar a desperdício de poder computacional.

Descobertas dos Experimentos

Em várias condições, descobrimos que a decodificação especulativa se mostra mais eficaz com recursos computacionais amplos. Modelos maiores tiveram dificuldades sob altos volumes de pedidos devido às exigências computacionais aumentadas, o que é crítico considerar pra implementação em ambientes de produção.

A habilidade do nosso sistema de se adaptar a diferentes pedidos e condições desempenha um papel enorme no seu sucesso. À medida que ajustamos pra manter a eficiência do sistema, o objetivo continua sendo garantir que ele funcione consistentemente melhor do que os métodos tradicionais em vários cenários.

Otimizando Goodput pra Uso no Mundo Real

Goodput mede quantos tokens são gerados com precisão por unidade de tempo. Isso permite que os sistemas se ajustem dinamicamente às regras da carga ambiental atual. Sua força tá em guiar a especulação com base nas condições de processamento em tempo real.

Em termos práticos, o goodput ótimo pode manter o desempenho do sistema sob várias cargas. Testando em diferentes configurações, garantimos que nosso sistema possa lidar com cenários amplamente variados, desde taxas de pedidos baixas até demandas máximas, sem sacrificar a qualidade do serviço.

Avançando com a Decodificação Especulativa

O futuro da decodificação especulativa parece promissor com as adaptações feitas para aplicações do mundo real. Ao implementar métodos adaptativos, esperamos manter o desempenho enquanto reduzimos significativamente os tempos de inferência.

A capacidade de utilizar modelos de forma flexível-até integrando com a decodificação em árvore-solidifica ainda mais o lugar da decodificação especulativa no serviço de modelos de linguagem grandes. A pesquisa e desenvolvimento contínuos em direção a modelos mais eficientes vão sem dúvida aumentar as capacidades desse framework.

Conclusão

Resumindo, otimizar a inferência para modelos de linguagem grandes através da decodificação especulativa apresenta possibilidades empolgantes. Usando um framework dinâmico informado pelo goodput, podemos reduzir significativamente os tempos de resposta enquanto mantemos a qualidade, tornando isso uma ferramenta essencial pra gerenciar plataformas online em larga escala. A integração contínua dessas técnicas avançadas vai abrir caminho pra futuros desenvolvimentos em aplicações de IA.

Fonte original

Título: Optimizing Speculative Decoding for Serving Large Language Models Using Goodput

Resumo: Reducing the inference latency of large language models (LLMs) is crucial, and speculative decoding (SD) stands out as one of the most effective techniques. Rather than letting the LLM generate all tokens directly, speculative decoding employs effective proxies to predict potential outputs, which are then verified by the LLM without compromising the generation quality. Yet, deploying SD in real online LLM serving systems (with continuous batching) does not always yield improvement -- under higher request rates or low speculation accuracy, it paradoxically increases latency. Furthermore, there is no best speculation length work for all workloads under different system loads. Based on the observations, we develop a dynamic framework SmartSpec. SmartSpec dynamically determines the best speculation length for each request (from 0, i.e., no speculation, to many tokens) -- hence the associated speculative execution costs -- based on a new metric called goodput, which characterizes the current observed load of the entire system and the speculation accuracy. We show that SmartSpec consistently reduces average request latency by up to 3.2x compared to non-speculative decoding baselines across different sizes of target models, draft models, request rates, and datasets. Moreover, SmartSpec can be applied to different styles of speculative decoding, including traditional, model-based approaches as well as model-free methods like prompt lookup and tree-style decoding.

Autores: Xiaoxuan Liu, Cade Daniel, Langxiang Hu, Woosuk Kwon, Zhuohan Li, Xiangxi Mo, Alvin Cheung, Zhijie Deng, Ion Stoica, Hao Zhang

Última atualização: 2024-06-25 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2406.14066

Fonte PDF: https://arxiv.org/pdf/2406.14066

Licença: https://creativecommons.org/publicdomain/zero/1.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes