Перейти до вмісту

PyTorch

Матеріал з K2 ERP Wiki

PyTorch-проєкти мають безпекові ризики. PyTorch особливо популярний у deep learning.[1]

x = torch.tensor([1.0, 2.0, 3.0])

  • менше boilerplate;
  • стандартизувати тренування;
  • простіше масштабувати;
  • зручніше логувати метрики;
  • працювати з callbacks;
  • організувати експерименти. Для складних production-процесів можуть використовуватися спеціалізовані inference runtimes або хмарні ML-платформи. Для простих моделей, невеликих експериментів або inference малих моделей здатна вистачати CPU. * Checkpoint — збережений стан моделі або тренування. Не варто починати одразу з великих LLM, якщо немає розуміння tensors, loss і training loop. Вибір deployment залежить від:
  • datasets;
  • tokenization;
  • vocabulary;
  • text pipelines.== Джерела ==

Dataset — це об’єкт, який описує, як отримати один приклад даних. # простий computer vision або NLP-проєкт. PyTorch — це не чарівна кнопка для AI, а потужний інструмент для тих, хто розуміє задачу, інформаційні дані, модель, метрики й бізнес-процес розгортання. Приклад:


Це одна з причин, чому PyTorch популярний серед дослідників. Його ризики й обмеження:

* потрібне розуміння ML;
* швидко зробити помилку в даних;
* training здатна бути дорогим;
* deployment потребує досвіду;
* моделі можуть помилятися;
* потрібна безпека checkpoints;
* production ML вимагає MLOps.<ref>https://docs.pytorch.org/vision/main/</ref>

== TorchServe ==

Dataset відповідає за логіку доступу до даних, а DataLoader — за batch, shuffle і завантаження. Pickle здатна виконувати код під час завантаження, якщо файл шкідливий. Приклад:

== Inference ==

model = nn.Linear(10, 1)

  • завантажувати моделі з офіційних джерел;
  • перевіряти репозиторій;
  • використовувати weights-only підхід, де це можливо;
  • ізолювати середовище;
  • не запускати невідомі checkpoints у production;
  • перевіряти hashes;
  • використовувати контейнеризацію. * '''Computational graph''' — граф операцій, через який рахуються градієнти. import random

Це дає гнучкість. * '''GPU''' — графічний процесор, який прискорює паралельні обчислення. Це критично для шарів на кшталт Dropout або BatchNorm, які поводяться по-різному під час навчання й inference. * простою SQL-аналітикою;

  • правилами;
  • Excel;
  • класичним machine learning у scikit-learn;
  • статистичною моделлю;
  • простим API;
  • готовим cloud AI-сервісом;
  • невеликою формулою;
  • звичайним Python-скриптом. * seed;
  • версій бібліотек;
  • версії CUDA;
  • dataset;
  • preprocessing;
  • random split;
  • hardware;
  • non-deterministic operations;
  • конфігурацій;
  • збережених параметрів. * '''torch.compile''' — механізм PyTorch 2.x для оптимізації виконання моделей. # NumPy basics. TorchScript здатна бути корисним, коли потрібно:

Приклад встановлення seed:<pre> from torch.utils.data import DataLoader, TensorDataset

  1. зробити prediction;
  2. порахувати loss;
  3. очистити старі градієнти;
  4. виконати backward;
  5. оновити параметри. # Логувати loss і metrics. optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

'''torchtext''' — бібліотека PyTorch для роботи з текстовими даними. # Тестувати inference окремо від training. Офіційна документація torchvision описує пакет як набір popular datasets, model architectures and common image transformations for computer vision.<ref>https://docs.pytorch.org/docs/stable/onnx_export.html</ref>

print(x.grad)

У бізнесі PyTorch здатна використовуватися для:

  • модель велика;
  • dataset великий;
  • одного GPU недостатньо;
  • потрібно пришвидшити навчання;
  • потрібне масштабування;
  • застосовується для production ML pipeline. model.eval()

torch.export важливий для сучасного deployment pipeline, де потрібно отримати стабільне представлення моделі для подальшої оптимізації або експорту. # Dataset і DataLoader. * '''Tensor''' — багатовимірний масив чисел. random.seed(seed)

