Урок 3 із 7
Збираємо GPT-блок
8 хв читання
Один шар уваги розумний, але неглибокий. Як зробити з нього щось на десятки шарів завглибшки, щоб воно не розвалилося?
Один блок, повторений N разів
Блок трансформера — це фіксований рецепт, який повторюєш. Усередині: шар самоуваги, а тоді невелика feed-forward-мережа, що обмірковує кожен токен окремо. Навколо кожного — дві підпори: залишковий зв'язок, що додає вхід назад до виходу, і нормалізація шару, що тримає числа в розумних межах. Склади однаковий блок десятки разів — і глибина зробить решту.
Кожен токен лишається вектором чисел аж до верху. Кожен блок трохи підштовхує ці числа нести більше сенсу.
Чому підпори важливі
Залишкові зв'язки й нормалізація — не прикраса: саме вони дають змогу навчати таку глибину. Залишковий зв'язок дає навчальному сигналу чистий шлях назад крізь кожен шар; нормалізація не дає числам вибухати чи зникати. Прибери їх — і глибокий стос просто не навчиться. Параметри блоку, тобто ваги в увазі та feed-forward-мережі, — це те, що підлаштує навчання.
Глибина — це просто той самий блок, повторений. Каркас із залишків і нормалізації — те, що робить глибокий стос узагалі навчуваним.
Оскільки кожен блок однаковий, пишеш його раз як клас і повторюєш у циклі. «Розмір» моделі — це здебільшого кількість повторів, помножена на ширину кожного шару.
Що збудовано
- —Блок: увага + feed-forward, кожне загорнуте в залишковий зв'язок і нормалізацію.
- —Стос однакових блоків — глибина з повторення.
- —Фінальний шар, що перетворює верхній вектор назад на оцінку для кожного можливого наступного токена.
Чому блоки трансформера містять залишкові зв'язки й нормалізацію?
Продовжити в застосунку
Пройди весь курс «Побудуй LLM з нуля» — з відстеженням
Отримай персональний план, прогрес і стріки в застосунку — цей урок і кожен наступний, по порядку.