Трансформер (архітектура глибокого навчання)

модель машинного навчання

Трансфо́рмер (англ. Transformer) — це архітектура глибокого навчання, що ґрунтується на механізмі багатоголової уваги, запропонована в статті 2017 року «Увага — це все, що вам треба».[1] Вона не має рекурентних вузлів, і відтак вимагає менше часу на тренування, ніж попередні рекурентні нейронні архітектури, як-от довга короткочасна пам'ять (ДКЧП),[2] і її пізнішу видозміну широко використовують для тренування великих мовних моделей на великих (мовних) наборах даних, як-от корпусі Вікіпедії та Common Crawl[en].[3] Вхідний текст розбивається на n-грами, закодовані як токени[en], й кожен токен перетворюється на вектор за допомогою пошуку таблицею вкладення слів. На кожному шарі кожен токен відтак узгоджується в межах контекстного вікна з контекстом інших (немаскованих) токенів за допомогою паралельного механізму багатоголової уваги, що дозволяє підсилювати сигнал для ключових токенів, і пригнічувати менш важливі токени. Стаття про трансформер, опублікована 2017 року, ґрунтується на механізмі уваги на основі softmax, запропонованому 2014 року Багдановим зі співавт. для машинного перекладу,[4][5] а подібний до трансформера контролер швидких ваг (англ. Fast Weight Controller) було запропоновано 1992 року.[6][7][8]

Цю архітектуру тепер використовують не лише в обробці природної мови та комп'ютернім баченні,[9] але й в обробці звуку[10] та мультимодальній обробці. Вона також призвела до розробки попередньо натренованих систем, таких як породжувальні попередньо натреновані трансформери (англ. generative pre-trained transformers, GPT)[11] та BERT[12] (англ. Bidirectional Encoder Representations from Transformers, двоспрямовані кодувальні подання з трансформерів).

Хронологія ред.

  • 1990 року мережа Елмана, використовуючи рекурентну нейронну мережу, кодувала кожне слово в тренувальному наборі як вектор, званий вкладенням слова, і весь словник як векторну базу даних, дозволяючи виконувати такі завдання, як передбачування послідовностей, що виходять за межі можливостей простого багатошарового перцептрону. Недоліком цих статичних вкладень було те, що вони не робили розрізнення між декількома значеннями слів, які пишуться однаково.[13]
  • 1992 року Юрген Шмідхубер опублікував контролер швидких ваг (англ. Fast Weight Controller).[6] Він навчається відповідати на запити, програмуючи ваги уваги іншої нейронної мережі через тензорні добутки векторів ключів і векторів значень, званих FROM і TO. Пізніше було показано, що контролер швидких ваг еквівалентний ненормованому лінійному трансформерові.[8][7][14][15] Термінологію «навчання внутрішніх центрів уваги» (англ. "learning internal spotlights of attention") було введено 1993 року.[16]
  • 1993 року для статистичного машинного перекладу використовували суміщувальні моделі IBM[en].[17]
  • 1997 року було запропоновано предтечу великої мовної моделі, яка використовувала рекурентні нейронні мережі, як-от довгу короткочасну пам'ять.
  • 2001 року для уоднозначнювання слів використовували зібраний з Інтернету великий текстовий корпус на один мільярд слів, який на той час називали «дуже-дуже великим».[18]
  • 2012 року AlexNet продемонструвала ефективність великих нейронних мереж для розпізнавання зображень, заохотивши підхід великих штучних нейронних мереж замість старіших, статистичних підходів.
  • 2014 року Суцкевер зі співавт. запропонували 380М-параметрову модель seq2seq[en] для машинного перекладу, яка використовувала дві мережі ДКЧП.[19] Її архітектура складається з двох частин. Кодувальник (англ. encoder) — це ДКЧП, яка бере послідовність токенів, і перетворює її на вектор. Декодувальник (англ. decoder) — це інша ДКЧП, яка перетворює вектор назад на послідовність токенів.
  • 2014 року показало себе корисним використання вентилів у 130М-параметровій моделі seq2seq[en], яка використовувала спрощені вентильні рекурентні вузли (ВРВ). Багданов зі співавт.[20] показали, що ВРВ не кращі й не гірші за вентильну ДКЧП.[21][22]
  • 2014 року Багданов зі співавт.[23] вдосконалили попередню модель seq2seq, використавши механізм уваги «адитивного» типу між двома мережами ДКЧП. Проте це ще не був розпаралелюваний (масштабований «скалярнодобутковий») тип уваги, який згодом запропоновали в статті про трансформери 2017 року.
  • 2015 року Луонг зі співавт. оцінили відносну продуктивність архітектур моделей глобальної та локальної (віконної) уваги, змішана архітектура уваги виявилася здатною покращити переклади, пропоновані архітектурою Багданова, в той час як використання архітектури локальної уваги скоротило час перекладу.[24]
  • 2016 року в Перекладачі Google поступово замінили старіший підхід статистичного машинного перекладу новішим підходом на основі нейронних мереж, що містив модель seq2seq, поєднану з ДКЧП й механізмом уваги «адитивного» типу. Вони досягли вищого рівня продуктивності, ніж статистичний підхід, розробка якого тривала десять років, лише за дев'ять місяців.[25][26]
  • 2017 року в статті «Увага — це все, що вам треба» запропонували оригінальну (розміру 100М) кодувально-декодувальну трансформерну модель зі швидшим (розпаралелюваним або розкладаним) механізмом уваги. Оскільки ця модель мала труднощі зі збіжністю, запропоновали, що темп навчання повинен лінійно збільшуватися від 0 до максимального значення на першій частині тренування (тобто 2 % від загальної кількості кроків тренування). Метою трансформерної моделі було взяти модель seq2seq й усунути її рекурентні нейронні мережі, але зберегти її механізм адитивної уваги.[1]
  • 2018 року в статті про ELMo обробляли все речення перед тим, як призначувати вектор вкладення кожному слову. Для обчислення таких глибоких контекстних вкладень для кожного зі слів використали двоспрямовану ДКЧП, покращивши цей напрямок досліджень відносно моделі «торба слів» та word2vec.
  • 2018 року трансформер з лише кодувальником використали в моделі BERT (розміром понад 1 мільярд), покращивши результати ELMo.[27]
  • 2020 року зоровий трансформер (англ. vision transformer)[28] та підсилений згорткою трансформер для обробки мовлення[29] перевершили рекурентні нейронні мережі, які використовували раніше для бачення й мовлення.
  • 2020 року Сюн зі співавт. розв'язали труднощі оригінального трансформера зі збіжністю шляхом нормування шарів перед багатоголовою увагою (а не після неї). Це називають трансформером перед-ШН (англ. pre-LN).[30]
  • 2023 року односпрямовані («авторегресійні») трансформери використовували в GPT-3 (розміром понад 100 мільярдів) та інших моделях GPT OpenAI.[31][32]