with torch.no_grad(): PyTorch став популярним тому, що поєднав гнучкість Python із потужністю GPU-обчислень і зручністю для дослідників та інженерів. * '''PyTorch''' — відкритий фреймворк машинного навчання для Python. Це фреймворк, на основі якого можна створювати AI-компоненти для різних систем. x = torch.tensor(2.0, requires_grad=True)

optimizer.step()

Він корисний, коли потрібно:

import torch.nn as nn

конкурентні переваги:

Але PyTorch сам по собі не вирішує бізнес-задачу. def __init__(self):

'''TorchScript''' — це механізм серіалізації та оптимізації PyTorch-моделей для запуску поза звичайним Python-кодом. Його сильні сторони: == Коли PyTorch здатна бути зайвим ==

Спільне:

  • робота з масивами;
  • математичні операції;
  • broadcasting;
  • indexing;
  • vectorization. * '''Overfitting''' — ситуація, коли модель добре функціонує на training data, але погано на нових даних. Потрібні інформаційні дані, постановка задачі, метрики, інтеграційні функції ERP, тестування і технічна підтримка. Типові підходи:

TorchServe підходить не для всіх випадків. Багато моделей NLP і generative AI можна запускати з backend PyTorch. from torch.utils.data import Dataset

Завантаження:

Це інтуїтивно, тому що можна використовувати звичайні Python-конструкції:

  • завантаження аудіо;
  • перетворення сигналів;
  • spectrogram;
  • speech processing;
  • audio classification;
  • speech recognition;
  • audio augmentation. Mixed precision особливо корисна на сучасних GPU. * Linear;
  • Conv2d;
  • ReLU;
  • Dropout;
  • BatchNorm;
  • Transformer;
  • Embedding;
  • Loss functions;
  • Sequential;
  • Module.

Це дуже простий приклад, але він показує базовий цикл:

import torch У сучасних NLP-проєктах часто використовуються так само Hugging Face Transformers, tokenizers і datasets, але torchtext залишається частиною ширшої PyTorch-екосистеми. torch.save(model.state_dict(), "model.pt")

torch.load і безпека

Офіційна сторінка PyTorch зазначає, що scalable distributed training і performance optimization enabled by torch.distributed backend. torch.onnx.export(model, example_input, "model.onnx")

ONNX — це відкритий формат для представлення моделей машинного навчання. * CUDA — платформа NVIDIA для GPU-обчислень. Autograd — це механізм автоматичного диференціювання в PyTorch. PyTorch не виступає як готовим чатботом, ERP, CRM або BI-системою. * ONNX — відкритий формат для представлення ML-моделей. Головна ідея PyTorch — дати розробнику зручний Python-інструмент для роботи з tensor-обчисленнями, автоматичним диференціюванням і нейронними мережами.[2] seed = 42

Пояснення термінів

y = torch.randn(100, 1)

Notebook добре підходить для дослідження, але здатна створювати хаос у довгостроковій розробці. * Inference — використання навченої моделі для прогнозів. * класифікація зображень;

  • object detection;
  • image segmentation;
  • preprocessing;
  • transfer learning. torch.optim — це компонент оптимізаторів. * Pythonic стиль;
  • динамічний граф;
  • зручність debugging;
  • популярність у research;
  • гнучкість training loop;
  • сильну екосистему. * Training loop — цикл навчання моделі.GPU особливо важливий для:

import torch import torch Рекомендований порядок:

model.eval() PyTorch часто порівнюють із NumPy. Для PyTorch-проєкту MLOps здатна включати:

  • число — tensor із нульовою розмірністю;
  • список чисел — одномірний tensor;
  • таблиця — двомірний tensor;
  • зображення — тривимірний tensor;
  • batch зображень — чотиривимірний tensor. Особливо небезпечно бездумно запускати код або завантажувати ваги з неперевірених джерел. optimizer.zero_grad()

Головна ідея

inputs = inputs.to(device)

PyTorch і Jupyter Notebook

Потрібні: torchvision містить:

Метод forward описує, як інформаційні дані проходять через модель. * зручний Python API;

  • tensors;
  • GPU acceleration;
  • autograd;
  • torch.nn;
  • гнучкий training loop;
  • велика ERP-платформа;
  • технічна підтримка research і production;
  • torch.compile;
  • ONNX export;
  • distributed training;
  • інтеграційні функції ERP з Hugging Face;
  • активна спільнота. * Dataset — об’єкт, який описує доступ до прикладів даних. # Перевіряти безпеку завантажених моделей. # Не оцінювати модель тільки за однією метрикою. criterion = nn.CrossEntropyLoss()

