
Dasar-Dasar PyTorch: Membangun dan Melatih Model
Framework deep learning paling populer — pengantar praktik langsung
Eager Execution dan Kecepatan Riset
PyTorch secara default memakai eager execution: tensor mengalir melalui operasi Python dan kamu bisa print, slice, dan debug seperti data biasa. Itu penting dalam finansial, di mana separuh pekerjaannya adalah membentuk ulang panel fitur yang berantakan dan memverifikasi bahwa tidak ada look-ahead yang menyelinap ke dalam tensor yang kamu masukkan ke model.
Bandingkan itu dengan workflow lama "bangun graph statis, lalu jalankan session." Peneliti masih mengekspor model untuk deployment, tapi pekerjaan sehari-hari mendapat manfaat dari kesegeraan: ubah satu layer, jalankan ulang cell, periksa aktivasi.
Tensor, Device, dan Autograd
Tensor adalah array multidimensi; requires_grad=True menandai leaf yang kamu inginkan derivatifnya. Autograd merekam operasi untuk membangun backward graph sehingga loss.backward() mengisi .grad pada parameter.
import torch
x = torch.randn(32, 10, requires_grad=True)
w = torch.randn(10, 1, requires_grad=True)
y = (x @ w).mean()
y.backward()
print(w.grad.shape)
Tempatkan tensor di cuda atau mps kalau tersedia; jaga penempatan device tetap konsisten agar kamu tidak secara tidak sengaja memindahkan tensor kecil bolak-balik setiap langkah.
nn.Module sebagai Komposisi
Subclass nn.Module, definisikan layer di __init__, dan sambungkan di forward. Registrasi memastikan parameter muncul di model.parameters() untuk optimizer.
import torch.nn as nn
class MLP(nn.Module):
def __init__(self, n):
super().__init__()
self.net = nn.Sequential(
nn.Linear(n, 64), nn.ReLU(), nn.Linear(64, 1)
)
def forward(self, x):
return self.net(x)
Untuk model sequence, layer nn.LSTM dan nn.TransformerEncoder umum dipakai; untuk alpha tabular, MLP dan gradient boosting masih berkompetisi — pilih berdasarkan disiplin validasi, bukan berdasarkan tren.
Loop Empat Baris (Plus Kebersihan)
Training itu repetitif dengan sengaja: forward, loss, zero grad, backward, step. Yang tambahan penting: model.train() vs model.eval() menyalakan/mematikan dropout dan batch norm; torch.no_grad() membungkus validasi untuk menghemat memori.
Dataset, DataLoader, dan Leakage
Subclass Dataset untuk mewujudkan fitur dan label; bungkus dengan DataLoader untuk batching. Untuk data kronologis, biasanya jaga shuffle=False pada validasi dan sering juga pada training kalau kamu men-slice jendela yang contiguous — sebaliknya kamu mengoles informasi lintas waktu.
Kalau kamu melatih pada data tick dari GaiaEx atau feed serupa, selaraskan bar ke satu jam yang sama, tangani print yang hilang secara eksplisit, dan versikan kode fiturmu bersama checkpoint model.
TorchScript dan Batas Serving
Untuk inference latensi rendah, tim sering men-trace atau men-script model, lalu menjalankannya di runtime C++ atau layanan sidecar. Jaga environment training (versi library) tetap terpin ke apa pun yang kamu pakai saat mengekspor.
PyTorch Lightning dan framework serupa mengurangi boilerplate untuk training multi-GPU dan logging; mereka tidak mengganti desain fitur yang cermat. Edge dalam trading biasanya datang dari kebersihan data dan kesadaran rezim, bukan dari optimizer yang sedikit lebih mewah.