PyTorch adalah framework deep learning yang dibuat oleh Facebook AI Research (FAIR). Banyak laboratorium riset dan tim produk menggunakan PyTorch. Panduan ini membantu Anda memulai membangun, melatih, dan menguji model deep learning dengan Python.
PyTorch menawarkan grafik komputasi dinamis dan API yang mudah digunakan. Ini membuat debugging lebih mudah. Dukungan GPU dan integrasi dengan paket seperti torchvision dan torchaudio membuat PyTorch ideal untuk riset dan produksi.
PyTorch dan TensorFlow sering dibandingkan. Banyak peneliti memilih PyTorch karena fleksibilitas dan kecepatan prototyping. Namun, TensorFlow tetap populer di skala produksi besar.
Statistik menunjukkan PyTorch sangat populer. Artikel, tutorial, dan diskusi komunitas tentang PyTorch mendapatkan banyak perhatian. Ini menunjukkan PyTorch adalah pilihan favorit untuk deep learning dengan Python.
Apa Itu PyTorch?
PyTorch adalah library tensor yang dirancang khusus untuk deep learning. Ini menggunakan antarmuka Python yang mudah dipahami. Kombinasi dari backend GPU-accelerated dan API Python menjadikannya populer di kalangan peneliti dan praktisi.
Dikembangkan oleh Facebook AI Research, proyek ini berkembang pesat. Kontribusi dari universitas dan perusahaan riset membuatnya cepat berkembang. Rilis berkala menambah fitur untuk produksi dan eksperimen, menjaga komunitas tetap aktif.
PyTorch memiliki dua tingkat API. API low-level memberi kontrol penuh pada tensor dan operasi matematis. Sedangkan API high-level berbasis nn.Module mempercepat pembuatan model sebagai pustaka neural network yang modular.
Sifat graf komputasi dinamis memudahkan debug dan prototipe. Pengelolaan tensor yang intuitif membantu pemula memahami alur kerja deep learning lebih cepat daripada beberapa alat lain.
Perbandingan kerangka kerja sering terjadi. Dalam diskusi pytorch vs tensorflow, PyTorch sering dipuji karena kelincahan eksperimen. Sedangkan TensorFlow dikenal dengan ekosistem produksi dan tooling yang lengkap.
Kasus penggunaan umum meliputi riset, prototyping model, serta pemrosesan gambar dan audio. Modul tambahan seperti torchvision dan torchaudio membuat PyTorch relevan untuk tugas pembelajaran mesin terapan.
Untuk pembaca di Indonesia, PyTorch cocok dipelajari lewat Google Colab atau Kaggle. Dukungan pada GPU cloud mempermudah pengerjaan proyek pendidikan, proyek mini, dan pengembangan model yang siap dipakai di lingkungan produksi.
Instalasi dan Setup GPU
Panduan ini membantu Anda menginstal PyTorch dengan baik. Anda bisa memilih antara pip dan conda, tergantung pada manajemen paket yang Anda gunakan. Untuk instalasi pip, gunakan perintah pip install torch torchvision torchaudio. Tambahkan –index-url https://download.pytorch.org/whl/cu118 untuk paket yang sesuai dengan CUDA 11.8.
Anda juga bisa menggunakan conda, LibTorch untuk C++, atau kompilasi dari sumber. Panduan resmi PyTorch memberikan pilihan yang jelas untuk setiap platform. Dengan conda, torch cudatoolkit akan diinstal otomatis sesuai versi CUDA yang dipilih.
Untuk memastikan instalasi berhasil, jalankan contoh Python sederhana. Gunakan import torch; device = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’); print(f’Using device: {device}’). Ini akan mengecek apakah PyTorch mendeteksi GPU. Jika masih menggunakan CPU, cek nvidia-smi untuk memeriksa driver dan GPU.
Untuk belajar dan eksperimen, gunakan Google Colab atau Kaggle. Kedua layanan ini menawarkan akses GPU gratis dan sudah memiliki paket umum. Di Colab, aktifkan GPU di Runtime > Change runtime type sebelum instalasi PyTorch.
Praktik terbaik: pastikan versi torch cudatoolkit sesuai dengan driver NVIDIA. Driver yang terlalu lama bisa membuat instalasi gagal atau performa menurun. Gunakan torch.cuda.is_available() untuk memeriksa apakah GPU terdeteksi. Jika ada masalah, cek versi CUDA dan log nvidia-smi untuk lebih lanjut.
| Langkah | Contoh Perintah | Keterangan |
|---|---|---|
| Instal cepat via pip | pip install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu118 | Cocok untuk CUDA 11.8, menginstal paket yang kompatibel dengan torch cudatoolkit |
| Instal lewat conda | conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch | Conda menangani dependensi cuda pytorch dan cocok untuk lingkungan terisolasi |
| Verifikasi runtime | python -c “import torch; print(torch.cuda.is_available())” | Mengecek apakah instalasi mendeteksi gpu pytorch |
| Diagnostik GPU | nvidia-smi | Memeriksa versi driver NVIDIA serta penggunaan memori GPU |
| Alternatif C++ | Gunakan LibTorch (prebuilt atau build dari source) | Untuk aplikasi produksi dengan C++ dan integrasi rendah-level |
Jika tidak ada GPU, PyTorch akan menggunakan CPU. Untuk produksi, lakukan pengujian pada perangkat yang mirip dengan target deployment. Ini membantu mendeteksi perbedaan performa dan kompatibilitas cuda pytorch sejak awal.
Konsep Dasar Tensor & Autograd

