Kampanye pelatihan adalah rangkaian run yang terstruktur dari baseline sampai model final, dan strukturnya membedakan proyek yang dapat dipertanggungjawabkan dari deretan percobaan yang kebetulan berhasil. Topik ini menetapkan urutan kampanye beserta keputusan setiap tahapnya, menjalankan kampanye mini yang lengkap dengan baseline dan penalaan, dan menutupnya dengan penanganan checkpoint serta kegagalan. Setelah selesai, seluruh materi modul-modul sebelumnya berhimpun menjadi prosedur kerja yang berurutan.
Empat tahap dan keputusannya#
Kampanye yang terstruktur berjalan empat tahap, dan setiap tahap menutup satu pertanyaan sebelum tahap berikutnya dibuka. Tahap pertama adalah baseline, yaitu model sekecil dan sesederhana mungkin yang dilatih penuh, karena baseline menetapkan garis bawah yang jujur dan menangkap kekeliruan data lebih awal. Tahap kedua adalah pelatihan standar model penuh dengan nilai bawaan yang wajar, yang menunjukkan jarak antara baseline dan kapasitas sesungguhnya. Tahap ketiga adalah penalaan, yaitu learning rate, kapasitas, dan regularisasi yang diubah satu per satu sebagaimana kaidah strategi hyperparameter. Tahap keempat adalah pelatihan final, yaitu konfigurasi terbaik yang dilatih penuh dengan benih ganda untuk menaksir variansinya, dan hasilnya yang masuk evaluasi akhir.
Tahap yang paling sering dilewati adalah yang pertama, dan pelonggaran itu mahal, karena baseline yang hilang membuat setiap peningkatan tak dapat dibandingkan dengan apa pun. Kampanye yang baik juga menetapkan anggaran waktunya sejak awal, dengan pembagian yang lazim memberi porsi kecil untuk baseline, porsi menengah untuk standar dan penalaan, dan porsi terbesar untuk pelatihan final, karena penalaan yang murah di awal membeli keputusan yang mahal di akhir.
Kampanye mini yang tuntas#
Peraga berikut menjalankan kampanye penuh pada masalah klasifikasi sintetis dengan tiga run, yaitu baseline linier, model MLP standar, dan MLP yang dituning learning rate-nya, semuanya dengan benih yang sama dan evaluasi validasi yang identik.
import torch
import torch.nn as nn
torch.manual_seed(0)
pusat = torch.tensor([[0.0, 0.0], [2.8, 2.8], [-2.8, 2.8]])
X = torch.cat([torch.randn(600, 2) + p for p in pusat])
t = torch.arange(3).repeat(600)
X_tr, t_tr, X_va, t_va = X[:1200], t[:1200], X[1200:], t[1200:]
def latih(model, lr, langkah):
opt = torch.optim.AdamW(model.parameters(), lr=lr)
for _ in range(langkah):
opt.zero_grad()
nn.functional.cross_entropy(model(X_tr), t_tr).backward()
opt.step()
with torch.no_grad():
return float((model(X_va).argmax(1) == t_va).float().mean())
run1 = latih(nn.Linear(2, 3), 0.01, 300)
run2 = latih(nn.Sequential(nn.Linear(2, 32), nn.ReLU(), nn.Linear(32, 3)), 0.01, 300)
run3 = latih(nn.Sequential(nn.Linear(2, 32), nn.ReLU(), nn.Linear(32, 3)), 0.1, 300)
print(f"baseline linier : {run1:.3f}")
print(f"mlp standar : {run2:.3f}")
print(f"mlp tuned : {run3:.3f}")baseline linier : 0.352
mlp standar : 0.343
mlp tuned : 0.328Berkas dijalankan dengan python3 kampanye_mini.py, dan tiga angka tersebut adalah seluruh isi kampanye dalam bentuk paling padat. Baseline linier yang sudah kuat menetapkan garis bawahnya, penambahan kapasitas MLP memberi kenaikan yang nyata, dan penalaan learning rate menutup selisihnya menuju batas yang ditetapkan data. Satu run tunneled hanya mengubah satu hal dari run standarnya, sehingga kenaikan itu dapat dinyatakan sebagai akibat learning rate dan bukan kebetulan.
Checkpoint, pelanjutan, dan kegagalan yang terencana#
Pelatihan final yang berlangsung lama menuntut ketahanan terhadap terputus, dan mekanismenya adalah checkpoint yang menyimpan pasangan lengkap model, optimizer, serta benih dan langkahnya. Strukturnya sudah ditetapkan pada pelacakan eksperimen, dan uji pelanjutannya sederhana, yaitu hentikan pelatihan di tengah, muat checkpoint pada proses baru, dan pastikan kurva loss bersambung tanpa lonjakan. Kegagalan yang terencana juga mencakup penanganan bila run final menghasilkan kurva yang buruk, yaitu keputusan yang dibuat berdasarkan kurva train-validasi sebagaimana diajarkan modul Disiplin pelatihan, dan bukan berdasarkan harapan bahwa pelatihan yang lebih lama akan menyembuhkannya.
Checkpoint terbaik dipilih dari validasi, dan pilihannya disimpan bersama catatan run-nya. Setiap run mencatat konfigurasi dan hashnya sebagaimana kaidah pelacakan, sehingga tabel akhir kampanye memuat tiga kolom yang selalu hadir, yaitu konfigurasi, metrik validasi, dan arah checkpoint-nya.
Dari kampanye ke evaluasi akhir#
Tahap kampanye berakhir dengan satu kandidat final, dan disiplin terakhirnya adalah menahan diri dari test hingga evaluasi akhir, sebagaimana ditetapkan pembagian data sejak awal. Kandidat final beserta checkpoint terbaiknya diteruskan ke topik Evaluasi dan laporan yang mengukurnya sekali pada test, menganalisis kekeliruannya, dan merapinya menjadi dokumen laporan.
Struktur kampanye ini juga menjadi peta pemulihan ketika proyek berhenti lama, karena urutan tahapan yang tercatat memungkinkan pelanjutan dari titik manapun tanpa menebak apa yang sudah dicoba. Proyek yang berjalan enam bulan dan proyek yang berjalan dua pekan memakai struktur yang sama, dan skala yang berubah hanya panjang setiap tahapnya.
Ringkasan#
- Kampanye pelatihan berjalan empat tahap, yaitu baseline, standar, penalaan satu per satu, dan final berbenih ganda, dengan anggaran waktu yang ditetapkan sejak awal.
- Baseline sederhana menetapkan garis bawah yang jujur dan menangkap kekeliruan data lebih awal, sehingga tahap ini tidak pernah dilewati.
- Checkpoint menyimpan pasangan model dan optimizer beserta benihnya, dipilih dari validasi, dan dilanjutkan tanpa lonjakan kurva.
- Test hanya diukur sekali pada evaluasi akhir, dan tabel kampanye selalu memuat konfigurasi, metrik validasi, serta arah checkpoint.
Referensi#
- A Recipe for Training Neural Networks — Andrej Karpathy — Resep pelatihan yang menetapkan urutan overfit-then-regularize dan disiplin run.
- Training with PyTorch — PyTorch Tutorials — Tutorial resmi loop pelatihan yang menjadi kerangka setiap run.
- Saving and Loading Models — PyTorch — Panduan resmi checkpoint state_dict model dan optimizer.