Simple Science

Ciência de ponta explicada de forma simples

# Informática # Computação e linguagem # Inteligência Artificial

NITRO: Uma Revolução para LLMs em NPUs

NITRO fecha a lacuna pra rodar LLMs em NPUs, melhorando performance e eficiência.

Anthony Fei, Mohamed S. Abdelfattah

― 9 min ler


NITRO Potencializa LLMs NITRO Potencializa LLMs em NPUs em termos de energia. NPUs para uma computação mais eficiente O NITRO melhora o desempenho de LLMs em
Índice

Modelos de Linguagem Grande (LLMs) são tipo os superstars do mundo tech hoje em dia. Eles ajudam em tudo, desde chatbots até várias tarefas de pesquisa. Se você já trocou ideia com um assistente virtual, então você já conheceu um LLM. Uma das áreas mais legais em tecnologia agora é criar hardware que funcione perfeitamente com esses modelos. Um desses hardwares é chamado de Unidade de Processamento Neural (NPU).

Em 2023, um fabricante de chips grande lançou o processador Intel Core Ultra, chamado Meteor Lake. Esse processador tem três componentes principais: uma unidade central de processamento (CPU), uma unidade de processamento gráfico (GPU) e uma NPU. Mas tem um porém: o software disponível para essas NPUs não suporta as necessidades dinâmicas dos LLMs logo de cara. Então, os pesquisadores estão tentando achar uma forma de fazer isso funcionar melhor. Aí que entra o conceito de NITRO.

O que é NITRO?

NITRO é uma estrutura projetada para ajudar os LLMs a rodar em NPUs. Foi construída usando Python e funciona junto com a estrutura OpenVINO da Intel. Pense nisso como o ajudante amigável que garante que os LLMs consigam gerar texto e segurar conversas de forma eficiente nesse hardware especializado.

O que tem de especial no Meteor Lake?

O processador Meteor Lake é tipo uma faca suíça, com várias partes que servem para funções diferentes. Essas partes incluem áreas para computação, gráficos, controle do sistema e manuseio de entrada/saída. Agora, se você tá imaginando uma cidade movimentada com diferentes bairros, você tá quase lá!

Entre essas partes, a NPU se destaca. Ela é especializada em rodar tarefas de IA e faz isso com baixo consumo de energia. Para ilustrar, a NPU pode lidar com uma quantidade impressionante de operações por segundo, o que é incrível pra um dispositivo pequeno. Isso a torna bem adequada pra tarefas como rodar LLMs. Mas, ela também enfrenta alguns desafios, principalmente porque só consegue trabalhar com modelos estáticos. Imagine tentar montar um quebra-cabeça onde algumas peças continuam mudando de forma enquanto você tenta encaixá-las!

O Desafio com os LLMs

Os LLMs operam de forma dinâmica; pense neles como uma receita onde você continua adicionando ingredientes enquanto cozinha. Eles criam novos dados constantemente durante o processo de geração de texto. Infelizmente, a exigência de modelo estático da maioria das NPUs não combina bem com esse processo de adicionar ingredientes.

Então, os pesquisadores têm pensado em como fazer esses modelos dinâmicos funcionarem no hardware que os suporta. É tipo tentar encaixar um prego quadrado em um buraco redondo-frustrante e muitas vezes impossível.

O Papel do OpenVINO

O OpenVINO da Intel é uma ferramenta que ajuda desenvolvedores a colocar modelos de aprendizado de máquina em vários dispositivos Intel, incluindo CPUs, GPUs e NPUs. Ele apresenta modelos em um formato específico. No entanto, quando se trata de suportar LLMs, o OpenVINO tem algumas limitações.

Os modelos que ele lida são principalmente para operações estáticas, o que significa que cada parte do modelo precisa ter uma forma definida. Quando você pensa na arquitetura transformer que os LLMs usam, isso cria um nível de dificuldade. Transformers funcionam ajustando sua estrutura com base na entrada que recebem, mas a exigência estática impede essa flexibilidade.

Um Olhada Dentro do OpenVINO

