LoRA
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
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]
Vantaxes
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
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
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
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]