Приклад:


* підтримує GPU;
* має autograd;
* інтегрується з Hugging Face;
* підтримує distributed training;
* дає можливість експериментувати;
* має широку екосистему. # Зберігати model checkpoints. * '''Autograd''' — автоматичне диференціювання в PyTorch. y.backward()
print(loss.item())

Він здатна бути зайвим, якщо задача вирішується:

* Python service;
* FastAPI або Flask;
* TorchServe;
* ONNX Runtime;
* mobile deployment;
* edge deployment;
* cloud inference;
* batch inference;
* streaming inference;
* інтеграційні функції ERP в backend.== Збереження і завантаження моделей ==

 return data, label

* profiler;
* logging;
* GPU monitoring;
* benchmarking;
* torch.compile;
* mixed precision;
* DataLoader tuning. * '''torchvision''' — бібліотека PyTorch для computer vision. # saving і loading models. У PyTorch можна створити власний Dataset:<pre>

* Data Parallel;
* DistributedDataParallel;
* Fully Sharded Data Parallel;
* model parallelism;
* pipeline parallelism. optimizer.step()
== PyTorch і бізнес-середовище ==

Але production-код краще виносити з notebook у структурований Python-проєкт. * SGD;
* Adam;
* AdamW;
* RMSprop;
* Adagrad.== DataLoader ==

офіційний tutorial зазначає, що torch.compile доступний у PyTorch 2.0 і новіших версіях, функціонує шляхом tracing Python-коду з PyTorch operations, а graph breaks означають втрачені функції ERP оптимізації, а не silent incorrectness. Він оптимізує:
== PyTorch і інформаційні дані ==

У PyTorch tensors схожі на масиви NumPy, але мають важливу перевагу: вони можуть працювати на GPU та брати участь в автоматичному обчисленні градієнтів. Документація torch.export-based ONNX Exporter описує, що exporter отримує модель і input, після чого формує ONNX-представлення. Приклади задач:

* evaluation;
* fairness checks;
* privacy review;
* human oversight;
* explainability;
* documentation;
* monitoring;
* чітке визначення меж використання.== Практичний висновок ==
== Autograd ==

PyTorch підтримує export у ONNX. PyTorch і TensorFlow — два найвідоміші фреймворки deep learning. # Документувати dataset, preprocessing і metrics. Простий приклад PyTorch-моделі:<pre>

== Типові помилки при використанні PyTorch ==
Варіанти deployment:

import torch

  • if;
  • for;
  • функції;
  • класи;
  • debugging;
  • print;
  • breakpoints;
  • інтерактивні notebooks. Tensor — це основна структура даних у PyTorch. Сьогодні обидва фреймворки мають сильні production-можливості. # Розділяти train, validation і test. У PyTorch training loop часто пишеться явно.== Computational graph ==

як приклад, у K2 ERP модель на PyTorch могла б допомагати з прогнозуванням або аналізом даних, але рішення для бізнесу про проведення документів, права доступу чи фінансову логіку мають залишатися в контрольованій ERP-архітектурі.== Приклад простої моделі ==

Коли PyTorch особливо корисний

torch.nn — це компонент PyTorch для створення нейронних мереж. np.random.seed(seed)

Динамічний граф робить PyTorch зручним для досліджень і експериментів. torch.manual_seed(seed) for epoch in range(num_epochs): Для навчання основ PyTorch краще спочатку зрозуміти звичайний training loop, а вже потім використовувати Lightning. Distributed training потрібен, коли:

  1. Починати з простої baseline-моделі. # Python.[3]
prediction = model(x)
  • класифікація зображень;
  • розпізнавання об’єктів;
  • сегментація зображень;
  • генерація тексту;
  • обробка природної мови;
  • аналіз аудіо;
  • рекомендаційні системи;
  • прогнозування часових рядів;
  • reinforcement learning;
  • anomaly detection;
  • generative AI;
  • fine-tuning моделей;
  • training власних моделей;
  • inference у production;
  • дослідницькі експерименти;
  • навчальні ML-проєкти.== GPU і CUDA ==

Training loop

Приклад:

Це інтуїтивно для:

