Section sebelumnya kita sudah memakai torch sebagai kalkulator tensor. Section ini mengubah posisi kita dari pengguna operasi menjadi pembangun model utuh — dan langkah pertamanya adalah mengenal framework yang kita pakai secara sengaja, bukan sekadar kebetulan terpasang. Kita telusuri dari mana PyTorch berasal, filosofi yang membuatnya dominan di riset, ekosistem pendukungnya, lalu menutup dengan kode pertama yang dijalankan nyata di mesin ini.
Dari Torch ke PyTorch Foundation #
Jejak PyTorch bermula dari Torch, framework machine learning berbahasa Lua yang dirilis tahun 2002 — konsep tensor dan autograd-nya sama dengan yang kita kenal di section Tensor dan Komputasi . Karena Lua jarang dipakai industri, Facebook AI Research membangun penerusnya di atas Python dan merilisnya sebagai PyTorch pada Januari 2016, mempertahankan desain inti Torch dengan pintu terbuka ke ekosistem Python.
Sejak itu pengelolaannya terus melebar keluar satu perusahaan:
| Tahun | Peristiwa |
|---|---|
| 2002 | Torch dirilis — framework tensor berbasis Lua |
| Januari 2016 | Facebook AI Research merilis PyTorch sebagai open source |
| Desember 2018 | PyTorch 1.0 — API stabil, fondasi jalur produksi |
| 2020 | OpenAI mengumumkan konsolidasi risetnya ke PyTorch |
| September 2022 | PyTorch Foundation berdiri di bawah Linux Foundation |
| 2023 | PyTorch 2.0 memperkenalkan torch.compile |
| 2026 | Versi stabil terkini: PyTorch 2.14 (versi yang terpasang di course ini) |
Peralihan 2022 paling penting secara kelembagaan: pengembangan inti berpindah dari Meta ke PyTorch Foundation, yayasan netral di bawah Linux Foundation dengan anggota AWS, Google Cloud, Microsoft Azure, NVIDIA, dan Meta — model tata kelola yang sama dipakai Linux dan Kubernetes.
Filosofi Pythonic dan Eager Execution #
Ciri paling khas PyTorch adalah eager execution: setiap baris operasi tensor langsung dieksekusi saat baris tersebut berjalan — tidak ada fase terpisah “susun graph dulu, baru jalankan” sebagaimana TensorFlow 1.x dulu menuntut. Model pun terbaca sebagai program: kita bisa menyisipkan print di tengah perhitungan dan memakai if/for Python untuk mengendalikan alurnya. TensorFlow 2.x kemudian mengadopsi eager sebagai mode bawaannya.
Berkas langkah_pertama.py menjalankan operasi tensor pertama kita sambil memperlihatkan gaya Pythonic tersebut — angka-angka di antara operasi dicetak begitu dihitung:
"""Menjalankan PyTorch sebagai program Python biasa: langkah demi langkah.
Setiap operasi tensor langsung dieksekusi (eager execution), sehingga kita
bisa menyisipkan print, if, dan for di antara operasi tanpa perlu membangun
graph terlebih dahulu.
"""
import torch
torch.manual_seed(42)
print("Versi PyTorch :", torch.__version__)
print("CUDA tersedia :", torch.cuda.is_available())
print()
# Data: harga empat produk fiktif (dalam ribuan rupiah)
harga = torch.tensor([120.0, 85.0, 200.0, 150.0])
# Operasi pertama dijalankan saat baris ini tereksekusi, bukan ditunda
rata2 = harga.mean()
simpangan = harga.std()
print(f"rata-rata : {rata2.item():.2f}")
print(f"simpangan : {simpangan.item():.4f}")
harga_norm = (harga - rata2) / simpangan
print("ternormalisasi:", [round(v, 4) for v in harga_norm.tolist()])
# Cabang if Python biasa membaca nilai tensor lewat .item()
if harga_norm.max().item() > 1.0:
print("kesimpulan: ada harga yang jauh di atas rata-rata")
else:
print("kesimpulan: semua harga berdekatan")
# Perulangan Python biasa berjalan selangkah demi selangkah
jumlah_kuadrat = 0.0
for nilai in harga_norm.tolist():
jumlah_kuadrat += nilai ** 2
print(f"jumlah kuadrat elemen: {jumlah_kuadrat:.4f}")Output yang Dihasilkan:
Versi PyTorch : 2.14.1+cpu
CUDA tersedia : False
rata-rata : 138.75
simpangan : 48.7126
ternormalisasi: [-0.3849, -1.1034, 1.2574, 0.2309]
kesimpulan: ada harga yang jauh di atas rata-rata
jumlah kuadrat elemen: 3.0000Contoh di atas diuji pada wheel CPU (2.14.1+cpu), sehingga torch.cuda.is_available() bernilai False — sesuai mesin uji course ini. Mari kita telaah kode di atas baris per baris:
- Baris 10 (
torch.manual_seed(42)): mengunci generator acak bawaan PyTorch agar contoh dapat direproduksi. - Baris 12-14: pemeriksaan identitas lingkungan — versi pustaka dan ketersediaan GPU; keluaran
2.14.1+cpumenegaskan wheel CPU yang terpasang. - Baris 16-23 (operasi pertama):
hargadibuat dari list Python, laluharga.mean()danharga.std()tereksekusi begitu barisnya berjalan;.item()menarik angka tensor skalar menjadifloatPython. - Baris 25-26: normalisasi bekerja lewat broadcasting skalar-tensor — aturan yang sama dengan NumPy dari section Dasar Python .
- Baris 28-32: cabang
ifmemutuskan berdasarkan nilai tensor (harga_norm.max().item() > 1.0) — percabangan seperti ini butuh mekanisme khusus pada framework graph-first. - Baris 34-38: perulangan mengambil elemen lewat
.tolist(). Nilai3.0000bukan kebetulan: normalisasi memakai simpangan baku berpembagin-1, sehingga jumlah kuadrat elemen selalun-1.
PyTorch versus TensorFlow: Dua Filosofi #
PyTorch dan TensorFlow sama-sama framework besar yang kini menjalankan mode eager. Bedanya ada pada bahasa dasar: PyTorch memodelkan segala sesuatu sebagai objek Python, sedangkan TensorFlow menyediakan lapisan Keras di atas operasi tf. Tabel berikut merangkum perbandingan filosofinya:
| Aspek | PyTorch | TensorFlow 2.x |
|---|---|---|
| Mode eksekusi bawaan | eager; graph mengikuti kode yang berjalan | eager; graph dibangun eksplisit via tf.function |
| Gaya API utama | objek Python: Tensor, nn.Module | Keras (Model, Layer) + operasi tf |
| Debugging | print, pdb, traceback Python langsung | umumnya perlu menjalankan fungsi utuh dulu |
| Ekosistem khas | torchvision, torchaudio, Lightning | tf.data, TF Serving, TF Lite untuk perangkat mobile |
| Kekuatan historis | riset dan prototipe cepat | pipeline produksi skala besar dan edge device |
Pilihan di antara keduanya hari ini lebih soal selera tim dan ekosistem — kita akan menulis ulang pola model yang sama dengan Keras 3 pada section Deep Learning dengan TensorFlow .
Ekosistem dan Siapa yang Memakainya #
Inti PyTorch (torch) sengaja rampung — tensor, autograd, dan torch.nn. Pekerjaan domain spesifik ditangani pustaka saudara: torchvision untuk dataset citra, arsitektur vision, dan transformasi gambar; torchaudio untuk audio; torchtext untuk teks — yang terakhir ini kini berstatus maintenance karena komunitas NLP bermigrasi ke ekosistem Hugging Face yang justru dibangun di atas PyTorch. Di luar inti juga ada PyTorch Lightning untuk abstraksi training loop dan TorchServe untuk penyajian model. Seluruh API intinya terdokumentasi di docs.pytorch.org/docs/stable
.
Mayoritas paper riset deep learning baru hari ini memakai PyTorch. Di industri, Tesla memakainya untuk sistem vision kendaraan, OpenAI mengonsolidasikan risetnya ke PyTorch sejak 2020, dan anggota PyTorch Foundation turut menjaga pengembangannya. Sinyal tersebut berarti keterampilan PyTorch hari ini langsung terpakai di lapangan.
Dengan kerangka besarnya di tangan, langkah berikutnya adalah menguasai bahan bakunya: membuat tensor dari data nyata, mengelola dtype dan device, serta bolak-balik antara NumPy dan torch tanpa kehilangan kendali memori.