PANDUAN Teknis

Pengorbanan Perhitungan Ulang Aktivasi

Penghitungan ulang aktivasi (gradien atau titik pemeriksaan aktivasi) menghemat memori GPU selama pelatihan dengan membuang aktivasi perantara di jalur maju dan menghitung ulangnya selama jalur mundur.

2 min readTerakhir diperbarui

Ikhtisar

It trades extra compute for the ability to train larger models or longer sequences on the same hardware.

Menyelam Lebih Dalam

Propagasi mundur memerlukan aktivasi forward-pass untuk menghitung gradien, jadi secara default setiap keluaran lapisan disimpan — biaya memori yang sangat besar yang bertambah seiring dengan ukuran model, ukuran batch, dan panjang urutan. Perhitungan ulang aktivasi hanya menyimpan beberapa tensor 'pos pemeriksaan' (seringkali hanya batas lapisan) dan membuang sisanya. Selama proses backward pass, ia menjalankan kembali komputasi maju antar pos pemeriksaan untuk membuat ulang aktivasi yang dibuang sesuai permintaan. Hasil klasiknya adalah dengan pos pemeriksaan yang ditempatkan setiap lapisan sqrt(N), memori turun menjadi kira-kira O(sqrt(N)) sambil menambahkan sekitar satu forward pass tambahan (~33% komputasi lebih banyak). Varian selektif hanya menghitung ulang operasi yang murah tapi banyak memori (seperti perhatian atau putus sekolah) sementara melakukan cache pada operasi yang mahal, mendapatkan sebagian besar penghematan memori untuk overhead komputasi ulang yang jauh lebih sedikit.

Wawasan Teknis

Pengorbanan mendasar adalah memori versus FLOP. Perhitungan ulang penuh secara kasar menambahkan satu forward pass ekstra per langkah (~30-40% lebih lambat) tetapi dapat memotong memori aktivasi berdasarkan urutan besarnya. Langkah cerdasnya adalah pemeriksaan selektif: mengidentifikasi operasi dengan memori besar namun murah komputasi (softmax, layernorm, GELU, skor perhatian) dan hanya menghitung ulang operasi tersebut, sambil tetap menyimpan hasil GEMM yang mahal dalam cache — meminimalkan komputasi yang terbuang.

Dampak Strategis

Cost and budget

Keputusan arsitektur mendorong kinerja dan biaya pengoperasian selama bertahun-tahun.

Clearer decisions

Pendidikan teknis membantu tim memilih tumpukan yang tepat, bukan hanya yang terbaru.

Quality control

Pilihan teknik yang lebih baik mengurangi insiden keandalan dalam produksi.

Masa Depan Pengorbanan Perhitungan Ulang Aktivasi

Perhitungan ulang semakin otomatis dan selektif. Kerangka kerja sekarang memprofilkan setiap memori operasi dan biaya FLOP untuk memilih titik pemeriksaan yang optimal, dan menggabungkan komputasi ulang dengan pembongkaran aktivasi ke CPU/NVMe dan dengan strategi paralelisme. Karena panjang konteks dan ukuran model terus bertambah, diharapkan ada kebijakan berbasis compiler (di PyTorch, JAX/XLA) yang mengambil keputusan penghitungan ulang per operasi secara otomatis, ditambah tumpang tindih penghitungan ulang dengan komunikasi yang lebih ketat sehingga FLOP tambahan sebagian tersembunyi.

Implementasi Dunia Nyata

Melatih trafo besar yang tidak muat dengan memeriksa setiap blok lapisan

Menggunakan torch.utils.checkpoint PyTorch untuk membungkus blok transformator dan memotong memori aktivasi

Penghitungan ulang perhatian/softmax secara selektif di Megatron-LM untuk menghemat memori dengan perlambatan minimal

Mengaktifkan panjang urutan yang lebih panjang pada anggaran GPU tetap dengan menghitung ulang aktivasi alih-alih menyimpannya

Risiko & Pagar Pembatas

Mengoptimalkan satu tolok ukur dapat menyembunyikan kelemahan sistem yang lebih luas.

Biaya infrastruktur dan pemeliharaan sering kali diremehkan.

Kesenjangan keamanan dan kemampuan observasi dapat tumbuh seiring dengan semakin kompleksnya sistem.

Peta Jalan Implementasi

1

Tentukan target latensi, kualitas, dan biaya sebelum penerapan.

2

Tolok ukur dalam kondisi beban dan data yang realistis.

3

Pemantauan instrumen untuk kesalahan, penyimpangan, dan dampak pengguna.

4

Siapkan jalur rollback dan respons insiden sebelum melakukan penskalaan.

Terus Menjelajah

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Activation Recomputation Tradeoffs quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Mulai kuis

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Next guide

SmoothQuant dan Kuantisasi Aktivasi

Pertanyaan yang sering diajukan

What is Activation Recomputation Tradeoffs?

Penghitungan ulang aktivasi (gradien atau titik pemeriksaan aktivasi) menghemat memori GPU selama pelatihan dengan membuang aktivasi perantara di jalur maju dan menghitung ulangnya selama jalur mundur. Ini menukar komputasi ekstra untuk kemampuan melatih model yang lebih besar atau urutan yang lebih panjang pada perangkat keras yang sama.

Apa gunanya perhitungan ulang aktivasi untuk menghemat memori?

Komputasi ulang membuang aktivasi yang tersimpan dan membuatnya kembali dalam proses backward pass, sehingga menghabiskan komputasi ekstra untuk mengurangi penggunaan memori.

Mengapa aktivasi forward-pass biasanya disimpan?

Jalur mundur menggunakan aktivasi maju untuk menghitung gradien, jadi secara default, gradien disimpan dalam memori hingga jalur mundur berjalan.

Kira-kira berapa banyak komputasi tambahan yang biasanya ditambahkan oleh perhitungan ulang aktivasi penuh?

Penghitungan ulang penuh menjalankan kembali komputasi maju selama proses backward pass, menambahkan kira-kira satu forward pass tambahan — dengan jumlah komputasi 30-40% lebih banyak.

Apa gagasan di balik penghitungan ulang selektif (bukan penuh)?

Komputasi ulang selektif menargetkan operasi yang menggunakan banyak memori tetapi sedikit komputasi (seperti softmax atau layernorm), sambil menyimpan hasil GEMM yang mahal untuk meminimalkan FLOP yang terbuang.

Teknik pelengkap manakah yang sering digabungkan dengan penghitungan ulang untuk menghemat lebih banyak memori?

Pembongkaran aktivasi memindahkan beberapa aktivasi ke penyimpanan CPU/NVMe, dan sering kali dikombinasikan dengan komputasi ulang dan paralelisme untuk penghematan memori lebih lanjut.