Calculadora de Parâmetros LoRA
Entradas
| Camadas | 32 |
|---|---|
| Módulos adaptados por camada | 4 |
| Tamanho oculto | 4.096 |
| Rank do LoRA | 8 |
Calculadora de Parâmetros LoRA
Estime quantos parâmetros treináveis um fine-tune com LoRA adiciona, e a memória de otimizador que ele exige, a partir do número de camadas, dos módulos adaptados por camada, do tamanho oculto e do rank do LoRA.
Entradas
Arquitetura do modelo
Adaptador LoRA
Resultados
Insira um valor para ver os resultados.
Detalhes
Parâmetros LoRA
A Adaptação de Baixo Posto, ou LoRA, é a forma mais comum de fazer o fine-tune de um grande modelo de linguagem com orçamento limitado. Em vez de atualizar todos os pesos, ela congela o modelo base e treina um pequeno par de matrizes de baixo posto ao lado de cada matriz de pesos adaptada. O resultado se comporta quase como um fine-tune completo, mas tocando uma fração mínima dos parâmetros. Esta calculadora estima a quanto essa fração corresponde, e quanta memória de otimizador ela exige, a partir do formato do modelo e do rank do adaptador.
Como o LoRA reduz o conjunto treinável
Uma matriz de pesos de transformer mapeia um vetor oculto em outro, então, para uma camada quadrada, ela contém cerca de valores. Fazer o fine-tune de todos eles é caro: o otimizador precisa armazenar gradientes e estatísticas correntes para cada um. O LoRA substitui essa atualização densa por um produto de duas matrizes estreitas — uma de formato e outra de formato , onde o rank é muito menor que . Os pesos base nunca se movem; apenas esses dois fatores são treinados, e na inferência o produto deles é somado de volta à matriz original.
Como cada matriz adaptada contribui com valores treináveis — e quando as larguras de entrada e saída são iguais —, o conjunto treinável fica, em geral, bem abaixo de um por cento do modelo completo. É isso que torna o LoRA prático em um único acelerador.
A fórmula
Com camadas, módulos adaptados por camada, rank e tamanho oculto , a contagem de parâmetros treináveis é
P=L⋅m⋅2⋅r⋅dO Adam em precisão mista mantém cerca de dezesseis bytes de estado de otimizador e de pesos mestres por parâmetro treinável — a cópia mestre de 32 bits, mais as estimativas de primeiro e segundo momento —, então a memória de otimizador em megabytes é
M=10616PIsso conta apenas o estado do adaptador. O modelo base congelado ainda ocupa memória para seus pesos, mas não precisa de gradientes nem de estado de otimizador, que é de onde vem a economia.
Exemplo resolvido
Tome um modelo com 32 camadas, adaptando as quatro projeções de atenção em cada camada, com rank 8 e um tamanho oculto de 4096:
P=32×4×2×8×4096=8388608Isso dá cerca de 8,39 milhões de parâmetros treináveis. O estado do otimizador é
M=10616×8388608≈134,2 MBPara um modelo base de sete bilhões de parâmetros, esses 8,39 milhões de adaptadores são cerca de um décimo de um por cento do todo — e ainda assim são suficientes para especializar o modelo para muitas tarefas posteriores.
Escolhendo o rank e os módulos
O rank é o principal botão de capacidade. Ranks de 4 a 8 são comuns para adaptações leves de tarefa; de 16 a 64 dão mais margem quando a tarefa-alvo está distante do treinamento do modelo base. Dobrar o rank dobra tanto os parâmetros treináveis quanto a memória de otimizador, então vale a pena aumentá-lo apenas quando um rank menor subajusta. A entrada de módulos por camada reflete quais matrizes recebem um adaptador: duas para apenas query e value, quatro para o bloco de atenção completo, ou mais se as matrizes feed-forward forem incluídas.
Para comparar o adaptador com o tamanho do modelo completo, veja a Calculadora de Número de Parâmetros do Transformer. Para dimensionar a memória total de uma execução de treinamento, incluindo os pesos congelados e as ativações, veja a Calculadora de VRAM para Treinamento de LLM.
Perguntas frequentes (FAQ)
O que o rank do LoRA controla?
O rank define a dimensão da atualização de baixo posto adicionada a cada matriz de pesos adaptada. Um rank maior dá ao adaptador mais capacidade de capturar mudanças em relação ao modelo base, ao custo de mais parâmetros treináveis e mais memória de otimizador, que crescem linearmente com o rank. Um rank menor é mais compacto e mais rápido, mas pode subajustar tarefas mais difíceis.
A maioria dos fine-tunes usa um rank entre 4 e 64, com 8 ou 16 como ponto de partida comum; o melhor valor depende do quanto a tarefa-alvo difere do modelo base.
Quão menor é um fine-tune com LoRA em relação ao fine-tune completo?
O LoRA treina apenas os adaptadores de baixo posto e congela os pesos base, então o conjunto treinável costuma ficar bem abaixo de um por cento do modelo completo. Um modelo de sete bilhões de parâmetros adaptado com um rank modesto frequentemente tem apenas alguns milhões de parâmetros treináveis.
Como o estado do otimizador escala com os parâmetros treináveis, e não com os parâmetros totais, a economia de memória é grande. O tamanho do modelo completo, para comparação, pode ser estimado com a calculadora parameter-count-from-architecture.
Quais módulos costumam ser adaptados?
A escolha mais comum são as matrizes de projeção de atenção — query, key, value e output — o que corresponde a quatro módulos por camada. Algumas receitas adaptam apenas as projeções query e value (dois módulos), enquanto outras acrescentam as matrizes feed-forward para uma cobertura mais ampla, a um custo maior de parâmetros. Defina a entrada de módulos por camada de acordo com as matrizes que sua configuração visa.
Aviso legal
Esta estimativa assume matrizes adaptadas quadradas e conta apenas os fatores LoRA e seu estado de otimizador Adam em precisão mista, a cerca de 16 bytes por parâmetro. Ela exclui o modelo base congelado, ativações, gradientes de parâmetros que não são do adaptador e qualquer ajuste de bias ou embedding. Trate-a como um número de planejamento, não como uma contabilidade exata de memória.
Próximas sugestões
Calculadora de VRAM para Treinamento de LLM
Estime a VRAM de GPU necessária para fazer fine-tuning completo de um modelo de linguagem grande a partir do número de parâmetros, da escolha do otimizador e da memória de ativações, usando a regra do Adam em precisão mista de 16 bytes por parâmetro.