Попередники ред.

Перед трансформерами попередників механізму уваги додали до вентильних рекурентних нейронних мереж, як-от ДКЧП та вентильних рекурентних вузлів (ВРВ), які обробляли набори даних послідовно. Залежність від обчислень попередніх токенів перешкоджала їхній здатності розпаралелювати механізм уваги. 1992 року як альтернативу рекурентним нейронним мережам запропонували контролер швидких ваг, який може навчатися «внутрішніх центрів уваги» (англ. "internal spotlights of attention").[16][6] Теоретично, інформація від одного токену може поширюватися довільно далеко вниз за послідовністю, але на практиці проблема зникання градієнту лишає стан моделі наприкінці довгого речення без точної, добутної інформації про попередні токени.

Продуктивність старих моделей покращили доданням механізму уваги, який дозволив моделі мати доступ до будь-якої попередньої точки вздовж послідовності. Шар уваги зважує всі попередні стани відповідно до навченої міри доречності, надаючи доречну інформацію про віддалені токени. Це виявилося особливо корисним у мовному перекладі, де для значення слова в реченні може бути важливим віддалений контекст. Вектор стану був доступним лише після обробки останнього англійського слова, наприклад, під час перекладу його з французької моделлю ДКЧП. Хоча теоретично такий вектор зберігає інформацію про все оригінальне речення, на практиці ця інформація зберігається погано. Якщо додано механізм уваги, декодувальник отримує доступ до векторів стану кожного вхідного слова, а не лише останнього, й може навчитися ваг уваги, які вказують, скільки уваги приділяти кожному вхідному вектору стану. Розширення моделей seq2seq[en] механізмом уваги вперше втілили в контексті машинного перекладу Багданов, Чо та Бенжіо 2014 року.[4][5]

Розкладна увага ред.

2016 року високорозпаралелювану розкладну увагу (англ. decomposable attention) успішно поєднали з мережею прямого поширення.[33] Це вказувало на те, що механізми уваги були потужними самі по собі, й що послідовна рекурентна обробка даних не була необхідною для досягнення приросту якості рекурентних нейронних мереж з увагою. 2017 року Васвані зі співавт. також запропонували замінити рекурентні нейронні мережі самоувагою й розпочали зусилля щодо оцінки цієї ідеї.[1] Трансформери, використовуючи механізм уваги, обробляючи всі токени одночасно, розраховували «м'які» ваги між ними на послідовних шарах. Оскільки механізм уваги використовує інформацію лише про інші токени з нижчих шарів, його можливо обчислювати для всіх токенів паралельно, що призводить до покращення швидкості тренування.

Тренування ред.

Методи стабілізування тренування ред.

Архітектура звичайного трансформера мала труднощі зі збіжністю. У первинній статті[1] автори радили використовувати прогрівання темпу навчання. Тобто, темп навчання повинен лінійно збільшуватися від 0 до максимального значення на першій частині тренування (зазвичай радять 2 % від загальної кількості кроків тренування), перш ніж знову зменшуватися.

Праця 2020 виявила, що використання шарового нормування перед (а не після) багатоголової уваги та шарів прямого поширення стабілізує тренування, не вимагаючи прогрівання темпу навчання.[30]

Модель GT3 поєднує CWTE, SWTE та TTE за допомогою самопристосовного вентильного шару, уможливлюючи ефективне й дієве злиття трьох типів ознак для наскрізного керованого текстом передбачування ринку акцій.[34]

Попереднє тренування — тонке настроювання ред.

Трансформери, як правило, підлягають самокерованому навчанню, що складається з некерованого попереднього тренування, з наступним керованим тонким настроюванням. Попереднє тренування, як правило, виконують на більшому наборі даних, ніж тонке настроювання, через обмежену доступність мічених[en] тренувальних даних. До задач попереднього тренування та тонкого настроювання зазвичай належать:

У статті про трансформер T5[35] задокументовано велику кількість завдань для попереднього тренування. Деякі приклади:

  • відновлення пошкодженого тексту: Thank you <X> me to your party <Y> week. -> <X> for inviting <Y> last <Z>, де <Z> означає «кінець виведення».
  • переклад: translate English to German: That is good. -> Das ist gut..
  • оцінка граматичної прийнятності речення: cola sentence: The course is jumping well. -> not acceptable.

Застосування ред.

Трансформер досяг великого успіху в обробці природної мови (ОПМ), наприклад, у задачах машинного перекладу та передбачування часових рядів. Багато великих мовних моделей, як-от GPT-2, GPT-3, GPT-4, Claude, BERT, XLNet, RoBERTa та ChatGPT, демонструють здатність трансформерів виконувати широкий спектр пов'язаних з ОПМ завдань, і мають потенціал знаходити застосування в реальному світі. До них можуть належати:

Окрім застосувань в ОПМ, він також досяг успіху в інших галузях, серед яких комп'ютерне бачення та застосування у згортанні білків (як-от AlphaFold[en]).

Як ілюстративний приклад, Ithaca — це трансформер з лише кодувальником із трьома головами виходу. Він бере на вході давньогрецькі написи як послідовності символів, але з нерозбірливими символами, заміненими на «-». Його три голови виходу відповідно виводять розподіли ймовірностей над грецькими символами, місцезнаходженням напису, та його датою.[37]

Втілення ред.

Трансформерову модель було втілено в стандартних системах глибокого навчання, як-от TensorFlow та PyTorch.

Transformers — бібліотека, яку надає Hugging Face, і яка пропонує архітектури на основі трансформерів та попередньо натреновані моделі.[11]

Архітектура ред.

 
Ілюстрація основних складових моделі трансформера з первинної статті, де шари нормувалися після багатоголової уваги (а не перед нею).