Історично torchtext використовувалася для NLP-задач:
== PyTorch і NumPy ==
Оптимізатор оновлює параметри моделі під час навчання. * fine-tuning transformer models;
* inference;
* text classification;
* question answering;
* embeddings;
* language generation;
* multimodal models. * '''torch.nn''' — компонент PyTorch для нейронних мереж. * [[Штучний інтелект]]
* [[Генеративний AI]]
* [[Llama]]
* [[Meta AI]]
* [[Google Gemini]]
* [[GitHub Copilot]]
* [[Cursor]]
* [[Python]]
* [[Розробка в K2 ERP]]
* [[Тестування коду]]
* [[API K2 ERP]]
* [[Інтеграції K2 ERP]]
* [[Звітність K2 ERP]]

Lightning не замінює PyTorch, а додає організаційний шар. optimizer = optim.Adam(model.parameters(), lr=0.01)

== Для чого потрібен PyTorch ==
 def __getitem__(self, index):

class MyDataset(Dataset):
У ML критично вміти повторити експеримент. У PyTorch 2.x частина уваги змістилася до torch.compile, torch.export і новіших механізмів експорту, але TorchScript усе ще здатна зустрічатися в існуючих проєктах. for inputs, labels in train_loader:
model.load_state_dict(torch.load("model.pt"))
'''torchvision''' — бібліотека екосистеми PyTorch для комп’ютерного зору. * prediction;
* loss;
* zero_grad;
* backward;
* step. Для простих моделей здатна вистачити FastAPI-сервісу. Поширені помилки:

PyTorch застосовується для для задач машинного навчання й deep learning. Офіційна документація torch.onnx зазначає, що компонент torch.onnx captures the computation graph from a native PyTorch torch.nn.Module model and converts it into an ONNX graph. Він не веде обліковий облік, не проводить документи, не рахує складські залишки і не замінює бізнес-логіку. # autograd. loss.backward()

Hugging Face Transformers часто застосовується для разом із PyTorch. Окремо варто відзначити тобто в задачах, де використовуються нейронні мережі: комп’ютерний зір, обробка природної мови, генеративний AI, рекомендаційні системи, аналіз аудіо, наукові обчислення, reinforcement learning і інші AI-напрями. * '''torchaudio''' — бібліотека PyTorch для роботи з аудіо. це відкритий фреймворк машинного навчання; так само реалізовано який застосовують, коли потрібно для створення, навчання, тестування й розгортання моделей штучного інтелекту виступає ключовою рисою Python забезпечується через {{SEO|title=PyTorch — фреймворк машинного навчання для нейронних мереж, tensors, autograd і deep learning на Python|description=PyTorch — Wiki-стаття про популярний фреймворк машинного навчання і deep learning на Python. Розглянуто tensors, GPU-обчислення, autograd, torch.nn, torch.optim, DataLoader, навчання нейронних мереж, inference, torch.compile, TorchScript, ONNX, torchvision, torchaudio, distributed training, deployment, безпеку моделей, обмеження та практичне використання PyTorch у AI-проєктах.|keywords=PyTorch, torch, Python machine learning, deep learning Python, нейронні мережі Python, tensors PyTorch, autograd PyTorch, torch.nn, torch.optim, DataLoader, GPU PyTorch, CUDA PyTorch, torch.compile, TorchScript, ONNX PyTorch, torchvision, torchaudio, distributed training, AI Python, machine learning framework, ML фреймворк, PyTorch для розробників|alternativeTo=ручне написання нейронних мереж з нуля; складні низькорівневі ML-обчислення; NumPy без autograd; deep learning без GPU; ML-фреймворки без динамічного графа; закриті AI-платформи без контролю коду; ручне диференціювання; навчання моделей без екосистеми Python}}'''PyTorch'''. loss.backward()

* deep learning;
* research;
* custom neural networks;
* computer vision;
* NLP;
* generative AI;
* LLM fine-tuning;
* аудіоаналізу;
* recommendation systems;
* reinforcement learning;
* експериментів;
* Python-first ML-проєктів;
* GPU-обчислень.== TorchScript ==

Приклад:<pre>
Приклади:
class SimpleModel(nn.Module):

device = "cuda" if torch.cuda.is_available() else "cpu"

