ML Fundamentals

shape

Кортеж размерностей тензора, описывающий его форму: (batch, seq_len, d_model).

Что такое shape тензора

Shape (форма) — кортеж целых чисел, описывающий размерность тензора по каждой оси. Понимание shape критически важно для отладки нейросетей: большинство ошибок типа RuntimeError: size mismatch связаны с несоответствием форм.

import torch

x = torch.randn(4, 128, 512)
print(x.shape)          # torch.Size([4, 128, 512])
print(x.shape[0])       # 4  — batch size
print(x.shape[1])       # 128 — seq len
print(x.shape[2])       # 512 — d_model
print(x.ndim)           # 3  — число измерений (rank)

Типичные shapes в LLM

[batch_size, seq_len, d_model]      — hidden states между слоями
[batch_size, seq_len, vocab_size]   — логиты на выходе
[n_heads, seq_len, seq_len]         — матрица attention weights
[vocab_size, d_model]               — embedding матрица
[d_model, d_ffn]                    — веса FFN слоя

Манипуляции с shape

x = torch.randn(2, 8, 4096)

# Изменить форму
x.view(2, -1)           # (2, 32768) — -1 = вычислить автоматически
x.reshape(16, 4096)     # (16, 4096)

# Добавить/убрать размерность
x.unsqueeze(0)          # (1, 2, 8, 4096)
x.squeeze()             # убирает размерности = 1

# Перестановка осей
x.permute(0, 2, 1)      # (2, 4096, 8)
x.transpose(1, 2)       # то же для 2 осей

# Конкатенация
torch.cat([x, x], dim=1)   # по оси seq_len: (2, 16, 4096)
torch.stack([x, x], dim=0) # новая ось: (2, 2, 8, 4096)

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер