GaiaEx AcademyGaiaEx Academy
Dasar-Dasar PyTorch: Membangun dan Melatih Model
DeveloperAI & ML13 min read

Dasar-Dasar PyTorch: Membangun dan Melatih Model

Framework deep learning paling populer — pengantar praktik langsung

Bagikan Postingan

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.

Dynamic graph: setiap forward pass bisa berbeda x f g loss .backward Percabangan dan control flow Python bisa mengubah operasi mana yang berjalan per batch — graph mengikuti kode. Tip finansial: kalau panjang sequence-mu bervariasi per aset, mask padding-nya alih-alih diam-diam merata-ratakan hari yang hilang ke dalam loss.
Operasi terhubung menjadi sebuah graph pada forward pass; autograd mengurainya pada backward.

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.

Satu langkah training (supervised) forward loss zero_grad backward → step Optimizer memperbarui bobot memakai grad yang tersimpan; clip norm kalau task-mu memicu lonjakan loss. Walk-forward validation pada time series — jangan pernah shuffle masa depan ke masa lalu. Fitur GaiaEx / Hyperliquid: label leakage adalah bug, bukan gaya-gayaan.
Loop yang sama berulang untuk setiap batch sampai kurva validasi berhenti membaik.

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.