DataLoader особливо важливий для великих datasets, коли неможливо тримати всі інформаційні дані в одному batch. PyTorch і Hugging Face разом утворюють дуже популярний стек для modern AI development. # loss functions. Модель здатна:

GPU дає можливість значно пришвидшити обчислення, особливо для великих нейронних мереж.== Hugging Face і PyTorch == Офіційна сторінка PyTorch 2.x описує torch.compile як на 100% додаткову й optional функцію, що здатна підвищувати продуктивність і зберігає backward compatibility. * Distributed training — навчання моделі на кількох GPU або машинах. * Loss function — функція помилки. import torch

DataLoader — це інструмент PyTorch для завантаження даних batch-ами.torch.compile корисний для прискорення моделей, але його потрібно тестувати на конкретному проєкті. # Використовувати Git. Вибір часто залежить від команди, задачі, існуючої інфраструктури й досвіду. PyTorch — один із ключових фреймворків сучасного машинного навчання. loss = criterion(prediction, y)

Але GPU не завжди потрібен. Він здатна допомагати з:

optimizer.step()

PyTorch Lightning

Tensor можна уявити як багатовимірний масив чисел.== PyTorch і ERP-системи ==

офіційний tutorial PyTorch описує torch.autograd як automatic differentiation engine, який powers neural network training. PyTorch часто цінують за: У PyTorch граф зазвичай динамічний: він створюється під час виконання Python-коду. # Зберігати конфігурації експериментів. * torch.optim — компонент оптимізаторів. # tensors. PyTorch не завжди потрібен. Це інформаційні дані, код, параметри, метрики, середовище й бізнес-процес супроводу. # Перевіряти shapes tensors.[4]

Безпека моделей

PyTorch часто використовують у Jupyter Notebook. На офіційному GitHub-репозиторії PyTorch описується як Python-пакет із двома основними можливостями: tensor computation на кшталт NumPy із потужним GPU-прискоренням і deep neural networks на основі autograd.== Dataset ==

Моделі на кшталт Llama часто можуть використовувати PyTorch або сумісну інфраструктуру для training, fine-tuning, inference чи експериментів. # training loop. # GPU. Distributed training складніший за звичайне навчання, тому потребує досвіду, моніторингу й тестування. criterion = nn.MSELoss() x = torch.randn(100, 10) x = torch.tensor([1.0, 2.0, 3.0]).to(device)

Типовий приклад:


Метод model.eval() переводить модель у режим inference.== Mixed precision ==

loss = criterion(outputs, labels)

optimizer.zero_grad()

TensorFlow історично був сильним у production deployment, mobile і large-scale serving. self.linear = nn.Linear(10, 1)

Приклад:


Приклад:<pre>

* розбивати інформаційні дані на batch;
* перемішувати інформаційні дані;
* працювати з Dataset;
* завантажувати інформаційні дані паралельно;
* організовувати training loop;
* опрацьовувати великі набори даних.<ref>https://docs.pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html</ref>

* datasets;
* transforms;
* pre-trained models;
* image utilities;
* detection models;
* segmentation models;
* classification architectures. # evaluation.== PyTorch і етика AI ==

 loss.backward()
PyTorch не виступає як ERP-системою. Приклади loss functions:

== torch.optim ==
 def __len__(self):

import torch.optim as optim

'''Loss function''' — це функція помилки, яка показує, наскільки prediction моделі відрізняється від правильного результату. dataset = TensorDataset(x_train, y_train)
print(y)

* забути <code>optimizer.zero_grad()</code>;
* не викликати <code>model.eval()</code> під час inference;
* не використовувати <code>torch.no_grad()</code> під час inference;
* змішати CPU і GPU tensors;
* неправильно задати shape;
* переплутати batch dimension;
* використати неправильну loss function;
* не нормалізувати інформаційні дані;
* зробити data leakage між train і test;
* не перевірити class imbalance;
* не зберегти seed;
* завантажити неперевірений checkpoint;
* не моніторити overfitting;
* оцінювати модель тільки на training data. * навчання великих моделей;
* обробки зображень;
* deep learning;
* генеративного AI;
* великих batch;
* експериментів із нейронними мережами. * versioning dataset;
* versioning model weights;
* experiment tracking;
* model registry;
* CI/CD;
* testing;
* deployment;
* monitoring;
* drift detection;
* rollback;
* reproducibility;
* security scanning;
* documentation. * '''DataLoader''' — інструмент для batch-завантаження даних. У PyTorch можна переміщувати tensors і моделі на GPU:<pre>
PyTorch важливий для багатьох LLM-проєктів, тому що:

