alterna ai
ALTERNA AI / ГЛАВА 19 · 03

19.3 Одна таблица разделена на части

На предыдущей странице: одинаковые модели видят разные примеры.

Разные устройства вычисляют разные столбцы результата. После этого столбцы соединяются в правильном порядке.

Можно делить данные, таблицы или этапы. Частичные результаты надо соединять. Разные modality сначала превращаются в вектора подходящей ширины, а эксперты выбираются по ограниченному маршруту.

Одна matrix operation распределяется между devices

Когда layer не помещается на одном device, weight matrix делят. При column partition W=[W_1|W_2] каждый device вычисляет xW_i, а outputs конкатенируются. При row partition локальные partial sums нужно сложить collective operation. Megatron-LM использует согласованные column/row splits внутри Transformer layers. F16.

x[W1∣W2]=[xW1∣xW2],[x1x2][W1W2]=x1W1+x2W2.x[W_1|W_2]=[xW_1|xW_2], \qquad \begin{bmatrix}x_1&x_2\end{bmatrix} \begin{bmatrix}W_1\\W_2\end{bmatrix}=x_1W_1+x_2W_2.

Sharding обязан сохранять axis semantics, bias и порядок features. Collective communication находится на critical path каждого layer, поэтому topology interconnect существенно влияет на latency.

Что показывает модель. Визуальная модель переключает column/row split и показывает, где нужен concat, а где sum. Shape ledger подписывает global и local tensors. Numerically identical algebra может различаться последними bits из-за порядка floating-point reduction.

Граница применимости. Fixture заранее вычисляет local slices без сети и не измеряет speedup. Tensor parallel degree ограничивается shapes, kernel sizes и interconnect. Слишком мелкие shards уменьшают arithmetic intensity; больше devices может замедлить один request.

x_19c=[2,3]; W_19c=[[1,0,1,2],[0,1,3,4]]
dense_19c=[sum(x_19c[r_19c]*W_19c[r_19c][c_19c] for r_19c in range(2)) for c_19c in range(4)]
left_19c=dense_19c[:2]; right_19c=dense_19c[2:]; gathered_19c=left_19c+right_19c
assert gathered_19c==dense_19c==[2,3,11,16]

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Column partition даёт разные output columns одной dense операции.

Этапы вычисления на разных устройствах. Как этот вопрос продолжает полученный результат?

Python-примеры главы 19 Академическая база →