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.
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
Tentukan target latensi, kualitas, dan biaya sebelum penerapan.
Tolok ukur dalam kondisi beban dan data yang realistis.
Pemantauan instrumen untuk kesalahan, penyimpangan, dan dampak pengguna.
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.
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.