У PyTorch історично збереження моделей часто використовувало pickle-механізми. Після навчання модель потрібно запускати в реальному застосунку. * відтворювати bias;
* помилятися;
* погано працювати на групах, яких мало в training data;
* створювати несправедливі рішення для бізнесу;
* розкривати приватну інформацію;
* бути використаною для небажаних сценаріїв;
* давати надмірно впевнені predictions.== Продуктивність PyTorch ==
compiled_model = torch.compile(model)

'''MLOps''' — це практики розробки, розгортання й супроводу ML-моделей. # torch.nn. PyTorch на офіційній сторінці згадує production-ready функції ERP, зокрема TorchScript і TorchServe. # Використовувати GPU лише там, де це справді потрібно. * завантаженням чужих model weights;
* pickle-файлами;
* неперевіреними checkpoints;
* сторонніми datasets;
* невідомими pip-пакетами;
* виконанням коду з репозиторіїв;
* API, що приймають файли користувачів;
* adversarial inputs;
* витоком тренувальних даних;
* model inversion;
* prompt injection у LLM-системах. У ньому виступає як готові building blocks:
Ризики:
через '''PyTorch Lightning''' — це високорівневий фреймворк поверх PyTorch, який користувачі можуть структурувати training loop, логування, distributed training, checkpoints і експерименти. * створювати числові масиви — tensors;
* виконувати швидкі обчислення на CPU або GPU;
* описувати нейронні мережі;
* автоматизовано рахувати градієнти;
* навчати моделі;
* тестувати якість;
* зберігати ваги;
* запускати inference;
* експортувати моделі;
* масштабувати навчання;
* використовувати готові бібліотеки для зображень, аудіо, тексту й інших задач. Навіть найкраща модель у PyTorch не виправить погані інформаційні дані автоматизовано.

Повна відтворюваність у deep learning не завжди проста, особливо на GPU. outputs = model(inputs)

PyTorch особливо корисний для:

Такий підхід дає можливість на 100% контролювати бізнес-процес навчання. TorchServe — це інструмент для serving PyTorch-моделей. super().__init__()

loader = DataLoader(dataset, batch_size=32, shuffle=True) import numpy as np

NumPy чудово підходить для числових обчислень, але PyTorch краще підходить для deep learning. Inference — це використання вже навченої моделі для отримання predictions. Mixed precision — це використання різної числової точності, як приклад float16 або bfloat16, для прискорення навчання й зменшення використання пам’яті.== Loss function ==

Під час навчання нейронної мережі потрібно рахувати градієнти — тобто визначати, як зміна параметрів моделі впливає на помилку. Під час використання PyTorch для AI потрібно враховувати етичні питання.== Reproducibility ==

return self.linear(x)

Типова модель у PyTorch створюється як клас, що успадковує torch.nn.Module. Під час роботи з PyTorch варто дотримуватися таких правил: Потрібно контролювати:

torch.compile

torch.compile — це механізм PyTorch 2.x для оптимізації виконання моделей. # optimizers. def forward(self, x):

Tensors

Для PyTorch-проєкту reproducibility залежить від:

torchaudio корисний, якщо модель функціонує зі звуком, мовленням або сигналами.[5] Але моделі на PyTorch можуть бути допоміжним AI-шаром поруч із ERP:

torch.export

Історично TorchScript був важливим шляхом до production deployment. * CrossEntropyLoss — для класифікації;

  • MSELoss — для регресії;
  • BCEWithLogitsLoss — для binary classification;
  • L1Loss — для абсолютної помилки. * model serving;
  • versioning;
  • REST API;
  • metrics;
  • batching;
  • production deployment. torchaudio — бібліотека PyTorch для роботи з аудіо.[6]

Мета навчання — зменшити loss. return 1000

PyTorch для початківця

optimizer.zero_grad()

  • модель;
  • batch size;
  • GPU;
  • CPU;
  • memory;
  • DataLoader;
  • precision;
  • mixed precision;
  • torch.compile;
  • distributed training;
  • операції в Python loops;
  • формат даних;
  • bottlenecks у preprocessing;
  • I/O.== torchvision ==

Distributed training

