Saltar ao contido

LoRA

Na Galipedia, a Wikipedia en galego.

LoRA (siglas de "adaptación de baixo rango", do inglés, Low-Rank Adaptation) é un método de axuste fino que conxela os pesos do modelo preadestrado e no seu lugar adestra pesos novos de dúas matrices con rango menor, reducindo considerablemente o número de parámetros a adestrar. Xeralmente, aplícase LoRA nas diferentes capas de atención dos transformadores, conxelando os pesos de cada capa, e substituíndoos pola súa correspondente descomposición nas dúas matrices de menos rango. Foi introducido no 2021, por investigadores de Microsoft, no artigo LoRA: Low-Rank Adaptation of Large Language-Models (LoRA: adaptación de baixo rango de grandes modelos de linguaxe), onde destacan os baixos tempos de execución e o bo funcionamento do modelo pese ao seu número reducido de parámetros.[1]

Arquitectura de LoRA
Funcionamento de LoRA. Adéstranse as matrices A e B, mentres que os pesos W quedan fixos. Arquitectura presentada no artigo orixinal.[1]

Arquitectura

[editar | editar a fonte]

LoRA é un método que se pode aplicar a calquera matriz dunha rede neural, aínda que deseñouse para incluírse nas capas de atención dos transformadores.[2] Dada unha matriz da rede, de dimensión , cos seus correspondentes pesos, , descomponse esta matriz en dúas de rango menor, e , , tales que .[3] Tense a igualdade se é igual ao rango da matriz ; se é menor, obtense unha aproximación de baixo rango.[4] Polo tanto, se o modelo orixinal era , o modelo aplicando LoRA será .[1]

En canto á inicialización destas novas matrices, a matriz inicialízase seguindo unha distribución normal de media cero, mentres que na matriz tódolos seus elementos comezan inicializados a cero.[1]

Este método posúe moitas vantaxes con respecto a facer un axuste fino sobre o modelo orixinal.

  • O adestramento reduce o considerablemente uso do hardware, pois ao usar optimizadores específicos para o adaptador LoRA (matrices e ), e seren estes poucos parámetros a adestrar, non hai que gardar en memoria tantos datos, alén de non ter que facer tantas operacións.[1]
  • O tempo de adestramento é moito menor que adestrar só o modelo base, pois o número de parámetros, e por tanto, o número de operacións, para o axuste fino é considerablemente menor ao do modelo inicial.[1]
  • O desempeño dos modelos que se adestran con LoRA é semellante a facer axuste fino completo do modelo, sen usar este adaptador.[2]
  • O deseño permite fusionar as matrices que se adestran co modelo sen introducir latencia na inferencia.[1] Pola contra, se se carga o modelo e os pesos de LoRA por separado, esta latencia si que se pode atopar.[2]
  • Pódese fusionar con outros métodos de axuste fino, como o axuste por prefixo.[1]
  • Pódese utilizar un mesmo modelo preadestrado e utilizar distintos adaptadores LoRA para adestralo para diferentes tarefas, sen máis que cambiar as matrices e no proceso de axuste fino.[1]

Diferentes adaptadores

[editar | editar a fonte]

Unha das vantaxes comentadas é que se se queren crear varios modelos que resolvan diferentes problemas, pero que todos teñen algo en común, pódese partir dun modelo preadestrado, e utilizar distintos adaptadores LoRA. É dicir, o modelo preadestrado aprendeu unhas cousas e LoRA amplifica as características importantes para as tarefas específicas. Por tanto, con isto gáñase tempo de execución ao non ter que adestrar moitos modelos diferentes e poder partir sempre do mesmo modelo base só adestrando uns poucos parámetros.[1]

O cambio de adaptador LoRA conséguese sen máis que cambiando as matrices e no proceso de axuste fino. Estes adaptadores pódense gardar e cargar para utilizalos no momento que fagan falta, incluso poden mesturarse entre eles para sacar o maior proveito en determinados problemas, chegando a un compromiso entre tempo de adestramento e eficiencia na resolución do problema.[1]