O OpenVINO é composto de arquivos de modelo específicos que detalham como o modelo opera. Cada modelo é parecido com um projeto, com nós representando várias operações (como mover dados) e arestas conectando-os. Embora essa estrutura funcione bem para muitas aplicações de aprendizado de máquina, não é ideal para LLMs devido à sua natureza dinâmica.

Em termos simples, se o OpenVINO fosse uma sala de aula, cada nó seria uma criança esperando a vez de falar. Mas como os LLMs continuam adicionando novos ‘alunos’ (ou seja, dados) a cada segundo, a configuração fica um pouco caótica.

Como Funciona o NITRO

Agora vamos nos aprofundar em como o NITRO funciona para preencher essa lacuna. A estrutura tem alguns princípios orientadores para torná-la eficaz. Primeiro, ela busca manter a essência do design do OpenVINO, o que significa que deixa o OpenVINO fazer a maior parte do trabalho pesado enquanto o NITRO entra para tarefas que precisam de ajuda extra.

Em segundo lugar, a estrutura é projetada para ser flexível. Com tantas ideias rolando na pesquisa, é importante que o NITRO consiga adaptar e lidar com várias tarefas. Por fim, manter tudo fácil de entender e manter é prioridade. Afinal, ninguém quer lidar com um emaranhado de código que precisa de um diploma pra decifrar.

Reescrevendo Modelos PyTorch

Para fazer os LLMs funcionarem bem com as NPUs, os pesquisadores frequentemente reescrevem modelos existentes. Imagine pegar um romântico clássico e adaptar para um gibi fácil de ler. É isso que tá rolando aqui. Ao reestruturar esses modelos, eles podem ser convertidos em um formato compatível com o OpenVINO.

Uma mudança envolve simplificar as entradas dos modelos. Muitos modelos existentes usam configurações complexas; isso pode resultar em conversões malsucedidas. Ao simplificar tudo, fica bem mais fácil fazer a transição de um modelo PyTorch para o formato IR do OpenVINO.

Estendendo os KV-Caches

O sistema de Cache Chave-Valor nos LLMs, que armazena dados pra acesso rápido, pode ficar complicado quando precisamos manter formas estáticas. O NITRO resolve isso estendendo os caches pra garantir que sempre haja espaço extra disponível. É tipo reservar algumas cadeiras a mais numa festa-você nunca sabe quando mais convidados podem chegar!

Movendo Embeddings Rotativos

Outra mudança envolve embeddings rotativos, que são técnicas matemáticas que ajudam os LLMs a entender o contexto. O NITRO move esses embeddings para a área de trabalho principal em vez de lidá-los separadamente. Esse ajuste ajuda a agilizar o processo e mantém tudo mais organizado.

Conversão Eficiente de Modelos

Uma vez que os modelos estão reescritos e configurados corretamente, eles estão prontos para conversão em OpenVINO IR. Mas tem um porém: modelos maiores podem rapidamente exceder os limites de memória, como empilhar muitos livros em uma prateleira. Para combater isso, os pesquisadores usam um método chamado “chunking”.

Essa técnica envolve quebrar o modelo em pedaços menores, que podem ser processados um de cada vez em vez de tentar lidar com tudo de uma vez. Essa é uma forma eficiente de gerenciar recursos e garantir transições bem-sucedidas de modelos PyTorch para OpenVINO.

A Importância da Nomeação

Enquanto os modelos estão sendo convertidos, a nomeação é crucial. Assim como ter um arquivo bem organizado, ter nomes claros para cada parte do modelo facilita tudo. Quando os nós têm nomes descritivos, simplifica o processo de encontrar e gerenciar dados durante a operação do modelo.

A Estrutura do Diretório do Modelo

Após a conversão, cada modelo é organizado em uma estrutura de diretório bem arrumada. Essa organização é essencial pra garantir que tudo seja facilmente acessível e bem definido. Se você já tentou achar algo em um armário bagunçado, vai entender o valor de uma configuração limpa!

Colocando Tudo Junto para Inferência

Uma vez que tudo está no lugar, o NITRO configura um pipeline padrão para gerar texto. Essa parte é como uma máquina bem ajustada, recebendo entradas e produzindo saídas de texto coerentes. A estrutura abstrai a complexidade pra que os desenvolvedores não precisem se preocupar com os detalhes complicados.

