PANDUAN Teknis

Manajemen dan Fragmentasi Memori GPU

Bagaimana kerangka kerja AI mengalokasikan, menggunakan kembali, dan mendapatkan kembali memori terbatas pada GPU, dan mengapa celah yang tersisa (fragmentasi) dapat menyebabkan kesalahan kehabisan memori meskipun secara teknis masih banyak memori yang tersisa.

2 min readTerakhir diperbarui

Ikhtisar

Understanding it is key to fitting big models and avoiding mysterious crashes.

Menyelam Lebih Dalam

Memori GPU bersifat tetap dan berharga: sebuah kartu mungkin memiliki total 24, 80, atau 192 GB, yang dibagi berdasarkan bobot model, aktivasi, gradien, status pengoptimal, dan buffer sementara. Memanggil driver untuk mengalokasikan memori pada setiap operasi akan lambat, jadi kerangka kerja seperti PyTorch menggunakan pengalokasi cache yang mengambil blok besar di depan dan membagikan sub-bagian, lalu menyimpan potongan-potongan yang dibebaskan di kumpulan untuk digunakan kembali. Tangkapannya adalah fragmentasi: saat tensor dengan ukuran berbeda-beda dialokasikan dan dibebaskan, ruang kosong terpecah menjadi potongan-potongan yang tersebar. Anda dapat memiliki total 5 GB gratis namun gagal mengalokasikan tensor 2 GB yang berdekatan karena tidak ada celah yang cukup besar. Inilah sebabnya mengapa pelatihan bisa terhenti karena kesalahan kehabisan memori meskipun ruang kepala tampaknya tersedia.

Wawasan Teknis

Pengalokasi cache CUDA PyTorch membagi memori menjadi aliran blok dan menggunakan kembali blok yang dibebaskan yang sesuai dengan ukuran yang diminta, menghindari panggilan cudaMalloc/cudaFree yang mahal. Fragmentasi muncul ketika blok yang terpecah tidak dapat digabungkan kembali. Alat seperti torch.cuda.empty_cache, opsi PYTORCH_CUDA_ALLOC_CONF expandable_segments, dan snapshot memori membantu. Pendekatan yang lebih baru meminjam ide memori virtual, memetakan halaman fisik yang tidak bersebelahan ke dalam rentang virtual yang berdekatan sehingga permintaan besar berhasil meskipun terjadi fragmentasi.

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 Manajemen dan Fragmentasi Memori GPU

Manajemen memori menjadi lebih cerdas dan lebih banyak halamannya, terinspirasi oleh sistem operasi. Teknik seperti pengalokasi gaya memori virtual dan perhatian halaman (digunakan untuk mengelola cache KV selama inferensi) mengurangi pemborosan dan fragmentasi secara dramatis. Harapkan kerangka kerja default ke pengalokasi yang dapat diperluas dan didefragmentasi, visibilitas yang lebih baik melalui profiler bawaan, dan penggabungan yang lebih ketat dengan pembongkaran dan penghitungan ulang sehingga sistem mengatur GPU, CPU, dan memori disk secara otomatis untuk menjaga pemanfaatan tetap tinggi dan jarang terjadi error.

Implementasi Dunia Nyata

Latihan yang dijalankan mengalami error dengan 'CUDA kehabisan memori' meskipun memori yang dicadangkan menunjukkan ruang kosong, diperbaiki dengan menyetel PYTORCH_CUDA_ALLOC_CONF untuk mengaktifkan segmen yang dapat diperluas.

Menggunakan torch.cuda.memory_summary atau snapshot memori untuk mendiagnosis tensor dan fragmentasi mana yang memakan 80 GB GPU.

PagedAttention vLLM mengelola cache KV perhatian di halaman berukuran tetap untuk melayani banyak permintaan obrolan bersamaan tanpa membuang memori.

Menurunkan ukuran batch atau mengaktifkan pos pemeriksaan gradien untuk memotong memori aktivasi dan menghindari kegagalan kehabisan memori yang disebabkan oleh fragmentasi.

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 GPU Memory Management and Fragmentation 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

Penjadwalan GPU dan Orkestrasi Cluster

Pertanyaan yang sering diajukan

What is GPU Memory Management and Fragmentation?

Bagaimana kerangka kerja AI mengalokasikan, menggunakan kembali, dan mendapatkan kembali memori terbatas pada GPU, dan mengapa celah yang tersisa (fragmentasi) dapat menyebabkan kesalahan kehabisan memori meskipun secara teknis masih banyak memori yang tersisa. Memahami hal ini adalah kunci untuk menyesuaikan model besar dan menghindari kecelakaan misterius.

Apa itu fragmentasi memori GPU?

Fragmentasi berarti total memori bebas cukup, tetapi dipecah menjadi beberapa bagian, sehingga tidak ada celah yang cukup besar untuk tensor besar.

Mengapa kerangka kerja seperti PyTorch menggunakan pengalokasi memori caching?

Memanggil cudaMalloc/cudaFree untuk setiap operasi lambat, sehingga pengalokasi caching mengambil blok besar dan menggunakan kembali blok yang dibebaskan dari kumpulan.

Anda melihat 5 GB gratis tetapi tidak dapat mengalokasikan tensor 2 GB. Apa kemungkinan penyebabnya?

Gejala klasik fragmentasi ini terjadi ketika memori bebas ada tetapi tidak sebagai satu potongan berdekatan yang cukup besar untuk permintaan tersebut.

Pengaturan PyTorch manakah yang membantu mengurangi fragmentasi dengan memungkinkan segmen memori berkembang secara fleksibel?

Menyetel PYTORCH_CUDA_ALLOC_CONF untuk mengaktifkan expandable_segments memungkinkan pengalokasi mengembangkan segmen dan mengurangi kegagalan terkait fragmentasi.

Apa yang dikelola PagedAttention vLLM untuk mengurangi pemborosan memori selama inferensi?

PagedAttention menyimpan cache KV di halaman berukuran tetap seperti memori virtual OS, memotong fragmentasi dan melayani banyak permintaan secara efisien.