PyTorch для разработчика
См. также: Классическое ML — scikit-learn · Анализ данных · раздел «ИИ»
PyTorch - глубокое обучение на Python
PyTorch — фреймворк глубокого обучения на Python: динамические вычислительные графы, GPU, автоматическое дифференцирование. Концепции нейросетей в энциклопедии ИИ описаны отдельно; здесь — практический вход разработчика: установка, тензор, модель, цикл fit, сохранение весов.
Перед PyTorch полезно пройти NumPy/pandas и по возможности scikit-learn — те же идеи train/test и метрик.
pip install torch torchvision
Для GPU нужны драйвер NVIDIA и сборка torch с поддержкой CUDA с официального индекса пакетов под вашу версию ОС.
Тензор
Тензор — многомерный массив с операциями на CPU или GPU.
import torch
x = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
y = torch.ones(2, 2)
z = x @ y # матричное умножение
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
x_gpu = x.to(device)
Многие операции совместимы по духу с NumPy; отличие — тензор может участвовать в autograd и жить на GPU.
autograd — градиенты
PyTorch строит граф операций и считает производные для обучения.
x = torch.tensor([2.0, 3.0], requires_grad=True)
y = (x ** 2).sum()
y.backward()
print(x.grad) # tensor([4., 6.])
При обучении сети градиенты идут от функции потерь к весам слоёв; оптимизатор обновляет веса в противоположную сторону градиента.
Модель как nn.Module
import torch.nn as nn
class TinyNet(nn.Module):
def __init__(self, n_in: int, n_hidden: int, n_out: int):
super().__init__()
self.net = nn.Sequential(
nn.Linear(n_in, n_hidden),
nn.ReLU(),
nn.Linear(n_hidden, n_out),
)
def forward(self, x):
return self.net(x)
model = TinyNet(n_in=10, n_hidden=32, n_out=2).to(device)
forward вызывается при model(x). Параметры (weight, bias) регистрируются автоматически — их передают оптимизатору.
Цикл обучения
import torch.optim as optim
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=1e-3)
model.train()
for epoch in range(5):
for batch_x, batch_y in train_loader:
batch_x, batch_y = batch_x.to(device), batch_y.to(device)
optimizer.zero_grad()
logits = model(batch_x)
loss = criterion(logits, batch_y)
loss.backward()
optimizer.step()
| Шаг | Назначение |
|---|---|
zero_grad | Обнулить градиенты с прошлого шага |
forward + loss | Предсказание и ошибка |
backward | Вычислить градиенты |
step | Обновить веса |
Для оценки на валидации: model.eval() и with torch.no_grad(): — градиенты не нужны.
Dataset и DataLoader
from torch.utils.data import Dataset, DataLoader
class TabularDataset(Dataset):
def __init__(self, features, labels):
self.x = torch.tensor(features, dtype=torch.float32)
self.y = torch.tensor(labels, dtype=torch.long)
def __len__(self):
return len(self.y)
def __getitem__(self, idx):
return self.x[idx], self.y[idx]
train_loader = DataLoader(dataset, batch_size=64, shuffle=True)
DataLoader батчирует данные и может подгружать их в фоне (num_workers). Для изображений часто используют готовые наборы из torchvision.datasets с трансформациями transforms.
Сохранение и загрузка
torch.save(model.state_dict(), "model_weights.pt")
model2 = TinyNet(10, 32, 2)
model2.load_state_dict(torch.load("model_weights.pt", map_location=device))
model2.eval()
Для полного checkpoint (веса + optimizer + epoch) сохраняют словарь. В продакшен иногда экспортируют в ONNX или TorchScript — отдельная тема развёртывания, см. применение ИИ.
Связь с экосистемой
| Компонент | Роль |
|---|---|
| NumPy / pandas | Подготовка таблиц до тензора |
| scikit-learn | Baseline без нейросети |
| Hugging Face Transformers | Готовые LLM поверх PyTorch |
| CUDA | Ускорение на GPU |
Ограничения и этика
- Обучение на личных данных без согласия и утечка модели — риски ИБ.
- Большие модели требуют RAM/VRAM и энергии; для прототипа достаточно малой сети на CPU.
- Метрики на тесте не гарантируют поведение в проде — нужен мониторинг.
Связанные материалы
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Python как язык общего назначения - философия, ключевые свойства и области применения в современной разработке. Python — это высокоуровневый язык программирования общего назначения, который отличается читаемым синтаксисом и широким спектром применения. Принципы, которые делают код понятным, поддерживаемым и расширяемым. Примеры реализации типовых приложений. Каждый пример сопровождается разбором ключевых концепций языка. Наверняка каждый новичок, решивший перейти в что-то стандартное в Python, открывает себе этот файл. Как устроен Python, что входит в комплект и какие есть реализации. Структурные каркасы для построения приложений, как они устроены. Фреймворки, библиотеки, инструменты сборки, среды выполнения, системы тестирования и специализированные платформы, объединённые общей философией ясности, простоты и гибкости. Что такое модули, как устроены механизмы импорта и загрузки. Управление изолированной средой и зависимостями проекта. История Python - ключевые этапы развития языка, сообщества и экосистемы инструментов. Философия Python не зафиксирована в официальных стандартах, но она глубоко интегрирована в язык, его стандартную библиотеку, документацию и культуру разработчиков.Python - язык общего назначения
Что требуется знать перед началом изучения языка программирования Python
Рекомендации по разработке на Python
Простые приложения на Python
Встроенный модуль builtins и типизация в Python
Архитектура интерпретатора Python
Фреймворки и библиотеки Python
Экосистема Python-приложений
Модули в Python
Виртуальные окружения и управление зависимостями
История языка Python
Философия Python - Zen of Python