Tensor adalah struktur data dasar di PyTorch yang mirip dengan array multidimensi. Misalnya, data numerik disimpan dalam tensor dengan tipe seperti torch.float32. Sedangkan, label kategorikal sering kali menggunakan torch.long.
Membuat tensor bisa langsung dari list atau numpy array. PyTorch menyediakan berbagai fungsi seperti torch.ones dan torch.zeros untuk mempercepat eksperimen. Konversi antara numpy dan tensor juga mudah, sehingga keduanya bisa berinteraksi dengan baik.
Ada berbagai operasi dasar seperti indexing, slicing, dan operasi aritmatika. Untuk mengubah dimensi, gunakan cat untuk menggabungkan dan cek ukuran dengan shape atau size. Misalnya, ambil elemen antara 0.5 dan 0.8 untuk analisis fitur.
Autograd adalah sistem gradien otomatis di PyTorch yang menghitung turunan saat backward pass. Aktifkan autograd pada parameter model dengan requires_grad. Gunakan torch.no_grad() saat inferensi untuk menghemat memori.
Autograd sangat penting dalam training karena menghitung gradien loss terhadap parameter tanpa manual diferensiasi. Optimizer seperti Adam atau SGD menggunakan gradien ini untuk memperbarui bobot model secara efisien.
Best practice: perhatikan dtype dan device ketika memindahkan tensor ke GPU. Pastikan semua tensor memiliki dtype yang konsisten, seperti semua fitur bertipe torch.float32. Gunakan torch.no_grad() saat evaluasi untuk menghemat memori.
Ringkasnya, memahami torch tensor dan autograd sangat membantu dalam pembuatan model yang stabil dan efisien. Dengan mengelola dtype, device, dan mode gradien otomatis, alur training menjadi lebih cepat dan dapat diandalkan.
Membangun Model dengan torch.nn
torch.nn adalah inti dari PyTorch untuk merancang model. Kita menggunakan kelas dasar nn.Module untuk membangun model. Ini melalui metode __init__ untuk mengatur layer dan forward untuk mengatur alur data.
Contoh sederhana adalah model Wine Quality dengan tiga layer fully connected. Di __init__, kita buat fc1 = Linear(11,128), fc2 = Linear(128,64), dan fc3 = Linear(64,3). Kita gunakan ReLU di layer hidden untuk mempelajari pola non-linear.
Untuk fungsi loss, kita pilih nn.CrossEntropyLoss untuk klasifikasi multi-kelas. Optimizer seperti optim.Adam membantu model cepat konvergen. Coba juga SGD atau RMSprop untuk meningkatkan performa.
Memindahkan model ke device yang tepat sangat penting. Model = WineQualityModel(); model.to(device). Ini memastikan proses komputasi di CPU atau GPU, mempercepat pelatihan jika ada GPU.
Ukuran layer harus sesuai dengan kompleksitas dataset. Pastikan dimensi layer konsisten untuk menghindari error. Jika dataset kompleks, tambah layer hidden secara bertahap dan pantau validasi.
Simpan model dengan torch.save(model, ‘model.pth’) atau simpan state_dict untuk fleksibilitas: torch.save(model.state_dict(), ‘state.pth’). Untuk memuat kembali, gunakan torch.load dan load_state_dict.
Ringkasnya, pahami pentingnya pytorch nn module dan nn.Module dalam membuat model yang kuat. Struktur yang rapi, pilihan layer yang tepat, dan penggunaan nn.CrossEntropyLoss akan mempercepat eksperimen dan deployment.
Data Pipeline: Dataset dan DataLoader
Mulai dengan memuat dataset, seperti Wine Quality Multiclass dari URL resmi. Pisahkan fitur dan labelnya. Gunakan train_test_split dari sklearn untuk membagi data menjadi 80% latih dan 20% uji.
Normalisasi fitur penting untuk stabilitas pelatihan. Gunakan MinMaxScaler dari sklearn. Lakukan fit pada data latih dan transform pada data uji untuk mencegah data leakage.
Untuk label kategorikal seperti LOW, STANDARD, HIGH, gunakan LabelEncoder dari sklearn. Ini mengubah label menjadi nilai numerik yang memudahkan loss function dan metrik klasifikasi.
Setelah preprocessing, konversi data ke tensor PyTorch. Misalnya, torch.tensor(X_train, dtype=torch.float32) untuk fitur dan torch.tensor(y_train, dtype=torch.long) untuk label. Format ini kompatibel dengan TensorDataset dan torch.utils.data.
Buat objek dataset dan dataloader menggunakan TensorDataset. Misalnya, train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True). Gunakan test_loader dengan batch_size=64 dan shuffle=False untuk evaluasi.
Manfaat dataloader terlihat saat batch training. Mereka membuat iterasi lebih efisien, mempercepat pengacakan data, dan mengelola memori untuk dataset besar. torch.utils.data mendukung paralelisme dengan num_workers.
Simpan objek preprocessing untuk saat inference. Gunakan joblib.dump untuk menyimpan scaler dan label encoder. Ini menjaga konsistensi transformasi saat model di-deploy.
Ringkas alur teknis dalam langkah terstruktur:
- Muat data, pisah fitur-label dengan train_test_split.
- Normalisasi memakai MinMaxScaler, fit di data latih saja.
- Encode label dengan LabelEncoder.
- Konversi ke torch.tensor untuk fitur dan label.
- Buat TensorDataset dan DataLoader untuk batch training.
- Simpan scaler dan encoder menggunakan joblib.dump.
Penerapan pipeline ini memastikan reproducibility dan performa saat skenario training dan inference di lingkungan produksi. Desain yang konsisten memudahkan eksperimen dan tuning hyperparameter tanpa mengorbankan integritas data.
Training Loop Step-by-step

