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