# PyTorch — The Deep Learning Framework for Research and Production > PyTorch is an open-source deep learning framework by Meta that provides tensor computation with GPU acceleration and automatic differentiation. Its dynamic computation graph and Pythonic API make it the dominant framework for AI research and increasingly for production. ## Install Save as a script file and run: # PyTorch — The Deep Learning Framework for Research and Production ## Quick Use ```bash # Install PyTorch (CPU) pip install torch torchvision # Install with CUDA GPU support pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 # Quick demo python3 -c " import torch print(f'PyTorch: {torch.__version__}') print(f'CUDA available: {torch.cuda.is_available()}') x = torch.randn(3, 3) print(f'Tensor:\n{x}') " ``` ## Introduction PyTorch is the most popular deep learning framework for AI research and is rapidly becoming the standard for production as well. Created by Meta AI (Facebook), it provides tensors with GPU acceleration, automatic differentiation, and a dynamic computation graph that makes debugging and experimentation intuitive. With over 99,000 GitHub stars, PyTorch powers the majority of AI research papers, and is the framework behind models like Llama, Stable Diffusion, Whisper, and most state-of-the-art AI systems. Its "define-by-run" approach means models are built with standard Python — no compilation step, no special syntax. ## What PyTorch Does PyTorch provides the fundamental building blocks for deep learning: multi-dimensional tensors (like NumPy arrays but with GPU acceleration), automatic differentiation (autograd) for computing gradients, neural network modules (torch.nn), optimization algorithms (torch.optim), and data loading utilities (torch.utils.data). ## Architecture Overview ``` [Python User Code] model = nn.Linear(10, 1) loss = criterion(model(x), y) loss.backward() # autograd optimizer.step() | [torch.nn] Neural network modules: Linear, Conv2d, LSTM, Transformer, etc. | [Autograd Engine] Dynamic computation graph Automatic differentiation | [ATen Tensor Library (C++)] Tensor operations | +-------+-------+ | | | [CPU] [CUDA] [MPS] Intel NVIDIA Apple ARM GPU Silicon [Ecosystem] torchvision | torchaudio | torchtext Hugging Face | Lightning | ONNX ``` ## Self-Hosting & Configuration ```python import torch import torch.nn as nn from torch.utils.data import DataLoader, TensorDataset # Define a model class TextClassifier(nn.Module): def __init__(self, vocab_size, embed_dim, num_classes): super().__init__() self.embedding = nn.Embedding(vocab_size, embed_dim) self.encoder = nn.TransformerEncoder( nn.TransformerEncoderLayer(d_model=embed_dim, nhead=4), num_layers=2 ) self.classifier = nn.Linear(embed_dim, num_classes) def forward(self, x): x = self.embedding(x) x = self.encoder(x) x = x.mean(dim=1) # average pooling return self.classifier(x) # Training loop device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model = TextClassifier(10000, 256, 5).to(device) optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4) criterion = nn.CrossEntropyLoss() for epoch in range(10): for batch_x, batch_y in train_loader: batch_x, batch_y = batch_x.to(device), batch_y.to(device) optimizer.zero_grad() output = model(batch_x) loss = criterion(output, batch_y) loss.backward() optimizer.step() # Save model torch.save(model.state_dict(), "model.pt") ``` ## Key Features - **Dynamic Computation Graph** — define-by-run for intuitive debugging - **GPU Acceleration** — seamless CPU/GPU tensor operations - **Autograd** — automatic differentiation for gradient computation - **torch.nn** — comprehensive neural network building blocks - **Distributed Training** — multi-GPU and multi-node via DistributedDataParallel - **torch.compile** — JIT compilation for 2x+ speedup (PyTorch 2.0+) - **ONNX Export** — export models for cross-platform deployment - **Ecosystem** — torchvision, torchaudio, Hugging Face, PyTorch Lightning ## Comparison with Similar Tools | Feature | PyTorch | TensorFlow | JAX | MXNet | |---|---|---|---|---| | Creator | Meta | Google | Google | Apache | | Graph Type | Dynamic | Static + Eager | Functional | Hybrid | | Debugging | Intuitive (Python) | Good (Eager) | Moderate | Moderate | | Research Adoption | Dominant | High | Growing | Low | | Production | Improving | Excellent | Limited | Declining | | Compile/JIT | torch.compile | XLA | XLA/JIT | Hybridize | | Mobile | ExecuTorch | TF Lite | N/A | N/A | ## FAQ **Q: PyTorch vs TensorFlow — which should I learn first?** A: PyTorch if you are in research or want the most Pythonic experience. TensorFlow if you need production deployment tools (TF Serving, TF Lite, TF.js). Most new AI projects in 2024+ default to PyTorch. **Q: How do I speed up training?** A: Use torch.compile(model) for automatic optimization (PyTorch 2.0+), enable mixed precision with torch.amp, use DistributedDataParallel for multi-GPU, and optimize data loading with num_workers in DataLoader. **Q: Can PyTorch deploy to mobile?** A: Yes, via ExecuTorch (successor to PyTorch Mobile). Export models with torch.export and deploy to iOS, Android, and embedded devices. **Q: What is PyTorch Lightning?** A: Lightning is a high-level framework that organizes PyTorch code into reusable modules, handles distributed training boilerplate, and provides logging integration. Think of it as Keras for PyTorch. ## Sources - GitHub: https://github.com/pytorch/pytorch - Documentation: https://pytorch.org/docs - Website: https://pytorch.org - Created by Meta AI Research - License: BSD-style --- Source: https://tokrepo.com/en/workflows/34a91e34-3701-11f1-9bc6-00163e2b0d79 Author: Script Depot