MaskLLM

MaskLLM

NVIDIA Research · Programação · Outros

MaskLLM é um método de poda de código aberto da NVIDIA Research que aprende máscaras de esparsidade N:M para encolher modelos de linguagem e cortar o custo de inferência sem perder muita precisão.

Prévia da interface de MaskLLM

Sobre MaskLLM

What Is MaskLLM

MaskLLM é um método de pesquisa para comprimir modelos de linguagem grandes. Ele faz parte da família de ferramentas de poda que removem os parâmetros dos quais o modelo não precisa, e faz isso por meio de esparsidade semiestruturada, também chamada de esparsidade N:M. A ideia é simples: em cada bloco de M pesos consecutivos, mantêm-se apenas N. Um padrão 2:4 preserva dois de cada quatro pesos, o que reduz pela metade o volume que o hardware precisa mover.

O que separa o MaskLLM é a forma como ele escolhe quais pesos manter. Métodos antigos se apoiam numa regra fixa, como descartar os menores pesos ou usar uma estimativa estatística. O MaskLLM trata a escolha da máscara como algo que o modelo aprende. Ele modela os padrões N:M como uma distribuição de probabilidade e a treina com uma técnica de amostragem chamada Gumbel Softmax, o que permite ao modelo encontrar máscaras melhores em um conjunto de dados amplo. Os pesos ficam congelados enquanto as máscaras são aprendidas, e é isso que torna a esparsidade 2:4 "sem perdas" para uma determinada tarefa.

O apelo prático está nos números. Segundo a NVIDIA, o modelo denso LLaMA-2 7B marca perplexidade de 5,12 no Wikitext, enquanto métodos de poda anteriores empurram esse valor para além de 10. O MaskLLM chega a 6,72 ou 6,78 apenas aprendendo as máscaras, com os pesos congelados. O projeto é de código aberto sob uma licença da NVIDIA, então pesquisadores e engenheiros podem rodá-lo por conta própria. Ainda assim, exige hardware com GPU de verdade e conhecimento de aprendizado de máquina.

Getting Started

  1. Instale os pacotes de Python e rode o script que baixa uma máscara já calculada do Hugging Face
  2. Carregue o modelo desejado, como o LLaMA-2 7B ou o LLaMA-3 8B, no PyTorch
  3. Aplique a máscara baixada e meça a precisão com o script de perplexidade incluído no projeto
  4. Para trabalho próprio, monte o ambiente do Megatron-LM, prepare os dados e treine uma máscara nova no seu domínio

Informações do produto

Uma visão rápida dos preços, das plataformas compatíveis e do desempenho de MaskLLM.

Plano gratuitoSim
Planos pagosFree (open-source)
PlataformaPython, PyTorch, Hugging Face Transformers, Megatron-LM, NVIDIA GPUs
DesenvolvedorNVIDIA Research
CategoriaProgramação · Outros
Data de lançamentoSep 2024
Última atualizaçãoDec 2024
Visitas ao siteN/A
Ranking global do siteN/A
Disponibilidade da APINão

Ideal para

Os usuários, tarefas e cenários em que esta ferramenta se encaixa melhor.

Usuários

  • Pesquisadores de aprendizado de máquina
  • Engenheiros de ML que fazem deploy de modelos
  • Estudantes e acadêmicos
  • Desenvolvedores de frameworks e ferramentas

Tarefas

  • Poda de modelos de linguagem
  • Compressão de um único passo
  • Esparsidade para um domínio específico
  • Transferência de esparsidade
  • Comparação de métodos de poda

Cenários

  • Uma equipe que serve um modelo de 7B com poucas GPUs
  • Pesquisa que precisa reproduzir números publicados
  • Um modelo bom no geral que falha num nicho
  • Montar um pipeline de compressão para uma família de modelos
  • Estudar limites de licença ou privacidade

Principais recursos

Máscaras N:M aprendíveis

Em vez de pontuar cada peso à mão, o MaskLLM aprende a máscara. Ele trata o conjunto de padrões N:M válidos como uma distribuição e faz amostragens durante o treino, então o modelo converge para as melhores máscaras de um conjunto de dados. Esse passo aprendível é a diferença de fundo em relação aos métodos de um único passo, que escolhem uma máscara uma vez e param.

Amostragem com Gumbel Softmax

O método toma emprestada uma técnica de amostragem discreta para tornar a escolha da máscara treinável de ponta a ponta. O Gumbel Softmax deixa os gradientes passarem por aquilo que, de outro modo, seria uma escolha dura, de tudo ou nada. É isso que permite otimizar a distribuição sobre as máscaras N:M com dados reais em vez de estimá-la.

Máscaras já calculadas para modelos do Hugging Face

O projeto já vem com máscaras prontas para você testar sem treinar nada. Há máscaras publicadas para o LLaMA-2 7B, o LLaMA-3 8B e o LLaMA-3.1 8B, cada uma treinada num subconjunto do C4, e um script baixa todas do Hugging Face e as aplica aos modelos oficiais para avaliação.

Esparsidade semiestruturada 2:4

O MaskLLM mira a esparsidade N:M, quase sempre no padrão 2:4 que preserva dois valores diferentes de zero em cada quatro pesos consecutivos. Esse formato importa porque casa com a aceleração por hardware, então o modelo menor não ocupa só menos espaço: também pode rodar mais rápido na GPU certa.

Transferência de padrões esparsos

O mesmo modelo de probabilidade que aprende uma máscara consegue levá-la de um domínio para outro. Depois de treinar uma distribuição de máscaras, ela se adapta a uma tarefa ou conjunto de dados novo com menos esforço do que treinar do zero, o que os autores chamam de transferibilidade. Isso ajuda quando um modelo precisa continuar afiado em mais de um cenário.

Pipeline de treinamento com Megatron-LM

Para treinamentos completos, o MaskLLM inclui um fluxo com o Megatron-LM que divide um modelo LLaMA entre várias GPUs. O repositório traz scripts para converter checkpoints, tokenizar dados, gerar uma máscara prévia com SparseGPT, Wanda ou poda por magnitude, treinar a máscara e cortar o checkpoint antes de publicar.

Prós e contras

Prós

  • Aprende as máscaras a partir dos dados em vez de depender de uma regra de importância fixa, o que melhora a precisão na mesma esparsidade
  • Publica código, pesos e máscaras já calculadas sob licença aberta, então os resultados podem ser reproduzidos
  • Aceita aprendizado por transferência, então uma distribuição de máscaras serve para várias tarefas e domínios
  • Funciona com modelos conhecidos como LLaMA-2, LLaMA-3 e LLaMA-3.1 por meio do Hugging Face e do Megatron-LM
  • Mantém os pesos congelados, então a esparsidade 2:4 aprendida não tem perdas para a tarefa em que foi ajustada

Contras

  • Treinar uma máscara nova exige um equipamento com várias GPUs, e o repositório aponta cerca de 40 GB de memória por GPU nas execuções completas
  • É um artefato de pesquisa, não um produto: não há suporte, nem serviço hospedado, nem API
  • As máscaras prontas saem para poucos modelos LLaMA, então outras arquiteturas obrigam você a treinar a sua
  • O ganho aparece em hardware que aceita a aceleração 2:4, o que limita o que GPUs antigas ou não NVIDIA aproveitam

Perguntas frequentes

O MaskLLM é um método de poda aprendível que adiciona esparsidade N:M a modelos de linguagem grandes. Em vez de pontuar cada peso, ele aprende quais manter modelando as máscaras como uma distribuição de probabilidade. A NVIDIA Research o publicou na NeurIPS 2024 e o código do MaskLLM é aberto no GitHub.