Що передбачає мовна модель
Ймовірнісний двигун продовження
Мовна модель приймає послідовність токенів та призначає ймовірнісний розподіл над тим, який токен буде наступним. Подайте їй the cat sat on the та вона видасть ймовірності по всьому словнику: висока маса на mat, floor, couch; низька маса на xylophone, Tuesday.
Використовуючи вибірку з цього розподілу, додаючи токен та подаючи назад: цей цикл генерує текст токен за токеном. Автореgresивна генерація, названо так, бо кожен крок регресує на своєму попередньому виводі.
Три числа визначають мовну модель
Розмір словника (V). Скільки різних токенів може генерувати модель. ANDREA-12M використовувала 4,353 токени; ANDREA-120M використовує 8,449.
Вікно контексту (T). Скільки токенів вміщується в один прохід вперед. Моделі ANDREA використовують T = 1,024.
Кількість параметрів (P). Скільки навчених ваг міститься всередині. 12M, 120M та 480M називають сімейство за P.
Сім'я з трьох
| Варіант | d_model | Голови | Шари | Контекст | Параметри |
|---|---|---|---|---|---|
| ANDREA-12M | 384 | 12 | 6 | 1024 | 12.8M |
| ANDREA-120M | 768 | 12 | 12 | 1024 | ~120M |
| ANDREA-480M | 1536 | 24 | 16 | 1024 | ~480M |
Три регулятори масштабування: d_model (ширина кожного внутрішнього вектора), n_layer (глибина штабованих блоків трансформера), n_head (паралельні проєкції уваги). Словник та контекст залишаються фіксованими в межах родини.
Читання таблиці родини
Чому малі моделі важливі
Обмеження як звільнення
Великі мовні моделі з сотнями мільярдів параметрів потребують тисяч GPU, пропрієтарних наборів даних та корпоративних бюджетів. Лише небагато людей можуть їх тренувати. Лише небагато людей можуть їх ремонтувати.
Мала мовна модель на одній GPU перевертає це. Будь-хто з 4090 (або 3060) може відтворити ANDREA з відкритих даних. Рецепт тренування подвоюється як модельна картка. Відкритий код, відкриті ваги, відкриті дані; повна провенience за 72 години обчислень.
Ємність проти якості
Менші моделі не можуть запам'ятовувати свій тренувальний корпус. ANDREA-12M з 12.8M параметрів не має ємності для зберігання фактичного контенту; вона вивчає структуру ходів, розподіл словника та форму відповіді. ANDREA-120M з 10× ємністю вивчає фактичне пригадування, когерентність кількох абзаців та широту домену (перевірено через зовнішню оцінку на 9.5/10 на зразках біології та обробки сигналів).
Висновок: потужність встановлює стелю. Навчальна програма визначає, чи буде досягнута ця стеля. Активності 14-23 охоплюють навчальну програму. [TITLE decoder_only/]
Три варіанти трансформера
Кодер, Декодер, Обидва
Оригінальний трансформер (Vaswani et al., 2017) містив кодер та декодер, з’єднані разом для перекладу. Від цієї статті походять три архітектурні лінії:
Тільки кодер (лінія BERT). Двостороння увага, без причинної маски. Оптимізований для класифікації, а не генерації. Токен бачить як своє минуле, так і майбутнє під час навчання.
Encoder-decoder (T5, BART). Кодувальник читає вхід; декодувальник генерує вихід, звертаючись до кодувальника через cross-attention. Використовується для перекладу, узагальнення.
Decoder-only (GPT, ANDREA). Causal mask: кожен токен бачить лише своє минуле. Навчається передбачати наступний токен. Генерація безкоштовна; навчання та інференс використовують один і той же forward pass.
Чому Decoder-Only перемагає на одній GPU
Три причини:
1. Єдина ціль. Передбачення наступного токена працює на будь-якому тексті. Не потрібні пари джерело/ціль.
2. Симетрія тренування та інференсу. Той самий прямий прохід, без спеціальної логіки генерації.
3. Простота пам'яті. Без крос-уваги; один стек шарів; один потік активацій.
ANDREA успадковує вибір decoder-only від microGPT, яка успадкувала від nanoGPT, яка успадкувала від GPT-2. Лінія залишається стандартною; те, що змінюється, живе в токенізації, інфраструктурі тренування та навчальній програмі.
Чому Decoder-Only для ANDREA
Що вміщується в 24 ГБ
Байтів на параметр
RTX 4090 постачається з 24 ГБ VRAM. Тренування ANDREA-12M використовувало 1.4 ГБ. ANDREA-120M використало значно більше. Розрив пояснюється простою вправою з обліку: кожен параметр з'являється кілька разів у пам'яті під час тренування.
Для кожного параметра тренування утримує:
- Саму вагу (1× вага)
- Перший момент Adam (m): така ж форма, як у ваги (1× вага)
- Другий момент Adam (v): така ж форма, як у ваги (1× вага)
- Градієнти: така ж форма, як у ваги (1× вага)
- Активації та тимчасові: ~2-4× вага (залежить від батчу та контексту)
Загалом: ~6-8× кількості ваг, у байтах визначається точністю.
Точність множить усе
| Точність | Байт/парам | Загалом для 120M ваг | Примітки |
|---|---|---|---|
| FP32 | 4 | 480 МБ | Базовий; найбезпечніший, найповільніший |
| FP16 | 2 | 240 МБ | cuBLAS, вдвічі менше пам'яті |
| FP8 E4M3 | 1 | 120 МБ | Tensor cores, ризик NaN |
Помножте на 6-8× для повного відбитку на час тренування. ANDREA-120M тренується комфортно в FP16 (~2 ГБ для ваг + оптимізатор + градієнти); FP8 E4M3 вдвічі скорочує час тренування на tensor cores RTX 4090.
Активність 13 (grow_a_language_model_precision) детально розглядає компроміси точності FP.
Розрахунок розміру стану оптимізатора ANDREA-120M
Двадцять п'ять активностей
Дві половини
Цей курс чітко поділяється навпіл. Перша половина охоплює те, що microGPT навчив поле: трансформер, що працює на одній GPU. Друга половина охоплює реальний внесок ANDREA: навчальний план, що навчається.
Половина 1: Трансформер на одній GPU (активності 2-13)
| # | Активність | Етап |
|---|---|---|
| 2 | Токенізатор морфем Гарріса | дистрибутивна сегментація, словник 256+N+1 |
| 3 | Вирівнювання токенізатор-діт | точка насичення, чому 12M витрачено 63.6% |
| 4 | Ембедінги та позиція | вивчені токени + пошук позиції |
| 5 | Масштабована увага точкового добутку | Q·Kᵀ/√d, причинна маска, softmax |
| 6 | Багатоголовкова увага | розподіл голів, паралельні проєкції |
| 7 | Блок трансформера | MLP, резидуали, нормалізація шару |
| 8 | Крос-ентропія та перплексія | логарифмічна ймовірність, втрата SMMA |
| 9 | Зворотне поширення в кастомному CUDA | правило ланцюжка через microgpt_cuda.cu |
| 10 | AdamW | роздільний розпад ваги; чому ванільний Adam помер |
| 11 | LR warmup + cosine decay | 2000-кроковий розгін; чому миттєвий пік руйнує 120M |
| 12 | Обрізання градієнтів | глобальна L2 норма; 3 CUDA ядра |
| 13 | FP32 / FP16 / FP8 E4M3 | компроміси точності; тензорні ядра |
Половина 2: Навчальна програма, що навчається (активності 14-24)
| # | Активність | Перемога |
|---|---|---|
| 14 | Багатозадачні бандити | UCB1, дослідження проти використання |
| 15 | Фазовий контроль кубиків | 7/14/21/28/42 фази, 1d3/1d4 кубики |
| 16 | Приписування винагород та EMA | EMA втрат за джерелом, масштабування 1000× |
| 17 | Підлоги джерел та штраф епохи | 1/(1+epochs) запобігає меморизації |
| 18 | Бонус покриття | відстеження на рівні документа, 1.3× свіжість |
| 19 | Розігрів з навчальною програмою | 7 чат/прози джерел перші 20K кроків |
| 20 | Фільтрація за формою, не символами | has_system_prompt_shape() |
| 21 | Раннє зупинення з керуванням когерентністю | bigram/trigram/word/char auto-halt |
| 22 | Контрольна точка, відновлення, сигнали | format, SIGTERM/SIGUSR1, loss.json continuity |
| 23 | Аудит зразка та зовнішня оцінка | reading a run, 9.5/10 territory |
| 24 | Від microGPT до ANDREA-120M | v1 collapse, v2 fixes, v2.5 patch, v3 polish |
Плюс супутник: geometry_of_andrea розглядає кожен шар як геометрію (простір вбудувань, увага як проєкція, поверхня втрат, бандит як хода на дискретному симплексі).
Пропонований порядок
Діяльності 2-13 будують робочий трансформер. Пропустіть до другої половини, якщо ви вже тренували трансформери; поверніться, коли з'явиться цікавість.
Кожна діяльність стоїть окремо, де можливо. Математичні посилання посилаються на попередні діяльності за назвою (див. діяльність 5: scaled dot-product attention). Посилання на код вказують на microgpt/microgpt_cuda.cu та microgpt/training_proxy.py у ~/git/uncloseai-cli/.