В тази публикация в блога ще разгледам подробности и принципи на метода LoRA (Low-Rank Adaptation Of Large Language Models - Нискорангова адаптация на големи езикови модели), докато разглеждам статията . Основният фокус на статията е да представи нова структура, която намалява разходите за фина настройка на модела, като същевременно увеличава неговата производителност. Операциите за фина настройка заемат важно място в изследванията на обработката на естествен език от известно време. Да кажем, че имате обучен модел и искате да разширите знанията му. Можете да го направите чрез фина настройка, без да обучавате модела от нулата.
Да кажем, че модел има n параметъра след обучението и трябва да го настроите фино. Ако използвате метод за пълна фина настройка, всички параметри на модела ще бъдат актуализирани. Когато разглеждаме модели, които имат милиарди параметри, актуализацията на всички параметри ще създаде проблеми с времето и съхранението. В статията се подчертават по-добрите или равни резултати за моделите RoBERTa, DeBERTa, GPT-2 и GPT-3 чрез използване на метода LoRA.
В документа се споменава, че методът LoRA е вдъхновен от проучванията на Li et. al (2018a) и Aghajanyan et al. (2020 г.). Тези проучвания подчертават, че успехът на свръхпараметризираните модели всъщност се основава на ниско вътрешно измерение. Това стана точката, която оформи хипотезата на метода LoRA.
Методът LoRA е изследване, базирано изцяло на факторизацията на ранга. При този метод две последователни матрици се добавят успоредно към някои плътни слоеве в невронните мрежи, както е показано на Фигура 1. Тези последователни матрици се формират от дадена рангова конфигурация. Фигурата по-долу показва как изглежда плътен слой след добавяне на последователните матрици за ранг. Входните променливи се изпращат както през оригиналната матрица на теглото преди тренировка, така и през първата матрица от последователните матрици. След това изходните стойности се изчисляват чрез сумиране на изходите на тези две паралелни матрици.

Методът LoRA
Невронните мрежи имат много плътни слоеве, които извършват матрични умножения. Тегловите матрици в тези слоеве всъщност са матрици с пълен ранг (всички редове и колони са независими). Но Агаданян и др. споменават в своята статия , че предварително обучените езикови модели имат ниска „вътрешна размерност“. Това оформя хипотезата за LoRA в този аспект. Така хипотезата за LoRA става, че моделите могат да се учат с нискоразмерни промени в тегловната матрица по време на адаптацията към конкретна задача.
Актуализациите на тази матрица са направени чрез матрици

разделени от нисък ранг. Тук B е dxr матрица, A е rxk матрица, докато r (ранг) е много по-малък от d и k. По време на фината настройка актуализациите на градиента на Wo са предотвратени. И двете матрици Wo и ∆W се умножават по едни и същи входни стойности и резултатите се сумират и се формира изход h= w0 + ∆Wx = w0 +BAx.
В началото на обучението те използваха произволна гаусова инициализация за стойности на матрица A и пълна нулева инициализация за стойности на матрица B. С други думи, BA е равно на нула в началото.
Приложение на LoRA в трансформаторната архитектура
Има 4 тегловни матрици Wq, Wk, Wv, Wo в модула за самовнимание и 2 тегловни матрици в MLP модула в трансформаторната архитектура. По време на адаптирането на LoRA те замразиха тежестите в модула MLP и приложиха метода към тежестите за внимание, за да поддържат обучението просто.
Предимства
- Най-големите удобства, предоставени от LoRA, са използването на памет и съхранение. Например в статията се споменава, че за модел с голям трансформатор, обучен с Adam, използването на VRAM е намалено с до 2/3, ако << r d. Това е така, защото състоянията на оптимизатора не се запазват за замразени параметри.
- За модела GPT-3 175B потреблението на VRAM намаля от 1.2TB на 350GB.
- В сценария, при който r=4 и само теглата на матриците на стойността и заявката бяха променени, размерът на контролната точка беше намален от 350GB на 35MB. Това позволи обучението да се извършва с по-малко графични процесори.
- В допълнение, тъй като няма актуализация на градиента в повечето от параметрите, беше постигнато 25% ускорение при обучение на GPT-3 175B с LoRA в сравнение с процеса на пълна фина настройка.
Статията също така споменава, че ако процесът на фина настройка е необходим за различен език, трябва да се използва целият модел вместо LoRA.
Допълнителни знания
Какво е ранг
Рангът е общият брой линейно независими колони или редове на матрица. Да предположим, че имаме матрица с n колони и всички колони са независими една от друга, тогава можем да кажем, че рангът на колоните на тази матрица е n. Отново, ако всички редове на матрица с n реда са независими един от друг, тогава можем да кажем отново, че рангът на редовете на матрицата е n.
Рангът на реда и ранга на колоната на матрицата трябва да са еднакви. Като пример можем да разгледаме матрицата по-долу.
Матрица A = [[1,2,5], [ 2, 4, 10] ]
Ако разгледаме матрицата внимателно, можем да видим, че 2-ри ред е два пъти по-голям от 1-ви ред. По същия начин 2-рата и 3-тата колона на матрицата са съответно 2 и 5 пъти по-големи от 1-вата колона. С други думи, докато има два вектора на един и същи ред на база ред в матрицата и три различни вектора на друг ред на база колона, има само един уникален вектор на база всеки ред и колона. Това означава, че рангът на матрицата е 1.
За да намерим ранга, ние преобразуваме матрицата в нейната ешелонна форма и след това изчисляваме броя на редовете, които се състоят от поне една ненулева стойност.
Какво е матрица с нисък ранг
В матриците рангът може да бъде равен или по-малък от броя на колоните или редовете. Матрици, които имат по-малки линейно независими редове или колони от текущия брой редове или колони, се наричат матрици с нисък ранг. Матриците, в които всички редове или колони са независими, се наричат матрици с пълен ранг.
Какво е рангова факторизация/декомпозиция
Можем да пренапишем матрица с ранг r като B=LR^T, като я разложим на L и R матрици. Тук L е матрица с размерности mxr, докато R^T е матрица с размерности rxn. Този процес е известен като рангово разлагане.
Значението на факторизирането на ранга:
Значението на процеса на рангова факторизация е, че той ни позволява да разделим матрица на по-малки матрици, L и R, и да ги съхраняваме на по-малко място. Това означава, че можете да съхранявате B, като съхранявате нейните множители L и R. Това намалява изискванията за съхранение на B до (m+n)r числа от mn числа надолу. Допълнителен момент, който си струва да се спомене тук, е, че след разлагането на матрица на тези две малки матрици, това позволява да се направят много изчисления за матрицата, без дори да се генерира същата матрица отново. Поради тази причина, когато се работи с матрица с нисък ранг, ранговата факторизация винаги се счита за важна първа стъпка. След ранговата факторизация изчисленията могат да се извършват много по-бързо и с използване на по-малко памет.
Освен това
За по-подробна информация относно матриците с нисък ранг можете да прочетете блога на Ethan R. Epperly и статията за LoRA . Освен това можете да разгледате подробно приложенията на LoRA, базирани на код, в хранилището на microsoft/LoRA в github.
Гизем АБАЛИ, магистър. / Ръководител на екипа