Alterna · учебный материал

19.2 Одинаковые модели видят разные примеры

Скопируем веса на устройства и разделим данные. При соединении средних ошибок важно учитывать разное число токенов.

Что в этом материале

Содержание и основные понятия

На предыдущей странице: размер и качество — разные величины.
Скопируем веса на устройства и разделим данные. При соединении средних ошибок важно учитывать разное число токенов.
Можно делить данные, таблицы или этапы. Частичные результаты надо соединять. Разные modality сначала превращаются в вектора подходящей ширины, а эксперты выбираются по ограниченному маршруту.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Replicas видят разные examples и согласуют gradients
В synchronous data parallel каждая replica хранит полные parameters, обрабатывает local mini-batch и получает local gradient. Collective reduction формирует gradient global batch, после чего replicas выполняют одинаковый optimizer step. При равных local batch sizes это обычное среднее.
g
=
1
R
∑
r
=
1
R
g
r
,
θ
′
=
Opt
⁡
(
θ
,
g
,
s
t
a
t
e
)
.
g=\frac1R\sum_{r=1}^{R}g_r,
\qquad \theta' = \operatorname{Opt}(\theta,g,state).
g
=
R
1
​
r
=
1
∑
R
​
g
r
​
,
θ
′
=
Opt
(
θ
,
g
,
s
t
a
t
e
)
.
Если число valid tokens на replicas различается из-за padding/masking, усреднение готовых local means может дать неверный вес. Надёжный контракт редуцирует gradient sums и denominator valid targets. Gradient accumulation увеличивает effective batch без дополнительной replica, но меняет число forward/backward на optimizer step.
Что показывает модель.
Диаграмма показывает scatter examples, local forward/backward, all-reduce и единый update barrier. Optimizer state может быть replicated или sharded; последнее уже меняет memory/communication contract, хотя математический global gradient остаётся тем же.
Граница применимости.
Удвоение replicas не гарантирует удвоение throughput: communication и input pipeline становятся bottleneck. Большой batch может потребовать другой learning-rate schedule и влиять на optimization. Asynchronous variants имеют stale gradients и не описываются этой формулой.
replica_grads_19b=[[1.0,3.0],[3.0,1.0]]
global_grad_19b=[sum(row_19b[j_19b] for row_19b in replica_grads_19b)/len(replica_grads_19b) for j_19b in range(2)]
weights_19b=[5.0,5.0]; lr_19b=0.1
updated_19b=[w_19b-lr_19b*g_19b for w_19b,g_19b in zip(weights_19b,global_grad_19b)]
assert global_grad_19b==[2.0,2.0] and updated_19b==[4.8,4.8]
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Token-weighted mean воспроизводит global objective.
Одна таблица разделена на части. Как этот вопрос продолжает полученный результат?
Python-примеры главы 19
Академическая база →

Структурная карта учебников