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)
Связанные термины
- тензор — объект с shape
- batch size — первое измерение большинства тензоров
- эмбеддинг — d_model — последнее измерение
- трансформер — преобразует shapes через все слои
Готовы запустить GPU-задачу?
Запустить GPU-сервер