Однією з причин популярності PyTorch виступає як зручна робота з GPU. Типові сценарії:

labels = labels.to(device)

import torch.nn as nn

Вона здатна використовуватися для:

torchaudio

PyTorch і Llama

Типові оптимізатори:

Модель машинного навчання — це не лише файл із вагами. Новий ONNX exporter у PyTorch використовує torch.export-based підхід. * TorchScript — механізм серіалізації та запуску PyTorch-моделей. ONNX корисний, коли модель потрібно запускати в іншому runtime або інтегрувати з платформами, які не виступає як PyTorch-native. Під час inference градієнти зазвичай не потрібні, тому застосовується для torch.no_grad():


for epoch in range(100):
Для оптимізації критично вимірювати, а не вгадувати. * швидкості;
* вартості;
* latency;
* batch size;
* hardware;
* кількості запитів;
* формату моделі;
* вимог до безпеки;
* простоти підтримки.

Під час навчання типовий цикл виглядає так: PyTorch дає можливість зберігати модель або її параметри. # Писати зрозумілий training loop. Distributed training — це навчання моделі на кількох GPU, кількох машинах або в кластері.


Потрібно бути обережним із:

 predictions = model(inputs)

Відмінності PyTorch:

* серіалізувати модель;
* запускати модель у середовищі без повного Python-коду;
* інтегрувати з C++;
* підтримувати старі production-процеси. # deployment basics.== torch.nn ==

* швидше навчання;
* менше використання пам’яті;
* можливість більших batch;
* краща продуктивність.== PyTorch і TensorFlow ==
== Хороші практики ==

Продуктивність PyTorch залежить від багатьох факторів:
== Дивіться так само ==

Але запуск великих LLM потребує значної інфраструктури, оптимізації й досвіду. y = x * 2

== PyTorch і MLOps ==

== torchtext ==

* прогноз попиту;
* класифікація звернень;
* OCR і обробка документів;
* anomaly detection;
* рекомендації;
* аналіз текстових коментарів;
* прогноз затримок;
* розпізнавання товарів на зображеннях;
* AI-помічники;
* аналіз звітів.== Deployment PyTorch-моделей ==

'''Computational graph''' — це граф обчислень, який описує, як одні tensors були отримані з інших. Початківцю варто вивчати PyTorch поступово. y = x ** 2

Перед production-використанням ONNX-експорт потрібно перевіряти: не всі операції можуть підтримуватися однаково. loss = criterion(outputs, labels)

Типові сценарії:

  • прогнозування попиту;
  • класифікації заявок;
  • аналізу відгуків;
  • рекомендацій;
  • пошуку аномалій;
  • розпізнавання документів;
  • комп’ютерного зору;
  • обробки аудіо;
  • оцінки ризиків;
  • сегментації клієнтів;
  • AI-помічників;
  • генеративних моделей;
  • автоматичного тегування;
  • аналізу текстів. Якщо спростити, PyTorch дає можливість:

Тому не варто завантажувати .pt або .pth файли з неперевірених джерел. * експериментів;

  • навчання;
  • візуалізації;
  • дослідження даних;
  • перевірки моделі;
  • побудови прототипів;
  • аналізу loss і metrics. Безпечніші практики:
  • GPU acceleration;
  • autograd;
  • neural networks;
  • training loops;
  • model deployment;
  • ML ecosystem. Приклад:

== ONNX == Типові інструменти: '''torch.export''' — сучасний механізм PyTorch для захоплення моделі в більш формальному представленні. * '''MLOps''' — практики розгортання й супроводу ML-моделей. # контролювати data leakage. import torch * джерело даних; * розмітку; * баланс класів; * дублікати; * витоки між train і test; * missing values; * bias; * preprocessing; * privacy; * права на використання; * актуальність dataset; * data drift.Тут PyTorch автоматизовано порахує похідну y = x² за x. * числова нестабільність;

  • потреба в перевірці метрик;
  • не всі моделі однаково добре працюють із меншою точністю.Такий підхід зручний, бо зберігаються ваги моделі, а структура класу залишається в коді. Не кожна задача з даними потребує neural network. Якість моделі залежить від якості даних. Найпоширеніший підхід — зберігати state_dict:

PyTorch автоматизовано будує computational graph і рахує градієнти через backward pass. * PyTorch — офіційна сторінка