Alterna · учебный материал
15.5 Несколько блоков подряд
Второй блок получает результат первого. Это повторение вида обработки, но не обязательное повторное использование одних весов.
Что в этом материале
- Блоки повторяются, веса не разделяются автоматически
Содержание и основные понятия
На предыдущей странице: переработка каждого токена отдельно.
Второй блок получает результат первого. Это повторение вида обработки, но не обязательное повторное использование одних весов.
Вектор получает позиционную информацию, обменивается сведениями и отдельно перерабатывает своё состояние. Остаточные суммы сохраняют прежний путь. Последняя таблица выдаёт оценки словаря.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Блоки повторяются, веса не разделяются автоматически
Стек применяет Ldecoder blocks последовательно. Hidden shape[n,d] сохраняется, а представления меняются. «Одинаковый тип блока» не означает shared weights между слоями. После стека выполняется final LayerNorm перед выходным head.
В нашей конфигурации E[V,d], независимый head U[d,V] и bias[V], finalLN содержит2dпараметров. Каждый ReLU-block:4d²attention,4d для двухLN,4d²+3dFFN. Итого:
P
R
e
L
U
=
2
V
d
+
V
+
2
d
+
L
(
8
d
2
+
7
d
)
.
P_{ReLU}=2Vd+V+2d+L(8d^2+7d).
P
R
e
LU
=
2
V
d
+
V
+
2
d
+
L
(
8
d
2
+
7
d
)
.
Для SwiGLU-block получается10d²+4d, потому что FFN безbias содержит6d². ПриV256,d4,L1 значения2468и2488 соответственно. Heads меняют разбиение проекций, но при фиксированномdне увеличивают число элементов четырёх dense matrices.
Эксперимент.
Измените depth1→2→3, d4→8 и heads. Сверьте формулу с actual count массивов. Параметры позиции не добавляются для sinusoidal/RoPE; изменение vocabulary после BPE меняет E и head.
Граница.
Эта программа реализует настоящий decoder forward, но не pretraining. Нет dropout, encoder/cross-attention, KV-cache и оптимизированного GPU выполнения. Число параметров — не расход всей памяти: snapshots, activations и n²attention matrices хранятся отдельно ради обучения механизму.
V,d,L=256,4,1
assert 2*V*d+V+2*d+L*(8*d*d+7*d)==2468
assert 2*V*d+V+2*d+L*(10*d*d+4*d)==2488
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Одинаковый тип layer не означает shared parameters.
Из представления в оценки слов. Как этот вопрос продолжает полученный результат?
Python-примеры главы 15
Академическая база →