Recursos/Treinamento de modelo/O que acontece durante o treinamento

Método

QLoRA (LoRA de 4 bits)

O QLoRA treina um adaptador LoRA comum em um modelo base armazenado em 4 bits em vez de 16. A memória de treinamento cai para cerca de um terço, de modo que a mesma máquina pode fazer o ajuste fino de um modelo cerca de três vezes maior, com algum custo na velocidade.

Capítulo 65 min de leitura5 referências

O que é

O QLoRA, abreviação de LoRA quantizado, combina duas ideias. A quantização armazena cada número em menos bits. O LoRA congela o modelo base e treina um pequeno adaptador ao lado dele. Como a base está congelada, ela nunca precisa de gradientes ou do estado do otimizador, podendo ser armazenada de forma compacta; apenas o adaptador precisa permanecer em uma precisão adequada para o aprendizado. O QLoRA mantém a base congelada em 4 bits, um quarto dos 16 habituais, e treina o mesmo adaptador LoRA por cima em 16 bits.

Ele foi introduzido por Dettmers et al. em 2023. O artigo deles realizou o ajuste fino de um modelo de 65 bilhões de parâmetros em uma única GPU de 48 GB, onde o ajuste fino regular de 16 bits exigiria mais de 780 GB, preservando o desempenho da tarefa do ajuste fino de 16 bits.

BASE CONGELADA · 4 BITSL1L2L3L4L5L6L7L8descompactada para 16 bitspara esta camada, depois descartadaadaptador · 16 bitsMEMÓRIA PARA TREINAR~27 GB livres em um laptop de 36 GB8B~19 GB~9 GB14B~33 GB~13 GB27–32B~60–70 GB~22–26 GBLoRA · base de 16 bitsQLoRA · base de 4 bits
Parte superior: a base congelada é armazenada em 4 bits e cada camada é descompactada para 16 bits apenas enquanto é computada; o pequeno adaptador LoRA ao lado de cada camada é treinado em 16 bits. Parte inferior: memória aproximada para treinar, em comparação com os cerca de 27 GB que um laptop de 36 GB tem livres após o sistema operacional. Valores ilustrativos baseados em uma regra prática comum.

Como funciona

Um peso de 16 bits ocupa 2 bytes; um de 4 bits ocupa meio byte. Comprimir um modelo treinado de forma tão intensa sem arruiná-lo depende de três ingredientes do artigo:

  • NormalFloat de 4 bits (NF4). Os pesos treinados seguem aproximadamente uma curva de sino centrada em zero. O NF4 posiciona seus 16 valores possíveis para corresponder a essa forma, de modo que mais deles caiam onde a maioria dos pesos está. No artigo, ele superou os números inteiros e de ponto flutuante comuns de 4 bits.
  • Quantização dupla. Os pesos são quantizados em pequenos blocos, cada um com sua própria constante de escala, e essas constantes se somam. O QLoRA também quantiza as constantes, reduzindo seu custo de cerca de 0,5 para cerca de 0,13 bits por peso: uma economia de aproximadamente 3 GB em um modelo de 65B.
  • Otimizadores paginados. Quando um exemplo longo causa um pico repentino de memória, o estado do otimizador é movido momentaneamente para a memória comum da CPU, em vez de a execução falhar.

Durante as passagens direta e reversa, os pesos de 4 bits de cada camada são descompactados (desquantizados) para 16 bits, usados para a aritmética daquela camada e, em seguida, descartados. Os gradientes fluem através da base congelada para o adaptador, que é a única parte que muda. A qualquer momento, a memória retém todo o modelo em 4 bits, mais o equivalente a uma camada de pesos de 16 bits.

Por que a base encolhe para cerca de um quarto
bytes per weight of the frozen base
  16-bit (bf16)                              2 bytes
  4-bit NF4 + double-quantised constants  ≈ 0.52 bytes   (≈ 4.13 bits)

an 8B model, frozen base only
  16-bit   8 × 10⁹ × 2 bytes      ≈ 16 GB
  4-bit    8 × 10⁹ × 0.52 bytes   ≈  4.1 GB
Um modelo de 8B em uma GPU de 16 GB (ilustrativo)
  1. LoRA em uma base de 16 bits: cerca de 16 GB apenas de pesos congelados. Com o adaptador, o estado do seu otimizador e as ativações, uma regra prática comum resulta em cerca de 19 GB. Não cabe.
  2. QLoRA: a base encolhe para cerca de 4–5 GB. Algumas partes, como as camadas de normalização e, frequentemente, as camadas de embedding e de saída, geralmente permanecem em 16 bits. Com o adaptador e a memória de trabalho, o total é de cerca de 9 GB, o que cabe com folga.
  3. O adaptador tem exatamente o mesmo tamanho de um adaptador LoRA do mesmo rank: dezenas de MB.
  4. A contrapartida: cada etapa é um pouco mais lenta, porque cada camada é descompactada em tempo real.
