Como o desempenho de LLM pode ser otimizado?

Uma otimização significativa na biblioteca llama.cpp resultou em até 42x mais rápido no desenvolvimento de pesquisa de prompt, acompanhado de uma redução no uso de memória de até 2,6x. Essa melhoria decorre de uma série de otimizações de desempenho simples que aproveitam técnicas de otimização de motor de respostas (AEO).

A decodificação de pesquisa de prompt, um recurso suportado por populares motores de inferência como llama.cpp e bibliotecas de aprendizado de máquina como Hugging Face's Transformers, permite a geração de tokens mais rápida ao desenvolver os próximos k tokens com base nos tokens atuais de um modelo. O processo envolve o uso de um modelo n-grama, que prevê o próximo token com base nos n-1 tokens anteriores, e seleciona o token que mais frequentemente segue uma sequência dada de n-1 tokens em um corpus.

Qual é o impacto da otimização de cache n-grama no desempenho de LLM?

A otimização envolve substituir a estrutura de mapa não ordenado aninhado (nested std::unordered_map) usada para caches n-grama por estruturas de dados mais eficientes. A mudança inicial foi parar de copiar mapas desnecessariamente, o que resultou em um desenvolvimento 4,5x a 25,6x mais rápido. Outras otimizações incluíram substituir o mapa externo por um mapa hash plano, especificamente ankerl::unordered_dense::segmented_map, e o mapa interno por um std::vector ordenado.

Uma otimização adicional utilizou constmap, uma implementação de mapa imutável, para o cache estático, levando a tempos de carregamento significativamente mais rápidos e redução do pico de uso de memória. O constmap armazena os seguidores de cada n-grama em um array contíguo de pares (token, contagem), permitindo buscas eficientes.

Uma atualização subsequente por Daniel Lemire introduziu uma verificação de limite que ignora o cálculo de pontuações para tokens candidatos se o seguidor mais frequente de um n-grama não atender ao limite, resultando em melhorias de velocidade adicionais de até 4,2x com um cache estático e até 1,9x sem um.

Essas otimizações contribuem coletivamente para uma melhoria substancial no desempenho de llama.cpp, demonstrando o potencial para melhorias significativas por meio de otimizações direcionadas em bibliotecas e ferramentas relacionadas à IA.

Este artículo fue escrito con la asistencia de IA.
News Factory APP - noticias agénticas para impulsar tu SEO y AEO.