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. 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. Dada unha matriz da rede, de dimensión d × d {\displaystyle d\times d}, cos seus correspondentes pesos, W {\displaystyle W}, descomponse esta matriz en dúas de rango r {\displaystyle r} menor, A ∈ R d × r {\displaystyle A\in \mathbb {R} ^{d\times r}} e B ∈ R r × d {\displaystyle B\in \mathbb {R} ^{r\times d}}, r << d {\displaystyle r<<d}, tales que W ≈ A × B {\displaystyle W\approx A\times B}. Tense a igualdade se r {\displaystyle r} é igual ao rango da matriz W {\displaystyle W}; se é menor, obtense unha aproximación de baixo rango. Polo tanto, se o modelo orixinal era h
W x, {\displaystyle h
Wx, } W ∈ R d × d {\displaystyle W\in \mathbb {R} ^{d\times d}}, o modelo aplicando LoRA será h
W x + A B x {\displaystyle h
Wx+ABx}.
En canto á inicialización destas novas matrices, a matriz A {\displaystyle A} inicialízase seguindo unha distribución normal de media cero, mentres que na matriz B {\displaystyle B} tódolos seus elementos comezan inicializados a cero. 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 A {\displaystyle A} e B {\displaystyle B} ), 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.
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.
O desempeño dos modelos que se adestran con LoRA é semellante a facer axuste fino completo do modelo, sen usar este adaptador.
O deseño permite fusionar as matrices que se adestran co modelo sen introducir latencia na inferencia. Pola contra, se se carga o modelo e os pesos de LoRA por separado, esta latencia si que se pode atopar.
Pódese fusionar con outros métodos de axuste fino, como o axuste por prefixo.
Pódese utilizar un mesmo modelo preadestrado e utilizar distintos adaptadores LoRA para adestralo para diferentes tarefas, sen máis que cambiar as matrices A {\displaystyle A} e B {\displaystyle B} no proceso de axuste fino. 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.
O cambio de adaptador LoRA conséguese sen máis que cambiando as matrices A {\displaystyle A} e B {\displaystyle B} 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.
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). 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.
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.
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. 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 A {\displaystyle A} e B {\displaystyle B} reescálase polo termo α / r {\displaystyle \alpha /r}, sendo alfa un número real que funciona como taxa de aprendizaxe. É dicir, o modelo resulta en h
W x + α r A B x {\displaystyle h
Wx+{\frac {\alpha }{r}}ABx}.
No modelo visto ata agora, utilizábase α
r {\displaystyle \alpha
r}, 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 α
r {\displaystyle \alpha
r}, 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.