Training loop adalah kerangka kerja dasar untuk melatih model di PyTorch. Di inti proses ini berjalan per epoch pytorch: for epoch in range(num_epochs): model.train(); iterasi batch dari train_loader; optimizer.zero_grad(); outputs = model(inputs); loss = criterion(outputs, labels); loss.backward(); optimizer.step(); akumulasi running_loss.
Setiap langkah memiliki peran jelas. Panggilan optimizer.zero_grad() mereset gradien agar akumulasi tidak tercampur antar batch. Fungsi loss.backward() menghitung gradien lewat autograd sehingga turunan tersedia untuk parameter.
Langkah optimizer.step() menerapkan update parameter berdasarkan gradien yang telah dihitung. Dalam praktik, urutan ini menjamin stabilitas saat melakukan backprop dan mempercepat konvergensi di pytorch training loop.
Beberapa hyperparameter patut diperhatikan. Contoh setting: learning rate lr=0.003 dengan Adam, jumlah epoch pytorch = 100, batch_size = 64. Pilihan ini sering memberi titik awal yang baik sebelum eksperimen lebih lanjut.
Untuk memantau pelatihan, cetak loss rata-rata tiap beberapa epoch. Misal setiap 10 epoch tampilkan nilai running_loss/steps. Contoh perkembangan loss bisa turun dari 0.74 pada epoch 10 menjadi 0.33 pada epoch 100, memberi gambaran perbaikan model.
Eksperimen diperlukan untuk hasil optimal. Coba optimizer lain seperti SGD atau RMSprop, terapkan scheduler learning rate, dan tambahkan regularisasi seperti dropout atau weight decay untuk meningkatkan generalisasi.
Praktik yang direkomendasikan mencakup pemanggilan model.train() sebelum memulai iterasi, menyimpan model berkala dengan torch.save, dan memastikan inputs serta labels dipindahkan ke device yang benar saat memakai GPU. Langkah-langkah kecil ini memperkecil kesalahan saat menjalankan training loop.
| Komponen | Fungsi | Contoh Nilai |
|---|---|---|
| optimizer.zero_grad() | Reset gradien sebelum backward | Dipanggil setiap batch |
| loss.backward() | Hitung gradien via autograd | Setiap batch setelah loss |
| optimizer.step() | Update parameter model | Adam lr=0.003 atau SGD lr=0.01 |
| epoch pytorch | Iterasi penuh atas dataset | Contoh: 100 |
| Monitoring | Cetak loss rata-rata per N epoch | Setiap 10 epoch: 0.74 → 0.33 |
| Praktik | model.train(), simpan berkala, pindah ke device | torch.save, .to(device) |
Evaluasi dan Inference
Mulai evaluasi pytorch dengan model.eval(). Ini menonaktifkan fitur seperti dropout. Ini membuat prediksi lebih stabil saat inference.
Gunakan torch.no_grad() untuk mematikan perhitungan gradien. Ini menghemat memori dan mempercepat proses. Iterasi test_loader menghasilkan outputs = model(inputs).
Untuk label prediksi, gunakan torch.max(outputs, 1). Ini memungkinkan kita menghitung metrik kinerja seperti accuracy_score dari sklearn.
Untuk analisis lebih lanjut, tambahkan precision, recall, dan f1-score. Gunakan confusion matrix untuk melihat kesalahan klasifikasi.
Contoh alur inference pytorch untuk data baru:
- Muat model dan preprocessing yang tersimpan (scaler, label encoder).
- Transformasi data baru dengan scaler dan ubah ke tensor.
- Pindahkan tensor ke device yang sesuai jika perlu.
- Jalankan model.eval() lalu with torch.no_grad() untuk prediksi.
- Gunakan inverse_transform pada encoder untuk mendapatkan label kategori akhir.
Simpan scaler dan label encoder dengan joblib. Ini penting untuk konsistensi saat deployment.
Contoh ringkasan metrik dari evaluasi pada dataset Wine Quality.
| Metode | Akurasi | Precision | Recall | F1-score | Catatan |
|---|---|---|---|---|---|
| Model baseline | 0.668 | 0.65 | 0.66 | 0.655 | Evaluasi menggunakan accuracy_score dan confusion matrix untuk analisis kesalahan |
| Model tuning | 0.712 | 0.70 | 0.71 | 0.705 | Perbaikan preprocessing dan hyperparameter |
| Ensemble ringan | 0.734 | 0.73 | 0.74 | 0.735 | Penggabungan beberapa model untuk stabilitas prediksi |
Gunakan confusion matrix secara visual untuk menelusuri kelas yang sering tertukar. Ini membantu menentukan perbaikan yang diperlukan.
Terakhir, buat script inference yang memuat model, scaler, dan encoder secara otomatis. Pastikan setiap panggilan inference pytorch mengikuti rutinitas evaluasi.
Tips Produktif
Untuk meningkatkan produktivitas deep learning dengan PyTorch, mulailah dengan mengatur eksperimen. Simpan konfigurasi hyperparameter dan gunakan TensorBoard atau Weights & Biases untuk melacak hasil. Ini membuat catatan yang rapi dan memudahkan dalam mencoba best practices pytorch pada model baru.
Debugging pytorch menjadi lebih mudah dengan memanfaatkan PyTorch. Cetak ukuran tensor tengah proses dan gunakan assert untuk cek shape. Jalankan forward pass kecil sebelum training penuh. Ini membantu cepat menemukan bug.
Untuk training cepat, optimalkan kode Anda. Pastikan batch dan model berada di device yang sama. Gunakan DataLoader dengan num_workers lebih dari nol untuk I/O lebih efisien. Aktifkan mixed precision (AMP) untuk mempercepat iterasi tanpa mengorbankan stabilitas pelatihan.
Reproducibility sangat penting. Atur seed global untuk numpy dan torch, simpan preprocessing pipeline dan checkpoint model. Dokumentasi eksperimen memungkinkan evaluasi yang adil ketika menguji optimizer atau perubahan arsitektur.
Eksperimen harus terkontrol. Uji satu variabel pada satu waktu, catat pengaruhnya, lalu iterasi. Kebiasaan ini mencerminkan best practices pytorch dan membuat hasil lebih dapat dipercaya di lingkungan produksi.
Ringkasan cepat tentang alat yang mempercepat skala eksperimen ada pada bagian ringkasan framework berikut.
Lightning dan Accelerate (Gambaran)
PyTorch Lightning menyederhanakan boilerplate training loop. Ia menyediakan checkpointing otomatis, integrasi logging, dan dukungan untuk distributed training. Penggunaan Lightning sering mempercepat pengembangan dan mengurangi kesalahan implementasi.
Hugging Face Accelerate dan utilitas torch.distributed membantu menjalankan training terdistribusi tanpa menulis banyak kode manual. Tools ini mempermudah transisi dari laptop ke cluster dan mengoptimalkan pemanfaatan perangkat keras untuk training cepat.
Pilih framework ini saat proyek memerlukan distributed training, checkpointing teratur, atau pelatihan multi-GPU. Manfaat praktisnya meliputi produktivitas deep learning yang meningkat, pengurangan bug terkait distribusi, dan skala yang lebih mudah saat beban compute bertambah.
| Aspek | Manfaat | Rekomendasi Praktis |
|---|---|---|
| Manajemen Eksperimen | Reproduksi hasil, pelacakan hyperparameter | Simpan config, pakai TensorBoard atau wandb |
| Debugging pytorch | Deteksi bug lebih cepat, verifikasi bentuk tensor | Cetak shapes, assert checks, forward pass kecil |
| Optimasi I/O & Device | Training cepat, throughput lebih tinggi | num_workers>0, pastikan batch & model di device sama |
| Mixed Precision | Waktu training berkurang, pemakaian memori turun | Gunakan AMP saat stabilitas model terjaga |
| PyTorch Lightning | Kurangi boilerplate, dukungan distributed training | Gunakan untuk proyek skala menengah ke besar |
| Accelerate / torch.distributed | Skalabilitas mudah, sedikit kode distribusi | Gunakan untuk eksperimen multi-GPU dan cluster |
Export & Deployment
Menyiapkan model untuk produksi memerlukan langkah export dan deployment yang rapi. Tujuan utamanya adalah menjalankan model tanpa stack training Python. Ini mengoptimalkan inference dan menjaga konsistensi antara training dan runtime.
Praktik ini meningkatkan stabilitas produksi pytorch. Ini mempermudah model deployment di berbagai lingkungan.
Simpan artefak pendukung seperti scaler dan label encoder. Ini agar pipeline inference identik dengan pipeline training. Uji setiap artefak hasil export pada dataset sample untuk memastikan akurasi dan kompatibilitas.
Pilih lingkungan serving sesuai kebutuhan. FastAPI atau Flask dengan gunicorn untuk REST, ONNX Runtime untuk performa khusus, atau layanan managed seperti AWS SageMaker dan Google AI Platform untuk orkestrasi penuh.
TorchScript/ONNX
TorchScript memungkinkan serialisasi model PyTorch melalui tracing atau scripting. Artefak .pt atau .pth yang dihasilkan dapat dijalankan di runtime C++ menggunakan LibTorch. Proses ini memudahkan export pytorch ke lingkungan tanpa Python dan mendukung banyak fitur PyTorch native.
Contoh alur singkat: gunakan torch.jit.trace atau torch.jit.script untuk membuat file yang dapat dimuat dengan torch.jit. Keunggulan tersebut membuat TorchScript cocok untuk production pytorch yang membutuhkan integrasi C++ dan stabilitas fitur khusus PyTorch.
TorchScript/ONNX
ONNX (Open Neural Network Exchange) berfokus pada interoperabilitas antar framework. Dengan torch.onnx.export Anda menghasilkan file .onnx yang kompatibel dengan runtime seperti ONNX Runtime. Opsi ini memudahkan deploy model di berbagai platform dan memanfaatkan optimasi inference lintas perangkat.
Perhatian praktis: operator custom atau fitur dinamis mungkin perlu penyesuaian saat export model pytorch ke onnx. Tes menyeluruh pada dataset sample membantu mendeteksi masalah kompatibilitas lebih awal.
| Aspek | TorchScript | ONNX |
|---|---|---|
| Kesesuaian dengan PyTorch | Tinggi, dukung banyak fitur PyTorch | Sedang, beberapa fitur perlu adaptasi |
| Interoperabilitas | Terbatas pada ekosistem PyTorch/LibTorch | Tinggi, lintas framework dan runtime |
| Runtime | LibTorch (C++) dan torch.jit | ONNX Runtime, TensorRT, OpenVINO |
| Support untuk operator custom | Mudah integrasi custom C++ | Mungkin perlu custom ops atau konversi |
| Kesesuaian untuk production pytorch | Sangat baik untuk aplikasi native PyTorch | Cocok saat butuh interoperabilitas dan optimasi |
- Selalu verifikasi hasil setelah export model pytorch dengan tes fungsional dan perf.
- Jaga versi library dan dokumentasikan proses export untuk reproducibility.
- Bandingkan torchscript vs onnx berdasarkan kebutuhan: fitur PyTorch vs interoperabilitas.
FAQ
Bagian ini menjawab pertanyaan umum tentang PyTorch dan TensorFlow. PyTorch menggunakan graf komputasi dinamis yang memudahkan prototyping dan debugging. TensorFlow versi lama menggunakan graf statis, tapi TensorFlow 2 kini menggunakan eager execution.
PyTorch sangat cocok untuk pemula karena sintaksnya yang mudah dan dokumentasinya yang jelas. Untuk menggunakan GPU, instal PyTorch dengan dukungan CUDA. Gunakan device = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’) untuk memindahkan model dan tensor.
Untuk memulai, Anda perlu Python, torch, dan torchvision. Anda juga perlu lingkungan eksperimen seperti Jupyter atau Google Colab. Gunakan pandas dan scikit-learn untuk preprocessing dan joblib untuk menyimpan transformer.
Untuk menyimpan model, gunakan torch.save atau state_dict. Muat kembali model dengan torch.load. Simpan scaler dan label encoder dengan joblib.dump dan buka kembali dengan joblib.load.
Model PyTorch bisa diekspor ke format lain untuk produksi. Gunakan TorchScript untuk runtime C++/LibTorch atau ekspor ke ONNX. Pilih ONNX Runtime atau TorchScript sesuai kebutuhan. Jika Anda punya pertanyaan lain, bagian ini adalah ringkasan dari tutorial PyTorch dan perbandingan dengan TensorFlow.





































