Embora o “L” em modelos de linguagem grandes (LLMs) sugira escala massiva, a realidade é mais nuance. Alguns LLMs contêm trilhões de parâmetros, e outros operam efetivamente com muito menos.
Confira alguns exemplos reais e as implicações práticas de diferentes tamanhos de modelo.
Tamanhos e classes de tamanho de LLMs
Como desenvolvedores da Web, tendemos a pensar que o tamanho de um recurso é o tamanho do download. O tamanho documentado de um modelo se refere ao número de parâmetros dele. Por exemplo, Gemma 2B significa Gemma com dois bilhões de parâmetros.
Os LLMs podem ter centenas de milhares, milhões, bilhões ou até trilhões de parâmetros.
LLMs maiores têm mais parâmetros do que os menores, o que permite capturar relações de linguagem mais complexas e processar comandos diferenciados. Elas também costumam ser treinadas com conjuntos de dados maiores.
Você deve ter notado que certos tamanhos de modelo, como 2 bilhões ou 7 bilhões, são comuns. Por exemplo, Gemma 2B, Gemma 7B ou Mistral 7B. As classes de tamanho de modelo são agrupamentos aproximados. Por exemplo, o Gemma 2B tem aproximadamente 2 bilhões de parâmetros, mas não exatamente.
As classes de tamanho de modelo oferecem uma maneira prática de avaliar o desempenho do LLM. Pense neles como classes de peso no boxe: modelos na mesma classe de tamanho são mais comparáveis. Dois modelos 2B devem oferecer desempenho semelhante.
Sendo assim, um modelo menor pode ter o mesmo desempenho de um modelo maior para tarefas específicas.
![Captura de tela das caixas de seleção de tamanho do modelo HuggingFace.](https://web.developers.google.cn/static/articles/llm-sizes/image/model-sizes-hugging-face.png?authuser=5&hl=pt-br)
Embora os tamanhos de modelo para os LLMs de última geração mais recentes, como GPT-4 e Gemini Pro ou Ultra, nem sempre sejam divulgados, acredita-se que eles estejam nas centenas de bilhões ou trilhões de parâmetros.
Nem todos os modelos indicam o número de parâmetros nos nomes. Alguns modelos já vêm sufixados com o número de versão. Por exemplo, Gemini 1.5 Pro se refere à versão 1.5 do modelo (após a versão 1).
LLM ou não?
Quando um modelo é muito pequeno para ser um LLM? A definição de LLMs pode ser fluida na comunidade de IA e ML.
Alguns consideram apenas os maiores modelos com bilhões de parâmetros como LLMs verdadeiros, enquanto modelos menores, como o DistilBERT, são considerados modelos de PLN simples. Outros incluem modelos menores, mas ainda poderosos, na definição de LLM, como o DistilBERT.
LLMs menores para casos de uso no dispositivo
LLMs maiores exigem muito espaço de armazenamento e muito poder de computação para inferência. Eles precisam ser executados em servidores dedicados e com hardware específico (como TPUs).
Uma coisa que nos interessa, como desenvolvedores da Web, é se um modelo é pequeno o suficiente para ser transferido por download e executado no dispositivo de um usuário.
Mas essa é uma pergunta difícil de responder. A partir de hoje, não há uma maneira fácil de saber "esse modelo pode ser executado na maioria dos dispositivos intermediários", por alguns motivos:
- Os recursos do dispositivo variam muito de acordo com a memória, as especificações de GPU/CPU e muito mais. Um smartphone Android simples e um laptop NVIDIA® RTX são muito diferentes. Você pode ter alguns pontos de dados sobre quais dispositivos seus usuários têm. Ainda não temos uma definição de um dispositivo de referência usado para acessar a Web.
- Um modelo ou framework em que ele é executado pode ser otimizado para execução em determinado hardware.
- Não há uma maneira programática de determinar se um LLM específico pode ser transferido por download e executado em um dispositivo. A capacidade de download de um dispositivo depende da quantidade de VRAM disponível na GPU, entre outros fatores.
No entanto, temos um pouco de conhecimento empírico: hoje, alguns modelos com alguns milhões ou bilhões de parâmetros podem ser executados no navegador em dispositivos de nível do consumidor.
Exemplo:
- Gemma 2B com a API MediaPipe LLM Inference (mesmo adequada para dispositivos somente CPU). Teste.
- DistilBERT com Transformers.js.
Esse é um campo emergente. O cenário deve evoluir:
- Com as inovações da WebAssembly e da WebGPU, a compatibilidade com a WebGPU tem mais bibliotecas, novas bibliotecas e otimizações, esperando que os dispositivos dos usuários sejam cada vez mais capazes de executar com eficiência LLMs de vários tamanhos.
- LLMs menores e de alto desempenho podem se tornar cada vez mais comuns com técnicas de redução emergentes.
Considerações para LLMs menores
Ao trabalhar com LLMs menores, sempre considere o desempenho e o tamanho do download.
Desempenho
A capacidade de qualquer modelo depende muito do caso de uso. Um LLM menor ajustado ao seu caso de uso pode ter um desempenho melhor do que um LLM genérico maior.
No entanto, dentro da mesma família de modelos, os LLMs menores são menos capazes do que os maiores. Para o mesmo caso de uso, você normalmente precisa fazer mais trabalhos de engenharia de comando ao usar um LLM menor.
![Captura de tela do painel "Network" do Chrome DevTools.](https://web.developers.google.cn/static/articles/llm-sizes/image/performance.png?authuser=5&hl=pt-br)
Fonte: HuggingFace Open LLM Leaderboard, abril de 2024
Tamanho do download
Mais parâmetros significam um tamanho de download maior, o que também afeta se um modelo, mesmo que seja considerado pequeno, pode ser razoavelmente transferido por download para casos de uso no dispositivo.
Embora existam técnicas para calcular o tamanho de download de um modelo com base no número de parâmetros, isso pode ser complexo.
Desde o início de 2024, os tamanhos de download de modelos raramente são documentados. Portanto, para os casos de uso no dispositivo e no navegador, recomendamos analisar o tamanho do download empiricamente, no painel Rede do Chrome DevTools ou com outras ferramentas para desenvolvedores do navegador.
![Captura de tela do painel "Network" do Chrome DevTools.](https://web.developers.google.cn/static/articles/llm-sizes/image/download-size.png?authuser=5&hl=pt-br)
O Gemma é usado com a API MediaPipe LLM Inference. O DistilBERT é usado com o Transformers.js.
Técnicas de redução de modelos
Existem várias técnicas para reduzir significativamente os requisitos de memória de um modelo:
- Adaptação de classificação baixa (LoRA, na sigla em inglês): técnica de ajuste minucioso em que os pesos pré-treinados são congelados. Leia mais sobre a LoRA.
- Remoção: remover pesos menos importantes do modelo para reduzir o tamanho dele.
- Quantização: redução da precisão dos pesos de números de ponto flutuante (como 32 bits) para representações de bits mais baixos (como, 8 bits).
- Destilação de conhecimento: treinamento de um modelo menor para imitar o comportamento de um modelo maior e pré-treinado.
- Compartilhamento de parâmetros: use os mesmos pesos para várias partes do modelo, reduzindo o número total de parâmetros exclusivos.