Avaliação de Desempenho

Os pesquisadores têm testado como esses modelos rodam na NPU comparado a outros hardwares como CPUs e GPUs. Eles montaram um laptop equipado com o processador Meteor Lake pra realizar vários testes, acompanhando quão rápido diferentes modelos conseguem gerar texto.

Embora a GPU possa ser a campeã em velocidade bruta, a NPU mostra muito potencial, especialmente pra modelos de tamanho médio. Os resultados revelam que, embora a NPU seja geralmente mais lenta que a GPU, ela ainda tem vantagens em eficiência energética. É tipo escolher entre um carro esportivo chamativo e um sedã confiável e econômico-tudo depende do que você valoriza mais!

Tratamento de Erros e Desafios

Apesar de todo o progresso, têm alguns perrengues pelo caminho. Ao testar várias configurações, os resultados nem sempre batem com o que se espera. Especificamente, surgiram problemas com certas técnicas de compressão de peso, e erros aparecem quando certas combinações são usadas.

Mas não se preocupe! Isso faz parte da jornada no desenvolvimento tecnológico. Assim como um chef às vezes tem que ajustar sua receita, os pesquisadores devem alterar seus métodos pra superar esses desafios.

NITRO vs. Outras Bibliotecas

Quando se compara o NITRO com outras bibliotecas de aceleração de NPU, os resultados mostram que o NITRO entrega desempenho significativamente melhor. A abordagem do NITRO leva a tempos de inferência mais rápidos, superando as alternativas.

No entanto, ainda existem áreas onde mais desenvolvimento pode ajudar a aumentar a eficiência e o desempenho geral.

Olhando para o Futuro

Embora o NITRO tenha avançado bastante em permitir que os LLMs rodem nas NPUs, ainda há espaço pra melhorias. Trabalhos futuros podem focar em refinar ainda mais os embeddings rotativos ou desenvolver novos métodos para agilizar todo o processo de inferência.

O objetivo final continua sendo fazer das NPUs uma opção preferida para rodar LLMs, especialmente dado seu potencial de eficiência energética. Ser consciente sobre energia é mais importante do que nunca, e as NPUs podem ser o melhor candidato pra atender a essa necessidade.

Conclusão

Na grande jogada da tecnologia, os desenvolvedores enfrentam desafios constantes pra acompanhar os avanços em LLMs e hardware. O trabalho contínuo com estruturas como o NITRO mostra promessas para futuras integrações e otimizações. À medida que a pesquisa avança e melhorias são feitas, a esperança é que veremos um mundo onde dispositivos eficientes em energia possam lidar com o pesado trabalho de IA avançada sem suar a camisa.

Então, embora a jornada tenha suas dificuldades, o caminho à frente parece promissor para as NPUs, LLMs e toda a comunidade tech. Afinal, dizem que a necessidade é a mãe da invenção, e com as demandas crescentes por sistemas mais inteligentes, podemos esperar inovações emocionantes bem ali na esquina!

Fonte original

Título: NITRO: LLM Inference on Intel Laptop NPUs

Resumo: Large Language Models (LLMs) have become essential tools in natural language processing, finding large usage in chatbots such as ChatGPT and Gemini, and are a central area of research. A particular area of interest includes designing hardware specialized for these AI applications, with one such example being the neural processing unit (NPU). In 2023, Intel released the Intel Core Ultra processor with codename Meteor Lake, featuring a CPU, GPU, and NPU system-on-chip. However, official software support for the NPU through Intel's OpenVINO framework is limited to static model inference. The dynamic nature of autoregressive token generation in LLMs is therefore not supported out of the box. To address this shortcoming, we present NITRO (NPU Inference for Transformers Optimization), a Python-based framework built on top of OpenVINO to support text and chat generation on NPUs. In this paper, we discuss in detail the key modifications made to the transformer architecture to enable inference, some performance benchmarks, and future steps towards improving the package. The code repository for NITRO can be found here: https://github.com/abdelfattah-lab/nitro.

Autores: Anthony Fei, Mohamed S. Abdelfattah

Última atualização: Dec 15, 2024

Idioma: English

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

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

Licença: https://creativecommons.org/licenses/by/4.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.

Artigos semelhantes