Всі трансформери мають однакові основні складові:

  • Токенувальники, які перетворюють текст на токени.
  • Єдиний шар вкладення, який перетворює токени та положення токенів на векторні подання.
  • Трансформувальні шари, які виконують повторювані перетворення над векторними поданнями, виділяючи все більше й більше мовознавчої інформації. Вони складаються з почергових шарів уваги та прямого поширення.
  • (необов'язковий) Шар роз-вкладення, який перетворює остаточні векторні подання назад на розподіл імовірності над токенами.

Трансформувальні шари можуть бути одного з двох типів, кодувальник (англ. encoder) та декодувальник (англ. decoder). У первинній статті використовували обидва типи, тоді як пізніші моделі містили лише один з них. BERT — приклад лише кодувальникової моделі, GPT — лише декодувальникові моделі.

Вхід ред.

Вхідний текст розбирає на токени токенувальник, найчастіше використовують токенувальник діграмним кодуванням[en], і кожен токен перетворюється на вектор шляхом пошуку в таблиці вкладення слів. Потім до вкладення слова додається позиційна інформація токена.

Кодувально—декодувальна архітектура ред.

Подібно до раніших моделей seq2seq[en], оригінальна модель трансформера використовувала кодува́льно—декодува́льну (англ. encoder-decoder) архітектуру. Кодувальник складається з кодувальних шарів, що оброблюють токени входу ітеративно, шар за шаром, тоді як декодувальник складається з декодувальних шарів, які ітеративно оброблюють вихід кодувальника, а також токени виходу декодувальника до цього моменту.

Функція кожного кодувального шару полягає в породжуванні контекстуалізованих подань токенів, в яких кожне подання відповідає токену, який «примішує» інформацію з інших токенів входу через механізм самоуваги. Кожен декодувальний шар містить два підшари уваги: (1) перехресну увагу для охоплення виходу кодувальника (контекстуалізованих подань токенів входу) та (2) самоувагу для «примішування» інформації з-поміж токенів входу до цього декодувальника (тобто токенів, породжених до цього моменту під час висновування).[38][39]

Як кодувальні, так і декодувальні шари мають нейронну мережу прямого поширення для додаткової обробки виходів, та містять за́лишкові з'єднання й кроки шарового нормування (англ. layer normalization).[39]

Масштабована скалярнодобуткова увага ред.

Будівельними блоками трансформера є вузли масштабованої скалярнодобуткової уваги (англ. scaled dot-product attention units). Для кожного вузла уваги трансформерна модель навчається трьох вагових матриць: ваг запиту (англ. query weights)  , ваг ключа (англ. key weights)  , та ваг значення (англ. value weights)  . Для кожного токена   подання токена   множиться на кожну з цих трьох матриць, даючи вектор запиту  , вектор ключа  , та вектор значення  . Ваги уваги обчислюються з використанням векторів запиту та ключа: вага уваги   з боку токена   до токена   є скалярним добутком   на  . Ваги уваги ділять на квадратний корінь розміру векторів ключа,  , що стабілізує градієнти під час тренування, та пропускають через softmax, що унормовує ці ваги. Той факт, що   та   є різними матрицями, дає увазі можливість бути несиметричною: якщо токен   звертає увагу на токен   (тобто,   є великим), то це не обов'язково означає, що токен   звертає увагу на токен   (тобто,   може бути малим). Вихід вузла уваги для токена   це зважена сума векторів значення всіх токенів, зважених на  , увагу з боку токена   до кожного з токенів.

Обчислення уваги (англ. attention) для всіх токенів можливо виразити одним великим матричним обчисленням з використанням функції softmax, що корисно для тренування завдяки обчислювальним оптимізаціям матричних операцій, які обчислюють матричні операції швидко. Матриці  ,   та   визначено як матриці, в яких  -ті рядки є векторами  ,   та   відповідно. Тоді увагу можливо подати як

 

де softmax береться над горизонтальною віссю.

Багатоголова увага ред.

Один набір матриць   називають головою уваги (англ. attention head), й кожен шар у трансформерній моделі має декілька голів уваги. В той час як кожна з голів уваги звертає увагу на токени, доречні для кожного з токенів, декілька голів уваги дозволяють моделі робити це для різних визначень «доречності». Крім того, поле впливу, що подає доречність, може поступово розширюватися в послідовних шарах. Багато трансформерних голів уваги кодують відношення доречності, змістовні для людей. Наприклад, одні голови можуть звертати найбільше уваги на наступне слово, в той час як інші переважно звертають увагу дієслів на їхні безпосередні об'єкти.[40] Обчислення для всіх голів уваги можуть виконуватися паралельно, що уможливлює швидку обробку. Виходи шару уваги зчіплюють, щоби передавати їх до шарів нейронних мереж прямого поширення.

Конкретно, покладімо, що декілька голів уваги проіндексовано через  , тоді маємо

 
де матриця   — зчеплення вкладень слів, матриці   — «проєкційні матриці», що належать окремій голові уваги  , а   — кінцева проєкційна матриця, що належить всій багатоголовій структурі уваги.

Маскована увага ред.

Може бути необхідно вирізати зв'язки уваги між деякими парами слів. Наприклад, декодувальник для позиції токена   не повинен мати доступу до позиції токена  . Цього можливо досягти перед етапом softmax додаванням матриці маски (англ. mask matrix)  , що має значення   у місцях, де зв'язок уваги має бути обрізано, й   в інших місцях:

 

Кодувальник ред.

Кожен кодувальник (англ. encoder) складається з двох головних складових: механізму самоуваги (англ. self-attention mechanism), та нейронної мережі прямого поширення. Механізм самоуваги приймає кодування входів з попереднього кодувальника, та зважує їхню доречність одне одному, щоби породити кодування виходів. Нейронна мережа прямого поширення здійснює подальшу обробку кодування кожного виходу окремо. Ці кодування виходів відтак передають наступному кодувальникові як його вхід, так само як і декодувальникам.

Перший кодувальник отримує як вхід не кодування, а позиційну інформацію та вкладення послідовності входу. Позиційна інформація необхідна трансформерові, щоби використовувати порядок послідовності, оскільки жодна інша частина трансформера його не використовує.[1]

Кодувальник двоспрямований. Увага може звертатися на токени, розташовані як до, так і після поточного токена. Токени використовують замість слів для врахування багатозначності.

 
Діаграма синусоїдного позиційного кодування з параметрами  

Позиційне кодування ред.

Позиційне кодування (англ. positional encoding) — це векторне подання фіксованого розміру, що охоплює відносні позиції токенів у цільовій послідовності: воно надає моделі трансформера інформацію про те, де знаходяться слова у вхідній послідовності.

Позиційне кодування визначають як функцію типу  , де   — додатне парне ціле число. Повне позиційне кодування, як визначено в первинній статті, задається рівнянням

 
де  .

Тут,   — вільний параметр, який повинен бути значно більшим за найбільше  , яке вводитимуть до функції позиційного кодування. У первинній статті[1] автори обрали  .

Ця функція має простіший вигляд при записі як комплексна функція типу  

 
де  .

Основна причина, через яку автори обрали цю функцію за позиційне кодування, полягає в тому, що вона дозволяє виконувати зміщення як лінійні перетворення:

 
де   — відстань, на яку потрібно здійснити зміщення. Це дозволяє трансформерові брати будь-яку закодовану позицію й знаходити кодування позиції на n кроків вперед або назад за допомогою множення матриць.

Беручи лінійну суму, будь-яку згортку також можливо втілити як лінійні перетворення:

 
для будь-яких сталих  . Це дозволяє трансформерові брати будь-яку закодовану позицію й знаходити лінійну суму закодованих позицій її сусідів. Ця сума закодованих позицій, коли її подати до механізму уваги, створюватиме ваги уваги на її сусідах, дуже подібно до того, що відбувається в моделі мови на згортковій нейронній мережі. За словами авторів, «ми припустили, що це дозволить моделі легко навчатися звертати увагу за відносною позицією».

У типових втіленнях усі операції здійснюються над дійсними числами, а не комплексними, але оскільки множення комплексних чисел можливо втілити як множення дійснозначних матриць 2-на-2, то різниця лише в записі.

Декодувальник ред.

Кожен декодувальник (англ. decoder) складається з трьох головних складових: механізму самоуваги, механізму уваги над кодуваннями, та нейронної мережі прямого поширення. Декодувальник працює подібно до кодувальника, але додатково вставляється механізм уваги, що натомість дістає доречну інформацію з кодувань, породжених кодувальниками. Цей механізм також можуть називати кодувально-декодувальною увагою (англ. encoder-decoder attention).[1][39]

Подібно до першого кодувальника, перший декодувальник бере як свій вхід не кодування, а позиційну інформацію та вкладення послідовності виходу. Трансформер мусить не використовувати для передбачування виходу поточний або майбутній вихід, тож послідовність виходу мусить бути частково масковано, щоби запобігти цьому зворотному потокові інформації.[1] Це уможливлює авторегресійне породжування тексту. Для всіх голів уваги не можна звертати увагу на наступні токени. За крайнім декодувальником йде завершальне лінійне перетворення та шар softmax, щоби виробляти ймовірності виходу над словником.

Всі моделі серії GPT від OpenAI мають лише декодувальну архітектуру.

Термінологія ред.

У великих мовних моделях термінологія дещо відрізняється від термінології, використаної в оригінальній статті про трансформер:[41]

  • «тільки кодувальник»: повний кодувальник, повний декодувальник.
  • «кодувальник—декодувальник»: повний кодувальник, авторегресійний декодувальник.
  • «тільки декодувальник»: авторегресійний кодувальник, авторегресійний декодувальник.

Тут «авторегресійний» означає, що до голови уваги вставляють маску для зануляння всієї уваги від одного токена до всіх токенів після нього, як описано в розділі «маскована увага».

Загалом, мовні моделі на основі трансформера існують двох типів: причинні (або «авторегресійні») та масковані. Серія GPT є причинною й лише декодувальною. BERT — маскована й лише кодувальна.[42][43] Серія T5 кодувально—декодувальна, з повним кодувальником та авторегресійним декодувальником.[35]

Наступні роботи ред.

Альтернативні передавальні функції ред.

Оригінальний трансформер використовує передавальну функцію ReLU. Було розроблено й інші передавальні функції активації, як-от SwiGLU.[44]

Альтернативні позиційні кодування ред.

Трансформери можуть використовувати й інші методи позиційного кодування, крім синусоїдного.[45]

RoPE (англ. rotary positional embedding, поворотне позиційне вкладення),[46] найкраще пояснювати, розглядаючи список 2-вимірних векторів  . Виберімо деякий кут  . Тоді кодування RoPE це

 
Еквівалентно, якщо записати 2-вимірні вектори як комплексні числа  , то кодування RoPE це просто множення на кут:
 
Для списку  -вимірних векторів, кодувальник RoPE визначається послідовністю кутів  . Тоді кодування RoPE застосовується до кожної пари координат.

Перевага RoPE полягає в тому, що скалярний добуток двох векторів залежить лише від їхнього відносного розташування:

 

для будь-якого цілого числа  .

ALiBi (англ. Attention with Linear Biases, увага з лінійними зміщеннями)[47] не є заміною для позиційного кодувальника в оригінальному трансформері. Натомість, це додатковий позиційний кодувальник, який безпосередньо підключається до механізму уваги. Конкретно, механізм уваги ALiBi це

 
Тут   — дійсне число («скаляр»), а   — матриця лінійного зміщення (англ. linear bias), визначена як
 
іншими словами,  .

ALiBi дозволяє здійснювати попереднє тренування на коротких контекстних вікнах, а потім тонке настоювання на довших контекстних вікнах. Оскільки її безпосередньо підключено до механізму уваги, її можливо поєднувати з будь-яким позиційним кодувальником, який підключено до «низу» всієї мережі (де розташовано синусоїдний кодувальник оригінального трансформера, а також RoPE та багато інших).

Кодування відносних позицій (англ. Relative Position Encodings)[48] подібні до ALiBi, але загальніші:

 
де   — матриця Тепліца, тобто   за умови  .

Ефективне втілення ред.

FlashAttention ред.

FlashAttention[49] — це алгоритм, що ефективно втілює механізм уваги трансформера на ГП. Він виконує множення матриць блоками, таким чином, що кожен блок уміщається в кеш ГП, і завдяки ретельному управлінню блоками мінімізує копіювання даних між кешами ГП (оскільки переміщення даних повільне).

Покращену версію, FlashAttention-2,[50][51][52] розробили для того, щоби задовольнити висхідний попит на мовні моделі, здатні обробляти довші контексти. Вона пропонує поліпшення в розподілі й розпаралелюванні роботи, дозволяючи досягати до 230 терафлопс/с на ГП A100 (FP16/BF16[en]), що вдвічі швидше за оригінальний FlashAttention.

До ключових досягнень FlashAttention-2 належать зменшення не пов'язаних з множенням матриць операцій з рухомою комою, покращене розпаралелювання над виміром довжини послідовності, кращий розподіл роботи між групами потоків ГП, а також додаткова підтримка розмірів голів до 256 та багатозапитової (БЗУ, англ. multi-query attention, MQA) й групозапитової уваги (ГЗУ, англ. grouped-query attention, GQA).

Еталонні перевірки показали, що FlashAttention-2 в до 2 разів швидше за FlashAttention, і в до 9 разів швидше за стандартне втілення уваги в PyTorch. Серед майбутніх розробок — оптимізація для нового обладнання, як-от ГП H100, та нових типів даних, як-от FP8.

Багатозапитова увага ред.

Багатозапитова увага (англ. Multi-Query Attention) змінює механізм багатоголової уваги.[53] Тоді як традиційно

 
з багатозапитовою увагою, існує лише одне  , тож

 

Це має нейтральний вплив на якість моделі та швидкість тренування, але підвищує швидкість висновування.

Спекулятивне декодування ред.

Трансформери використовують у великих мовних моделях для авторегресійного породжування послідовностей: породжування потоку тексту, по одному токену за раз. Проте в більшості постановок декодування з мовних моделей впираються в пам'ять, що означає, що нам доступні вільні обчислювальні потужності. Спекулятивне декодування (англ. speculative decoding)[54][55] використовує ці вільні обчислювальні потужності, обчислюючи декілька токенів паралельно. Подібно до спекулятивного виконання в ЦП, майбутні токени обчислюються паралельно, роблячи припущення щодо значень попередніх токенів, і пізніше відкидаються, якщо виявляється, що припущення були хибними.

Конкретніше, розгляньмо трансформерну модель на кшталт GPT-3 з розміром контекстного вікна 512. Для породження всього контекстного вікна авторегресійно з жадібним декодуванням її потрібно запускати 512 разів, кожного разу породжуючи токен  . Проте, якби ми мали деяке обґрунтоване припущення щодо значень цих токенів, ми могли би перевіряти їх усі паралельно, за один запуск моделі, перевіряючи, що кожен   справді є токеном із найвищою логарифмічною правдоподібністю на  -тому виході.

При спекулятивному декодуванні використовують меншу модель або деяку іншу просту евристику для породження кількох спекулятивних токенів, які потім перевіряють більшою моделлю. Наприклад, припустімо, що мала́ модель породила чотири спекулятивні токени:  . Ці токени пропускають крізь більшу модель, і приймаються лише   та  . Той же запуск великої моделі вже породив новий токен   для заміни  , а   повністю відкидається. Процес потім повторюється (починаючи з 4-го токена) доки не буде породжено всі токени.

Для не жадібного декодування застосовують подібні ідеї, за винятком того, що спекулятивні токени приймають або відкидають стохастично, таким чином, що гарантується, що кінцевий розподіл виходу є таким самим, як якби спекулятивне декодування не використовувалось.[54][56]

Субквадратичні трансформери ред.

Тренування архітектур на трансформерній основі може бути витратним, особливо для довгих даних входу.[57] До альтернативних архітектур належать Реформер (англ. Reformer, що знижує обчислювальне навантаження з   до  [57]), та моделі на кшталт ETC/BigBird (які можуть знижувати його до  ),[58] де   — довжина послідовності. Це здійснюється за допомогою просторово чутливого гешування[en] та оборотних шарів (англ. reversible layers).[59][60]

Звичайні трансформери вимагають обсягу пам'яті, квадратичного щодо розміру контекстного вікна. Трансформери без уваги (англ. attention-free transformers)[61] знижують цю вимогу до лінійної залежності, зберігаючи при цьому переваги трансформера шляхом зв'язування ключа зі значенням.

Long Range Arena (укр. Арена далекобійності, 2020)[62] — стандартний еталон для порівнювання поведінки трансформерних архітектур на довгих даних входу.

Увага з випадковими ознаками (англ. Random Feature Attention, 2021)[63] використовує випадкові ознаки Фур'є[en]:

 
де   — незалежні зразки з нормального розподілу  . За цього вибору параметрів виконується  , або
 
Відповідно, одноголову увагу з одним запитом можливо записати як
 
де  . Аналогічно для кількох запитів, та для багатоголової уваги.

Це наближення можливо обчислювати за лінійний час, оскільки можливо спочатку обчислювати матрицю  , а потім перемножувати її з запитом. По суті, нам вдалося отримати точнішу версію

 

Перформер (англ. Performer, 2022)[64] використовує ту саму увагу з випадковими ознаками, але   спочатку незалежно вибирають із нормального розподілу  , а потім обробляють їх обробкою Грама — Шмідта.

Мультимодальність ред.

Трансформери також можливо використовувати/пристосовувати й для інших модальностей (даних входу або виходу), крім тексту, зазвичай шляхом знаходження способу «токенувати» таку модальність.

Зорові трансформери (англ. vision transformers)[28] пристосовують трансформер до комп'ютерного бачення, розбиваючи вхідні зображення на низку фрагментів, перетворюючи їх на вектори, й обробляючи їх як токени в стандартному трансформері.

Конформер (англ. Conformer)[29] та пізніший Whisper[65] дотримуються тієї ж схеми для розпізнавання мовлення, спочатку перетворюючи сигнал мовлення на спектрограму, яку потім обробляють як зображення, тобто розбивають на низку фрагментів, перетворюють на вектори, й обробляють як токени в стандартному трансформері.

Персівери (англ. Perceiver, укр. сприймач) від Ендрю Джейгла зі співавт. (2021)[66][67] можуть навчатися з великих масивів гетерогенних даних.

Стосовно зображень на виході[en], Піблс зі співавт. запропонували дифузійний трансформер (ДиТ, англ. diffusion transformer, DiT), який полегшує використання трансформерної архітектури для виробляння зображень на основі дифузії.[68] Також, Google випустила трансформероцентричний породжувач зображень під назвою «Муза» (англ. "Muse") на основі паралельного декодування й технології маскованого породжувального трансформера.[69] (Трансформери відігравали не таку центральну роль у попередніх технологіях створення зображень,[70] хоча й все ж значну.[71])

Див. також ред.

Примітки ред.

  1. а б в г д е ж и к л Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N; Kaiser, Łukasz; Polosukhin, Illia (2017). Attention is All you Need (PDF). Advances in Neural Information Processing Systems (англ.). Curran Associates, Inc. 30.
  2. Hochreiter, Sepp; Schmidhuber, Jürgen (1 листопада 1997). Long Short-Term Memory. Neural Computation (англ.). 9 (8): 1735—1780. doi:10.1162/neco.1997.9.8.1735. ISSN 0899-7667. PMID 9377276. S2CID 1915014.
  3. а б Better Language Models and Their Implications. OpenAI (англ.). 14 лютого 2019. Архів оригіналу за 19 грудня 2020. Процитовано 25 серпня 2019.
  4. а б Bahdanau; Cho, Kyunghyun; Bengio, Yoshua (1 вересня 2014). «Neural Machine Translation by Jointly Learning to Align and Translate» (en). arXiv:1409.0473 [cs.CL]. 
  5. а б Luong, Minh-Thang; Pham, Hieu; Manning, Christopher D. (17 серпня 2015). «Effective Approaches to Attention-based Neural Machine Translation» (en). arXiv:1508.04025 [cs.CL]. 
  6. а б в Schmidhuber, Jürgen (1992). Learning to control fast-weight memories: an alternative to recurrent nets. Neural Computation (англ.). 4 (1): 131—139. doi:10.1162/neco.1992.4.1.131. S2CID 16683347.
  7. а б Schlag, Imanol; Irie, Kazuki; Schmidhuber, Jürgen (2021). Linear Transformers Are Secretly Fast Weight Programmers. ICML 2021. Springer. с. 9355—9366.
  8. а б Katharopoulos, Angelos; Vyas, Apoorv; Pappas, Nikolaos; Fleuret, François (2020). Transformers are RNNs: Fast autoregressive Transformers with linear attention. ICML 2020 (англ.). PMLR. с. 5156—5165.
  9. He, Cheng (31 грудня 2021). Transformer in CV. Transformer in CV (англ.). Towards Data Science. Архів оригіналу за 16 квітня 2023. Процитовано 19 червня 2021.
  10. Radford, Alec; Jong Wook Kim; Xu, Tao; Brockman, Greg; McLeavey, Christine; Sutskever, Ilya (2022). «Robust Speech Recognition via Large-Scale Weak Supervision» (en). arXiv:2212.04356 [eess.AS]. 
  11. а б Wolf, Thomas; Debut, Lysandre; Sanh, Victor; Chaumond, Julien; Delangue, Clement; Moi, Anthony; Cistac, Pierric; Rault, Tim; Louf, Remi; Funtowicz, Morgan; Davison, Joe; Shleifer, Sam; von Platen, Patrick; Ma, Clara; Jernite, Yacine; Plu, Julien; Xu, Canwen; Le Scao, Teven; Gugger, Sylvain; Drame, Mariama; Lhoest, Quentin; Rush, Alexander (2020). Transformers: State-of-the-Art Natural Language Processing. Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations (англ.). с. 38—45. doi:10.18653/v1/2020.emnlp-demos.6. S2CID 208117506.
  12. а б в Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing. Google AI Blog (англ.). 2 листопада 2018. Архів оригіналу за 13 січня 2021. Процитовано 25 серпня 2019.
  13. Elman, Jeffrey L. (березень 1990). Finding Structure in Time. Cognitive Science (англ.). 14 (2): 179—211. doi:10.1207/s15516709cog1402_1. S2CID 2763403.
  14. Choromanski, Krzysztof; Likhosherstov, Valerii; Dohan, David; Song, Xingyou; Gane, Andreea; Sarlos, Tamas; Hawkins, Peter; Davis, Jared та ін. (2020). «Rethinking Attention with Performers» (en). arXiv:2009.14794 [cs.CL]. 
  15. Schmidhuber, Juergen (26 березня 2021). 26 March 1991: Neural nets learn to program neural nets with fast weights—the first Transformer variants. 2021-: New stuff! (англ.). IDSIA, Switzerland. Архів оригіналу за 5 грудня 2023. Процитовано 29 грудня 2023.
  16. а б Schmidhuber, Jürgen (1993). Reducing the ratio between learning complexity and number of time-varying variables in fully recurrent nets. ICANN 1993 (англ.). Springer. с. 460—463.
  17. Brown, Peter F. (1993). The mathematics of statistical machine translation: Parameter estimation. Computational Linguistics (англ.) (19): 263—311.
  18. Banko, Michele; Brill, Eric (2001). Scaling to very very large corpora for natural language disambiguation. Proceedings of the 39th Annual Meeting on Association for Computational Linguistics - ACL '01 (англ.). Morristown, NJ, USA: Association for Computational Linguistics: 26—33. doi:10.3115/1073012.1073017. S2CID 6645623.
  19. Sutskever, Ilya; Vinyals, Oriol; Le, Quoc V (2014). Sequence to Sequence Learning with Neural Networks. Advances in Neural Information Processing Systems. Curran Associates, Inc. 27. arXiv:1409.3215.
  20. Cho, Kyunghyun; van Merrienboer, Bart; Bahdanau, Dzmitry; Bengio, Yoshua (2014). On the Properties of Neural Machine Translation: Encoder–Decoder Approaches. Proceedings of SSST-8, Eighth Workshop on Syntax, Semantics and Structure in Statistical Translation (англ.). Stroudsburg, PA, USA: Association for Computational Linguistics: 103—111. arXiv:1409.1259. doi:10.3115/v1/w14-4012. S2CID 11336213.
  21. Chung, Junyoung; Gulcehre, Caglar; Cho, KyungHyun; Bengio, Yoshua (2014). «Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling» (en). arXiv:1412.3555 [cs.NE]. 
  22. Gruber, N.; Jockisch, A. (2020), Are GRU cells more specific and LSTM cells more sensitive in motive classification of text?, Frontiers in Artificial Intelligence (англ.), 3: 40, doi:10.3389/frai.2020.00040, PMC 7861254, PMID 33733157, S2CID 220252321
  23. Bahdanau, Dzmitry; Cho, Kyunghyun; Bengio, Yoshua (2014-09-01). «Neural Machine Translation by Jointly Learning to Align and Translate» (en). arXiv:1409.0473 [cs.CL]. 
  24. Google Scholar. scholar.google.com (англ.). Процитовано 13 серпня 2023.
  25. Lewis-Kraus, Gideon (14 грудня 2016). The Great A.I. Awakening. The New York Times (амер.). ISSN 0362-4331. Архів оригіналу за 24 травня 2023. Процитовано 22 червня 2023.
  26. Wu, Yonghui; Schuster, Mike; Chen, Zhifeng; Le, Quoc V.; Norouzi, Mohammad; Macherey, Wolfgang; Krikun, Maxim; Cao, Yuan та ін. (2016-09-01). «Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation» (en). arXiv:1609.08144 [cs.CL]. 
  27. Devlin, Jacob; Chang, Ming-Wei; Lee, Kenton; Toutanova, Kristina (11 жовтня 2018). «BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding» (en). arXiv:1810.04805v2 [cs.CL]. 
  28. а б Dosovitskiy, Alexey; Beyer, Lucas; Kolesnikov, Alexander; Weissenborn, Dirk; Zhai, Xiaohua; Unterthiner, Thomas; Dehghani, Mostafa; Minderer, Matthias та ін. (2021-06-03). «An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale» (en). arXiv:2010.11929 [cs.CV]. 
  29. а б Gulati, Anmol; Qin, James; Chiu, Chung-Cheng; Parmar, Niki; Zhang, Yu; Yu, Jiahui; Han, Wei; Wang, Shibo та ін. (2020). «Conformer: Convolution-augmented Transformer for Speech Recognition» (en). arXiv:2005.08100 [eess.AS]. 
  30. а б Xiong, Ruibin; Yang, Yunchang; He, Di; Zheng, Kai; Zheng, Shuxin; Xing, Chen; Zhang, Huishuai; Lan, Yanyan та ін. (2020-06-29). «On Layer Normalization in the Transformer Architecture» (en). arXiv:2002.04745 [cs.LG]. 
  31. Improving language understanding with unsupervised learning. openai.com (амер.). 11 червня 2018. Архів оригіналу за 18 березня 2023. Процитовано 18 березня 2023.
  32. finetune-transformer-lm (англ.), OpenAI, 11 червня 2018, процитовано 1 травня 2023
  33. Papers with Code – A Decomposable Attention Model for Natural Language Inference. paperswithcode.com (англ.).
  34. Chen, Jia; Chen, Tao; Shen, Mengqi; Shi, Yunhai; Wang, Dongjing; Zhang, Xin (1 вересня 2022). Gated three-tower transformer for text-driven stock market prediction. Multimedia Tools and Applications (англ.). 81 (21): 30093—30119. doi:10.1007/s11042-022-11908-1. ISSN 1573-7721. S2CID 247987240.
  35. а б Raffel, Colin; Shazeer, Noam; Roberts, Adam; Lee, Katherine; Narang, Sharan; Matena, Michael; Zhou, Yanqi; Li, Wei; Liu, Peter J. (1 січня 2020). Exploring the limits of transfer learning with a unified text-to-text transformer. The Journal of Machine Learning Research (англ.). 21 (1): 140:5485–140:5551. arXiv:1910.10683. ISSN 1532-4435.
  36. Kariampuzha, William; Alyea, Gioconda; Qu, Sue; Sanjak, Jaleal; Mathé, Ewy; Sid, Eric; Chatelaine, Haley; Yadaw, Arjun; Xu, Yanji; Zhu, Qian (2023). Precision information extraction for rare disease epidemiology at scale. Journal of Translational Medicine (англ.). 21 (1): 157. doi:10.1186/s12967-023-04011-y. PMC 9972634. PMID 36855134.
  37. Assael, Yannis; Sommerschield, Thea; Shillingford, Brendan; Bordbar, Mahyar; Pavlopoulos, John; Chatzipanagiotou, Marita; Androutsopoulos, Ion; Prag, Jonathan; de Freitas, Nando (березень 2022). Restoring and attributing ancient texts using deep neural networks. Nature (англ.). 603 (7900): 280—283. Bibcode:2022Natur.603..280A. doi:10.1038/s41586-022-04448-z. ISSN 1476-4687. PMC 8907065. PMID 35264762.
  38. Sequence Modeling with Neural Networks (Part 2): Attention Models. Indico (англ.). 18 квітня 2016. Архів оригіналу за 21 жовтня 2020. Процитовано 15 жовтня 2019.
  39. а б в Alammar, Jay. The Illustrated Transformer. jalammar.github.io (англ.). Архів оригіналу за 18 жовтня 2020. Процитовано 15 жовтня 2019.
  40. Clark, Kevin; Khandelwal, Urvashi; Levy, Omer; Manning, Christopher D. (серпень 2019). What Does BERT Look at? An Analysis of BERT's Attention. Proceedings of the 2019 ACL Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP (англ.). Florence, Italy: Association for Computational Linguistics: 276—286. arXiv:1906.04341. doi:10.18653/v1/W19-4828. Архів оригіналу за 21 жовтня 2020. Процитовано 20 травня 2020.
  41. LeCun, Yann (28 квітня 2023). A survey of LLMs with a practical guide and evolutionary tree. Twitter (англ.). Архів оригіналу за 23 червня 2023. Процитовано 23 червня 2023.
  42. Masked language modeling. huggingface.co (англ.). Процитовано 5 жовтня 2023.
  43. Causal language modeling. huggingface.co (англ.). Процитовано 5 жовтня 2023.
  44. Shazeer, Noam (1 лютого 2020). «GLU Variants Improve Transformer» (en). arXiv:2002.05202 [cs.LG]. 
  45. Dufter, Philipp; Schmitt, Martin; Schütze, Hinrich (6 червня 2022). Position Information in Transformers: An Overview. Computational Linguistics (англ.). 48 (3): 733—763. arXiv:2102.11090. doi:10.1162/coli_a_00445. ISSN 0891-2017. S2CID 231986066.
  46. Su, Jianlin; Lu, Yu; Pan, Shengfeng; Murtadha, Ahmed; Wen, Bo; Liu, Yunfeng (2021-04-01). «RoFormer: Enhanced Transformer with Rotary Position Embedding» (en). arXiv:2104.09864 [cs.CL]. 
  47. Press, Ofir; Smith, Noah A.; Lewis, Mike (1 серпня 2021). «Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation» (en). arXiv:2108.12409 [cs.CL]. 
  48. Shaw, Peter; Uszkoreit, Jakob; Vaswani, Ashish (2018). «Self-Attention with Relative Position Representations» (en). arXiv:1803.02155 [cs.CL]. 
  49. Dao, Tri; Fu, Dan; Ermon, Stefano; Rudra, Atri; Ré, Christopher (6 грудня 2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. Advances in Neural Information Processing Systems (англ.). 35: 16344—16359. arXiv:2205.14135.
  50. Stanford CRFM. crfm.stanford.edu (англ.). Процитовано 18 липня 2023.
  51. FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning. Princeton NLP (англ.). 17 червня 2023. Процитовано 18 липня 2023.
  52. Introducing Together AI Chief Scientist Tri Dao, as he releases FlashAttention-2 to speed up model training and inference. TOGETHER (амер.). Процитовано 18 липня 2023.
  53. Chowdhery, Aakanksha; Narang, Sharan; Devlin, Jacob; Bosma, Maarten; Mishra, Gaurav; Roberts, Adam; Barham, Paul; Chung, Hyung Won та ін. (2022-04-01). «PaLM: Scaling Language Modeling with Pathways» (en). arXiv:2204.02311 [cs.CL]. 
  54. а б Leviathan, Yaniv; Kalman, Matan; Matias, Yossi (18 травня 2023), Fast Inference from Transformers via Speculative Decoding (англ.), arXiv:2211.17192
  55. Fu, Yao (13 грудня 2023). Towards 100x Speedup: Full Stack Transformer Inference Optimization (англ.).
  56. Chen, Charlie; Borgeaud, Sebastian; Irving, Geoffrey; Lespiau, Jean-Baptiste; Sifre, Laurent; Jumper, John (2 лютого 2023), Accelerating Large Language Model Decoding with Speculative Sampling (англ.), arXiv:2302.01318
  57. а б Kitaev, Nikita; Kaiser, Łukasz; Levskaya, Anselm (2020). «Reformer: The Efficient Transformer» (en). arXiv:2001.04451 [cs.LG]. 
  58. Constructing Transformers For Longer Sequences with Sparse Attention Methods. Google AI Blog (англ.). 25 березня 2021. Архів оригіналу за 18 вересня 2021. Процитовано 28 травня 2021.
  59. Tasks with Long Sequences – Chatbot. Coursera (англ.). Архів оригіналу за 26 жовтня 2020. Процитовано 22 жовтня 2020.
  60. Reformer: The Efficient Transformer. Google AI Blog (англ.). 16 січня 2020. Архів оригіналу за 22 жовтня 2020. Процитовано 22 жовтня 2020.
  61. Zhai, Shuangfei; Talbott, Walter; Srivastava, Nitish; Huang, Chen; Goh, Hanlin; Zhang, Ruixiang; Susskind, Josh (2021-09-21). «An Attention Free Transformer» (en). arXiv:2105.14103 [cs.LG]. 
  62. Tay, Yi; Dehghani, Mostafa; Abnar, Samira; Shen, Yikang; Bahri, Dara; Pham, Philip; Rao, Jinfeng; Yang, Liu та ін. (2020-11-08). «Long Range Arena: A Benchmark for Efficient Transformers» (en). arXiv:2011.04006 [cs.LG]. 
  63. Peng, Hao; Pappas, Nikolaos; Yogatama, Dani; Schwartz, Roy; Smith, Noah A.; Kong, Lingpeng (2021-03-19). «Random Feature Attention» (en). arXiv:2103.02143 [cs.CL]. 
  64. Choromanski, Krzysztof; Likhosherstov, Valerii; Dohan, David; Song, Xingyou; Gane, Andreea; Sarlos, Tamas; Hawkins, Peter; Davis, Jared та ін. (2020-09-30). «Masked Language Modeling for Proteins via Linearly Scalable Long-Context Transformers» (en). arXiv:2006.03555 [cs.LG]. 
  65. Radford, Alec; Kim, Jong Wook; Xu, Tao; Brockman, Greg; McLeavey, Christine; Sutskever, Ilya (2022). «Robust Speech Recognition via Large-Scale Weak Supervision» (en). arXiv:2212.04356 [eess.AS]. 
  66. Jaegle, Andrew; Gimeno, Felix; Brock, Andrew; Zisserman, Andrew; Vinyals, Oriol; Carreira, Joao (2021-06-22). «Perceiver: General Perception with Iterative Attention» (en). arXiv:2103.03206 [cs.CV]. 
  67. Jaegle, Andrew; Borgeaud, Sebastian; Alayrac, Jean-Baptiste; Doersch, Carl; Ionescu, Catalin; Ding, David; Koppula, Skanda; Zoran, Daniel та ін. (2021-08-02). «Perceiver IO: A General Architecture for Structured Inputs & Outputs» (en). arXiv:2107.14795 [cs.LG]. 
  68. Peebles, William; Xie, Saining (2 березня 2023). «Scalable Diffusion Models with Transformers» (en). arXiv:2212.09748 [cs.CV]. 
  69. Google AI Unveils Muse, a New Text-to-Image Transformer Model. InfoQ (англ.).
  70. Using Diffusion Models to Create Superior NeRF Avatars (англ.). 5 січня 2023.
  71. Islam, Arham (14 листопада 2022). How Do DALL·E 2, Stable Diffusion, and Midjourney Work? (англ.).

Література ред.

— Обговорення дії трансформерного шару як еквіваленту гопфілдового уточнення, що наближує вхід до однієї з нерухомих точок (образів подання) неперервнозначної мережі Гопфілда.