PyTorch adalah framework untuk deep learning, cabang pembelajaran mesin yang melatih jaringan saraf berlapis, dan hadir sebagai rangkaian pustaka Python dengan struktur data, mesin komputasi, dan perkakas pelatihan. Topik ini memetakan posisi PyTorch di antara framework sejenis, ekosistem yang tumbuh di sekitarnya, dan karakter eksekusinya yang paling menonjol. Pembahasan sengaja berhenti pada tingkat peta besar tanpa membahas detail API, sehingga setelah selesai dibaca, alasan PyTorch dipilih sebagai pustaka utama jalur ini sudah terbentuk.
Posisi PyTorch di ranah deep learning#
PyTorch dikembangkan oleh Meta AI dan dirilis secara open source pada tahun 2016 sebagai penerus framework Torch yang ditulis dalam bahasa Lua. Dua bahan pokoknya adalah tensor, struktur data mirip array NumPy yang dapat dihitung di GPU (graphics processing unit, prosesor grafis), dan autograd, mekanisme yang merekam setiap operasi agar gradien dapat dihitung otomatis. Tensor menjadi wadah data dan hasil, sedangkan autograd menjadi mesin yang membuat pelatihan jaringan saraf mungkin dilakukan dalam belasan baris kode.
Sejak pertengahan 2010-an, PyTorch menjadi pilihan utama komunitas riset. Sebagian besar publikasi deep learning yang disertai kode sumber memuat implementasi PyTorch, dan sebagian besar model pretrained publik, yaitu model yang bobotnya sudah dilatih terlebih dahulu, menyediakan bobot berformat PyTorch. Kondisi ini lahir dari desain yang mengikuti gaya Python: kode model sulit dibedakan dari kode Python biasa, sehingga ide baru dapat diimplementasikan dan diuji dengan cepat.
Posisi yang sama kian berlaku di sisi production, tahap ketika model yang sudah dilatih disajikan kepada pengguna secara rutin. PyTorch menyediakan dukungan yang lengkap untuk tahap ini: torch.compile mempercepat eksekusi model tanpa menuntut perubahan kode, ekspor ONNX memindahkan model keluar dari Python, dan TorchServe menyajikan model sebagai layanan server. Jarak antara prototipe riset dan sistem yang berjalan di server pun tidak sejauh dulu.
Ekosistem di sekitar PyTorch#
PyTorch inti menyediakan fondasi komputasi, sementara kebutuhan per ranah data dilayani ekosistem pustaka turunan di sekitarnya. torchvision melayani ranah citra, mulai dari dataset siap unduh seperti MNIST dan CIFAR-10, model klasik dengan bobot hasil pelatihan sebelumnya, hingga transformasi augmentasi data. torchaudio menangani ranah audio dengan pola yang sama, sedangkan ranah teks dulu dilayani torchtext dan kini lebih banyak ditangani proyek di luar paket resmi PyTorch.
Pustaka eksternal terpenting adalah HuggingFace Transformers. Pustaka ini menghimpun implementasi ratusan arsitektur model bahasa dan visi, ditulis dengan PyTorch sebagai fondasi komputasinya, dan menjadi salah satu sebab dominasi PyTorch di komunitas riset. Melalui Transformers, model berskala besar dapat dimuat dalam beberapa baris kode, lalu disesuaikan (fine-tuning) untuk tugas tertentu dengan data yang jauh lebih sedikit.
Semua pustaka itu terpasang secara terpisah melalui pip, tetapi versinya tidak bebas dipilih. Setiap rilis torchvision dipasangkan dengan versi torch tertentu, sehingga yang lazim dilakukan adalah memutakhirkan keduanya secara bersamaan. Pola yang sama berlaku pada pustaka turunan lain di sekitar PyTorch.
Era PyTorch 2.x menambahkan lapisan lain bernama torch.compile. Fitur ini membaca urutan operasi pada model, lalu mengompilasinya menjadi kode yang lebih efisien tanpa menuntut perubahan pada model aslinya. Akselerasi semacam ini dahulu menjadi wilayah framework berbasis graf. Kini efek yang sama diperoleh tanpa melepas karakter eager execution yang dibahas pada bagian berikut.
Eager execution: setiap baris dievaluasi seketika#
Eager execution adalah mode eksekusi ketika setiap baris kode dievaluasi seketika oleh interpreter dan hasil setiap operasi langsung tersedia sebagai objek. Karakter ini paling mudah dipahami dengan kontras. Pada framework berbasis graf statis, seperti TensorFlow versi 1.x, urutan operasi hanya dijadwalkan terlebih dahulu dalam struktur graf, dan perhitungan baru benar-benar berjalan setelah graf lengkap dieksekusi melalui sesi khusus. Selama kode ditulis, nilai antara belum tersedia.
PyTorch sejak awal memilih jalan yang berbeda. Tidak ada graf yang harus dilengkapi dan tidak ada sesi yang harus dijalankan. Operasi tensor dieksekusi begitu barisnya dibaca, sehingga hasil antara dapat dicetak, diubah, atau diperiksa kapan saja. Contoh kecil berikut mengeksekusi tiga operasi berurutan dan mencetak hasilnya di tengah kode:
import torch
# setiap baris dievaluasi seketika, hasilnya langsung tersedia
a = torch.tensor([2.0, 4.0, 6.0])
b = torch.tensor([1.0, 1.0, 1.0])
c = a + b
print(c)
d = c * 2
print(d)
e = d.mean()
print(e)tensor([3., 5., 7.])
tensor([ 6., 10., 14.])
tensor(10.)Keluaran tersebut menunjukkan perilaku yang menjadi ciri PyTorch. Variabel c langsung memuat nilai [3, 5, 7], bukan rencana penjumlahan yang menunggu eksekusi, dan variabel d serta e mengikuti pola yang sama. Tidak ada langkah yang tertunda, sehingga kesalahan selalu menunjuk baris yang memicunya, debugger Python dapat dipasang di tengah komputasi, dan struktur model dapat diperiksa selangkah demi selangkah. Kenyamanan inilah yang menjadikan PyTorch lingkungan yang produktif untuk eksperimen.
Karakter ini juga membawa konsekuensi. Eksekusi per baris menyisakan overhead yang terasa pada model besar, dan di situlah torch.compile pada era 2.x mengambil peran dengan mengompilasi urutan operasi menjadi satu kesatuan yang efisien. Selama contoh pada jalur ini masih berukuran kecil, mode eager tanpa kompilasi sudah memadai.
Ringkasan#
- PyTorch adalah pustaka deep learning berbasis Python yang memadukan tensor, autograd, dan akselerasi GPU, dirilis Meta AI sejak 2016 sebagai penerus Torch.
- Ekosistem PyTorch meliputi pustaka turunan seperti torchvision dan proyek eksternal seperti HuggingFace Transformers, sementara torch.compile dan ekspor ONNX memperpendek jaraknya ke production.
- Eager execution mengevaluasi setiap baris seketika sehingga nilai antara selalu dapat diperiksa, dan karakter inilah yang membentuk gaya penelusuran kesalahan pada jalur ini.
Referensi#
- PyTorch documentation — PyTorch — Dokumentasi resmi lengkap, menjadi titik rujukan untuk seluruh API PyTorch.
- Deep Learning with PyTorch: a 60 Minute Blitz — PyTorch — Tutorial resmi pengenalan PyTorch yang mencakup tensor dan autograd.