Un exemplo de cando resulta útil utilizar varios adaptadores pode ser cando temos un modelo base que está adestrado para recoñecer a lingua inglesa. Ese sería o modelo preadestrado. A continuación, queremos adestralo para que saiba recoñecer francés e alemán. En vez de facer o procedemento normal de facerlle axuste fino ao modelo completo, creamos un adaptador LoRA para o francés e outro para o alemán. Deste xeito, no proceso de axuste fino, adéstranse os pesos dos diferentes adaptadores LoRA, e o modelo recoñecerá francés e alemán, sen que isto inflúa negativamente en como recoñecía o inglés (quitando os adaptadores tense o modelo inicial que recoñece só inglés, sen influencias do francés ou alemán).[5]

Rango óptimo

[editar | editar a fonte]

Un hiperparámetro a seleccionar cando se fai un axuste fino con LoRA é o rango das matrices. Para tarefas de procesamento de texto, un rango de 8 é adecuado, aínda que dependendo do problema a resolver, pódese probar con diferentes valores que se poidan axustar mellor, tales como 2, 4 ou 64.[1]

Nos problemas de visión por computador, estes rangos tamén poden ser axeitados, aínda que cumpre estudalo especificamente para o problema a resolver, xa que os experimentos que fixeron os seus creadores foron sobre o procesamento da linguaxe natural.[1]

Normalmente, é beneficioso aumentar o rango canto máis difire o que hai que aprender do que xa sabe o modelo preadestrado, pois o número de parámetros aumenta, dándolle máis flexibilidade ao modelo.[6]

Parámetro alfa

[editar | editar a fonte]

O modelo LoRA explicado ata agora é o modelo máis utilizado e simple. No modelo ampliado, a saída da multiplicación das matrices e reescálase polo termo , sendo alfa un número real que funciona como taxa de aprendizaxe. É dicir, o modelo resulta en .[7]

No modelo visto ata agora, utilizábase , polo que os pesos adestrados no axuste fino non se escalaban. Un valor de alfa maior que o rango indica que se lle quere dar máis importancia aos pesos adestrados de LoRA, pois o valor que obteñamos do axuste fino agrándase, ao estar multiplicado por un número maior que 1. Un valor de alfa menor que o rango daríalle máis importancia aos pesos do modelo base. En xeral, aconséllase tomar , aínda que dependendo do problema a resolver, cómpre probar diferentes valores deste hiperparámetro para ver cal é o máis axeitado á nosa casuística.[6]

  1. 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 Hu, Edward; Shen, Yelong; Wallis, Phillip; Allen-Zhu, Zeyuan; Li, Yuanzhi; Wang, Shean; Wang, Lu; Chen, Weizhu (16 de outubro do 2021). "LoRA: Low-Rank Adaptation of Large Language Models". arXiv (en inglés). arXiv:2106.09685. 
  2. 2,0 2,1 2,2 "LoRA". huggingface.co (en inglés). Consultado o 2024-08-27. 
  3. Hu, Edward (09-01-2024). "What is Low-Rank Adaptation (LoRA), explained by the inventor" (en inglés). Consultado o 27-08-2024. 
  4. Stansbury, Dustin (16-08-2020). "SVD and Data Compression Using Low-rank Matrix Approximation". The Clever Machine (en inglés). Consultado o 27-08-2024. 
  5. "LoRA". huggingface.co (en inglés). Consultado o 28-08-2024. 
  6. 6,0 6,1 "What rank (r) and alpha to use in LoRA in LLM fine-tuning?". Medium (en inglés). 7 de novembro do 2023. Consultado o 28-08-2024. 
  7. "LoRA: Low-Rank Adaptation from Scratch — Code and Theory". Medium (en inglés). 3 de agosto do 2023. Consultado o 28-08-2024. 

Véxase tamén

[editar | editar a fonte]

Outros artigos

[editar | editar a fonte]