PyTorch

PyTorch adalah framework open-source machine learning yang mempercepat jalur dari prototyping penelitian hingga deployment produksi. PyTorch menawarkan komputasi tensor dengan akselerasi GPU yang kuat dan deep neural networks yang dibangun di atas sistem autograd berbasis tape.

Mengapa PyTorch?

  • Dynamic Computation Graph - Fleksibel untuk debugging dan eksperimen

  • Pythonic - Terasa natural bagi pengguna Python

  • GPU Acceleration - Mudah berpindah antara CPU dan GPU

  • Ekosistem Kaya - TorchVision, TorchText, TorchAudio, dll

Instalasi

# CPU only
pip install torch

# Dengan CUDA (GPU support)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

Import PyTorch

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

# Set seed untuk reprodusibilitas
torch.manual_seed(42)

Daftar Materi

Contoh Cepat

import torch
import torch.nn as nn
import torch.optim as optim

# 1. Buat data sederhana
X = torch.randn(100, 10)
y = torch.randn(100, 1)

# 2. Definisikan model
model = nn.Sequential(
    nn.Linear(10, 32),
    nn.ReLU(),
    nn.Linear(32, 1)
)

# 3. Loss dan optimizer
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)

# 4. Training loop
for epoch in range(100):
    optimizer.zero_grad()
    outputs = model(X)
    loss = criterion(outputs, y)
    loss.backward()
    optimizer.step()
    
    if (epoch + 1) % 20 == 0:
        print(f"Epoch {epoch+1}, Loss: {loss.item():.4f}")

PyTorch vs NumPy

import torch
import numpy as np

# NumPy
np_arr = np.array([1, 2, 3])
print(np_arr * 2)  # [2 4 6]

# PyTorch
torch_tensor = torch.tensor([1, 2, 3])
print(torch_tensor * 2)  # tensor([2, 4, 6])

# Konversi
tensor_from_np = torch.from_numpy(np_arr)
np_from_tensor = torch_tensor.numpy()

GPU Support

import torch

# Cek apakah CUDA tersedia
print(f"CUDA available: {torch.cuda.is_available()}")

if torch.cuda.is_available():
    print(f"Device name: {torch.cuda.get_device_name(0)}")

# Pindahkan tensor ke GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tensor = torch.randn(3, 3).to(device)
print(f"Tensor device: {tensor.device}")

Alur Kerja PyTorch

┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   Data      │ → │  DataLoader │ → │   Model     │
│   (Tensor)  │    │   (Batch)   │    │ (nn.Module) │
└─────────────┘    └─────────────┘    └──────┬──────┘
        ┌─────────────────────────────────────┘
┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   Forward   │ → │    Loss     │ → │  Backward   │
│   Pass      │    │   Function  │    │   Pass      │
└─────────────┘    └─────────────┘    └──────┬──────┘
                                      ┌─────────────┐
                                      │  Optimizer  │
                                      │   Step      │
                                      └─────────────┘

Langkah Selanjutnya

Lanjutkan ke Tensor untuk mempelajari struktur data dasar PyTorch.