PyTorch
Історично torchtext використовувалася для NLP-задач:
Приклад:
torchvision містить: random.seed(seed) == PyTorch і MLOps == * створювати числові масиви — tensors; * виконувати швидкі обчислення на CPU або GPU; * описувати нейронні мережі; * автономно рахувати градієнти; * навчати моделі; * тестувати якість; * зберігати ваги; * запускати inference; * експортувати моделі; * масштабувати навчання; * використовувати готові бібліотеки для зображень, аудіо, тексту й інших задач.; У PyTorch 2.x частина уваги змістилася до torch.compile, torch.export і новіших механізмів експорту, але TorchScript усе ще має змогу зустрічатися в існуючих проєктах.; # Використовувати Git.; # training loop.; def __len__(self): == Distributed training == Для навчання основ PyTorch краще спочатку зрозуміти звичайний training loop, а вже потім використовувати Lightning.; Навіть найкраща модель у PyTorch не виправить погані інформаційні дані автономно.; Він має змогу допомагати з: torchaudio корисний, якщо модель функціонує зі звуком, мовленням або сигналами.; * '''torchvision''' — бібліотека PyTorch для computer vision.; * завантаження аудіо; * перетворення сигналів; * spectrogram; * speech processing; * audio classification; * speech recognition; * audio augmentation.; # Логувати loss і metrics.; Це істотно для шарів на кшталт Dropout або BatchNorm, які поводяться по-різному під час навчання й inference.; return self.linear(x) У PyTorch історично збереження моделей часто використовувало pickle-механізми.; Вибір deployment залежить від: * потрібне розуміння ML; * без зайвих зусиль зробити помилку в даних; * training має змогу бути дорогим; * deployment потребує досвіду; * моделі можуть помилятися; * потрібна безпека checkpoints; * production ML вимагає MLOps.; * '''torch.compile''' — механізм PyTorch 2.x для оптимізації виконання моделей.; # Зберігати конфігурації експериментів.; * Pythonic стиль; * динамічний граф; * зручність debugging; * популярність у research; * гнучкість training loop; * сильну екосистему.; Відмінності PyTorch: == Hugging Face і PyTorch == Notebook добре підходить для дослідження, але має змогу створювати хаос у довгостроковій розробці.; loss.backward() Приклад:<pre> == torch.load і безпека == PyTorch особливо корисний для: import torch self.linear = nn.Linear(10, 1) == Практичний висновок == * SGD; * Adam; * AdamW; * RMSprop; * Adagrad.; Після навчання модель потрібно запускати в реальному застосунку.; # зробити prediction; # порахувати loss; # очистити старі градієнти; # виконати backward; # оновити параметри.; * '''ONNX''' — відкритий формат для представлення ML-моделей.; Для PyTorch-проєкту MLOps має змогу включати: dataset = TensorDataset(x_train, y_train) PyTorch часто використовують у Jupyter Notebook.; * '''Checkpoint''' — збережений стан моделі або тренування.;== Tensors == Продуктивність PyTorch залежить від багатьох факторів: Простий приклад PyTorch-моделі:<pre> == PyTorch і етика AI == Це дає гнучкість.; * profiler; * logging; * GPU monitoring; * benchmarking; * torch.compile; * mixed precision; * DataLoader tuning.; # evaluation.; Це інформаційні дані, код, параметри, метрики, середовище й бізнес-процес супроводу.; Він має змогу бути зайвим, якщо задача вирішується: Distributed training потрібен, коли: * робота з масивами; * математичні операції; * broadcasting; * indexing; * vectorization.; # Не оцінювати модель тільки за однією метрикою.; # простий computer vision або NLP-проєкт.; PyTorch — один із ключових фреймворків сучасного машинного навчання.;== Коли PyTorch має змогу бути зайвим == loader = DataLoader(dataset, batch_size=32, shuffle=True) with torch.no_grad():
PyTorch надає можливість зберігати модель або її параметри.; Типова модель у PyTorch створюється як клас, що успадковує torch.nn.Module.;Перед production-використанням ONNX-експорт потрібно перевіряти: не всі операції можуть підтримуватися однаково.; Вибір часто залежить від команди, задачі, існуючої інфраструктури й досвіду.; Mixed precision — це використання різної числової точності, як ілюстрація float16 або bfloat16, для прискорення навчання й зменшення використання пам’яті.; y = x ** 2
- evaluation;
- fairness checks;
- privacy review;
- human oversight;
- explainability;
- documentation;
- monitoring;
- чітке визначення меж використання.; Найпоширеніший підхід — зберігати
state_dict:
model = nn.Linear(10, 1) завдяки наявності '''PyTorch Lightning''' — це високорівневий фреймворк поверх PyTorch, який користувачі можуть структурувати training loop, логування, distributed training, checkpoints і експерименти.; labels = labels.to(device) outputs = model(inputs) Такий підхід надає можливість в цілому контролювати бізнес-процес навчання.; # Використовувати GPU лише там, де це справді потрібно.;== torch.nn ==
Приклади задач:
Приклад:
super().__init__() Якість моделі залежить від якості даних.; # Перевіряти shapes tensors.;
Завантаження:
Офіційна документація torchvision описує пакет як набір popular datasets, model architectures and common image transformations for computer vision.; * '''MLOps''' — практики розгортання й супроводу ML-моделей.; TorchServe підходить не для всіх випадків.;== PyTorch Lightning ==
== Для чого потрібен PyTorch == Tensor можна уявити як багатовимірний масив чисел.; '''DataLoader''' — це інструмент PyTorch для завантаження даних batch-ами.; Для простих моделей, невеликих експериментів або inference малих моделей має змогу вистачати CPU.; criterion = nn.MSELoss() model.eval()
- Починати з простої baseline-моделі.; Типові сценарії:
'''MLOps''' — це практики розробки, розгортання й супроводу ML-моделей.; PyTorch застосовується для задач машинного навчання й deep learning.; У PyTorch можна створити власний Dataset:<pre>
import torch.nn as nn
== TorchServe ==
- if;
- for;
- функції;
- класи;
- debugging;
- print;
- breakpoints;
- інтерактивні notebooks.;
torch.compile корисний для прискорення моделей, але його потрібно тестувати на конкретному проєкті.; Офіційна документація torch.onnx зазначає, що компонент torch.onnx captures the computation graph from a native PyTorch torch.nn.Module model and converts it into an ONNX graph.; Варіанти deployment:
prediction = model(x)
- versioning dataset;
- versioning model weights;
- experiment tracking;
- model registry;
- CI/CD;
- testing;
- deployment;
- monitoring;
- drift detection;
- rollback;
- reproducibility;
- security scanning;
- documentation.; * завантаженням чужих model weights;
- pickle-файлами;
- неперевіреними checkpoints;
- сторонніми datasets;
- невідомими pip-пакетами;
- виконанням коду з репозиторіїв;
- API, що приймають файли користувачів;
- adversarial inputs;
- витоком тренувальних даних;
- model inversion;
- prompt injection у LLM-системах.; * число — tensor із нульовою розмірністю;
- список чисел — одномірний tensor;
- таблиця — двомірний tensor;
- зображення — тривимірний tensor;
- batch зображень — чотиривимірний tensor.; * Tensor — багатовимірний масив чисел.; return 1000
torchvision
- забути
optimizer.zero_grad(); - не викликати
model.eval()під час inference; - не використовувати
torch.no_grad()під час inference; - змішати CPU і GPU tensors;
- неправильно задати shape;
- переплутати batch dimension;
- використати неправильну loss function;
- не нормалізувати інформаційні дані;
- зробити data leakage між train і test;
- не перевірити class imbalance;
- не зберегти seed;
- завантажити неперевірений checkpoint;
- не моніторити overfitting;
- оцінювати модель тільки на training data.; Безпечніші практики:
- експериментів;
- навчання;
- візуалізації;
- дослідження даних;
- перевірки моделі;
- побудови прототипів;
- аналізу loss і metrics.; predictions = model(inputs)
Tensor — це основна структура даних у PyTorch.; У сучасних NLP-проєктах часто використовуються додатково Hugging Face Transformers, tokenizers і datasets, але torchtext залишається частиною ширшої PyTorch-екосистеми.; * PyTorch — відкритий фреймворк машинного навчання для Python.; Його ризики й обмеження:
- числова нестабільність;
- потреба в перевірці метрик;
- не всі моделі однаково добре працюють із меншою точністю.; Pickle має змогу виконувати код під час завантаження, якщо файл шкідливий.;== Збереження і завантаження моделей ==
optimizer.zero_grad()
- datasets;
- transforms;
- pre-trained models;
- image utilities;
- detection models;
- segmentation models;
- classification architectures.;[1]
torch.compile
def __init__(self):
DataLoader
Офіційна сторінка PyTorch 2.x описує torch.compile як в цілому додаткову й optional функцію, що має змогу підвищувати продуктивність і зберігає backward compatibility.; Не кожна задача з даними потребує neural network.; Це комфортно, з цієї причини що можна використовувати звичайні Python-конструкції:
Новий ONNX exporter у PyTorch використовує torch.export-based підхід.; from torch.utils.data import DataLoader, TensorDataset import torch.nn as nn
np.random.seed(seed) Loss function — це функція помилки, яка показує, наскільки prediction моделі відрізняється від правильного результату.; def forward(self, x):
Його сильні сторони: torch.nn — це компонент PyTorch для створення нейронних мереж.; loss = criterion(prediction, y)
- Python service;
- FastAPI або Flask;
- TorchServe;
- ONNX Runtime;
- mobile deployment;
- edge deployment;
- cloud inference;
- batch inference;
- streaming inference;
- інтеграційні функціональні можливості в backend.; Під час роботи з PyTorch варто дотримуватися таких правил:
Безпека моделей
Але production-код краще виносити з notebook у структурований Python-проєкт.; Приклади loss functions: y = torch.randn(100, 1) PyTorch і TensorFlow — два найвідоміші фреймворки deep learning.; * простою SQL-аналітикою;
- правилами;
- Excel;
- класичним machine learning у scikit-learn;
- статистичною моделлю;
- простим API;
- готовим cloud AI-сервісом;
- невеликою формулою;
- звичайним Python-скриптом.;[2]
PyTorch часто порівнюють із NumPy.; Lightning не замінює PyTorch, а додає організаційний шар.; return data, label
- зручний Python API;
- tensors;
- GPU acceleration;
- autograd;
- torch.nn;
- гнучкий training loop;
- велика програмний пакет;
- супровід research і production;
- torch.compile;
- ONNX export;
- distributed training;
- інтеграційні функціональні можливості з Hugging Face;
- активна спільнота.; Особливо небезпечно бездумно запускати код або завантажувати ваги з неперевірених джерел.; # tensors.; * розбивати інформаційні дані на batch;
- перемішувати інформаційні дані;
- працювати з Dataset;
- завантажувати інформаційні дані паралельно;
- організовувати training loop;
- обробляти великі набори даних.; criterion = nn.CrossEntropyLoss()
У PyTorch training loop часто пишеться явно.; Приклад:
з цієї причини не варто завантажувати <code>.pt</code> або <code>.pth</code> файли з неперевірених джерел.; * менше boilerplate; * стандартизувати тренування; * простіше масштабувати; * зручніше логувати метрики; * працювати з callbacks; * організувати експерименти.;== GPU і CUDA == PyTorch не завжди потрібен.;<ref>https://docs.pytorch.org/docs/stable/onnx_export.html</ref> NumPy чудово підходить для числових обчислень, але PyTorch краще підходить для deep learning.; * '''torch.optim''' — компонент оптимізаторів.; PyTorch на офіційній сторінці згадує production-ready функціональні можливості, зокрема TorchScript і TorchServe.; x = torch.tensor([1.0, 2.0, 3.0]).to(device) PyTorch-проєкти мають безпекові ризики.; Ризики: Рекомендований порядок: optimizer.step() У PyTorch можна переміщувати tensors і моделі на GPU:<pre> '''TorchScript''' — це механізм серіалізації та оптимізації PyTorch-моделей для запуску поза звичайним Python-кодом.;<ref>https://pytorch.org/</ref> * модель велика; * dataset великий; * одного GPU недостатньо; * потрібно пришвидшити навчання; * потрібне масштабування; * застосовується production ML pipeline.;== torch.export == Потрібно бути обережним із: Типові інструменти: == TorchScript == == PyTorch і бізнес-середовище == У ML істотно вміти повторити експеримент.; Сьогодні обидва фреймворки мають сильні production-можливості.; optimizer = optim.Adam(model.parameters(), lr=0.01) офіційно затверджений tutorial зазначає, що torch.compile доступний у PyTorch 2.0 і новіших версіях, функціонує шляхом tracing Python-коду з PyTorch operations, а graph breaks означають втрачені функціональні можливості оптимізації, а не silent incorrectness.;== Пояснення термінів == * [[Штучний інтелект]] * [[Генеративний AI]] * [[Llama]] * [[Meta AI]] * [[Google Gemini]] * [[GitHub Copilot]] * [[Cursor]] * [[Python]] * [[Розробка в K2 ERP]] * [[Тестування коду]] * [[API K2 ERP]] * [[Інтеграції K2 ERP]] * [[Звітність K2 ERP]] Не варто починати одразу з великих LLM, якщо немає розуміння tensors, loss і training loop.;<ref>https://docs.pytorch.org/docs/stable/onnx.html</ref> У ньому є собою готові building blocks: == PyTorch і ERP-системи == * model serving; * versioning; * REST API; * metrics; * batching; * production deployment.; compiled_model = torch.compile(model) torch.onnx.export(model, example_input, "model.onnx") from torch.utils.data import Dataset == Хороші практики == class SimpleModel(nn.Module): * серіалізувати модель; * запускати модель у середовищі без повного Python-коду; * інтегрувати з C++; * підтримувати старі production-процеси.; PyTorch особливо популярний у deep learning.; class MyDataset(Dataset):
Такий підхід зручний, бо зберігаються ваги моделі, а структура класу залишається в коді.; optimizer.step()
torchaudio — бібліотека PyTorch для роботи з аудіо.;[3]
print(loss.item())
inputs = inputs.to(device)
Моделі на кшталт Llama часто можуть використовувати PyTorch або сумісну інфраструктуру для training, fine-tuning, inference чи експериментів.;== Mixed precision ==
- відтворювати bias;
- помилятися;
- погано працювати на групах, яких мало в training data;
- створювати несправедливі рішення для бізнесу;
- розкривати приватну інформацію;
- бути використаною для небажаних сценаріїв;
- давати надмірно впевнені predictions.;Метод
model.eval()переводить модель у режим inference.;== Дивіться додатково ==
Computational graph
- seed;
- версій бібліотек;
- версії CUDA;
- dataset;
- preprocessing;
- random split;
- hardware;
- non-deterministic operations;
- конфігурацій;
- збережених параметрів.; print(x.grad)
- Python.;== Продуктивність PyTorch ==
DataLoader особливо важливий для великих datasets, коли неможливо тримати всі інформаційні дані в одному batch.; import numpy as np
y = x * 2
for epoch in range(100):
torch.compile — це механізм PyTorch 2.x для оптимізації виконання моделей.; Спільне: У PyTorch граф зазвичай динамічний: він створюється під час виконання Python-коду.; # Dataset і DataLoader.; optimizer = torch.optim.Adam(model.parameters(), lr=0.001) Він сприяє:
Це комфортно для:
import random Якщо спростити, PyTorch надає можливість: torch.export важливий для сучасного deployment pipeline, де потрібно отримати стабільне представлення моделі для подальшої оптимізації або експорту.; На офіційному GitHub-репозиторії PyTorch описується як Python-пакет із двома основними можливостями: tensor computation на кшталт NumPy із потужним GPU-прискоренням і deep neural networks на основі autograd.; * prediction;
- loss;
- zero_grad;
- backward;
- step.; * torchaudio — бібліотека PyTorch для роботи з аудіо.; * Computational graph — граф операцій, через який рахуються градієнти.; * Autograd — автоматичне диференціювання в PyTorch.; # GPU.; # NumPy basics.; Під час використання PyTorch для AI потрібно враховувати етичні питання.; def __getitem__(self, index):
Але запуск великих LLM потребує значної інфраструктури, оптимізації й досвіду.; # Перевіряти безпеку завантажених моделей.; * torch.nn — компонент PyTorch для нейронних мереж.;Тут PyTorch автономно порахує похідну y = x² за x.; import torch.optim as optim
TorchServe — це інструмент для serving PyTorch-моделей.; * Loss function — функція помилки.;== torchtext ==
torchaudio
Метод forward описує, як інформаційні дані проходять через модель.; # autograd.; PyTorch — це не чарівна кнопка для AI, а потужний інструмент для тих, хто розуміє задачу, інформаційні дані, модель, метрики й бізнес-процес розгортання.; # optimizers.; * швидкості;
- вартості;
- latency;
- batch size;
- hardware;
- кількості запитів;
- формату моделі;
- вимог до безпеки;
- простоти підтримки.; # deployment basics.;Повна відтворюваність у deep learning не завжди проста, особливо на GPU.; це відкритий фреймворк машинного навчання; додатково реалізовано який застосовують, коли потрібно для створення, навчання, тестування й розгортання моделей штучного інтелекту виступає ключовою рисою Python забезпечується через {{SEO