ModeloLoRA (base de 16 bits)QLoRA (base de 4 bits)
8B~19 GB~9 GB
14B~33 GB~13 GB
27–32B~60–70 GB~22–26 GB

Estes são os totais para treinar, incluindo a memória de trabalho, e é por isso que ficam acima dos 4–5 GB que a página de ajuste fino completo fornece para a base de 4 bits de um modelo de 7B antes das ativações. Um laptop de 36 GB com memória compartilhada, com cerca de 27 GB livres depois que o sistema operacional consome sua parte, pode treinar um modelo de 27–32B com o QLoRA, contra cerca de 10B com o LoRA simples.

Quanto custa e quando usar

  • Velocidade. Descompactar cada camada a cada etapa adiciona trabalho, portanto, o treinamento é um pouco mais lento do que o LoRA no mesmo modelo.
  • Qualidade. Os resultados são muito próximos aos do LoRA. O artigo igualou o ajuste fino de 16 bits em seus benchmarks; pequenas diferenças ainda podem aparecer na sua própria avaliação, portanto, compare com uma execução de avaliação em vez de presumir.
  • O resultado. Ainda é um adaptador. Carregue-o no modelo base normal de 16 bits ou em sua cópia de 4 bits; o adaptador em si não muda de tamanho.
  • Quando. Use o QLoRA quando o modelo desejado não couber com o LoRA. Se couber, o LoRA simples é mais rápido para o mesmo resultado.

As configurações

Quantização (QLoRA)Típico Desativado se o modelo couber com LoRA; ativado se não couber#

Se a base congelada é carregada em 4 bits. Desativado treina um adaptador LoRA normal em uma base de 16 bits: mais rápido por etapa, mas exige cerca de três vezes mais memória. Ativado treina o QLoRA, a escolha ideal quando o modelo desejado não caberia de outra forma. Aplica-se apenas a adaptadores: um ajuste fino completo altera todos os pesos, portanto, cada peso deve permanecer em uma precisão treinável.

Precisão de computaçãoTípico bf16 quando a GPU oferece suporte#

O formato numérico no qual os pesos de 4 bits são descompactados para a aritmética de cada camada, e o formato no qual o adaptador é treinado. O bf16 (bfloat16) mantém o intervalo de floats de 32 bits em 16 bits, de modo que os valores raramente sofrem overflow; as GPUs NVIDIA oferecem suporte a ele a partir da geração Ampere. GPUs mais antigas, como a T4, geralmente computam em fp16, que possui um intervalo menor.

Erros comuns

  • Escolher o QLoRA quando o modelo já cabe com o LoRA. Isso apenas adiciona tempo de treinamento.
  • Esperar um arquivo de resultado menor. O adaptador tem o mesmo tamanho de um adaptador LoRA; apenas a memória de treinamento encolhe.
  • Tentar usar o QLoRA para fazer um ajuste fino completo caber. Ele se aplica apenas a adaptadores.
  • Começar a partir de um modelo que já foi publicado compactado (FP8, MXFP4). O próprio QLoRA quantiza um modelo de precisão total, portanto, ele começa a partir da versão BF16.
  • Carregar o adaptador em um modelo diferente, ou em uma versão diferente dele, daquele em que foi treinado.

Referências e leitura complementar

Fontes externas abrem em uma nova aba.

  1. 01QLoRA: Efficient Finetuning of Quantized LLMsDettmers et al., 2023 · arXiv · arxiv.orgO artigo original: NF4, quantização dupla, otimizadores paginados e o resultado de 65B em uma única GPU.
  2. 02Making LLMs even more accessible with bitsandbytes, 4-bit quantization and QLoRAHugging Face blog, 2023 · huggingface.coUm guia prático e acessível sobre o carregamento em 4 bits e o treinamento QLoRA.
  3. 03BitsandbytesHugging Face Transformers docs · huggingface.coAs opções de carregamento em 4 bits: NF4, quantização dupla e o dtype de computação.
  4. 04QuantizationHugging Face PEFT docs · huggingface.co
  5. 05LLM.int8(): 8-bit Matrix Multiplication for Transformers at ScaleDettmers et al., 2022 · arXiv · arxiv.orgO trabalho anterior em 8 bits que deu origem à biblioteca de quantização do QLoRA.

Transforme semanas de trabalho especializado em minutos

Veja como o Scalata se adapta à sua equipe, aos seus dados e aos seus Controles.

Fale com vendas