GPU Bellek Yönetimi ve Parçalanması
Yapay zeka çerçevelerinin GPU'daki sınırlı belleği nasıl ayırdığı, yeniden kullandığı ve geri kazandığı ve teknik olarak bol miktarda bellek kaldığında bile neden kalan boşlukların (parçalanma) yetersiz bellek hatalarına neden olabileceği.
Genel Bakış
Understanding it is key to fitting big models and avoiding mysterious crashes.
Derin Dalış
GPU belleği sabit ve değerlidir: Bir kartta model ağırlıkları, aktivasyonlar, degradeler, optimize edici durumları ve geçici arabellekler tarafından paylaşılan toplam 24, 80 veya 192 GB bellek bulunabilir. Sürücüyü her işlemde bellek ayırması için çağırmak yavaş olacaktır; bu nedenle PyTorch gibi çerçeveler, öndeki büyük blokları yakalayan ve alt parçaları dağıtan, ardından serbest bırakılan parçaları yeniden kullanım için bir havuzda tutan bir önbellek ayırıcı kullanır. İşin püf noktası parçalanmadır: Farklı boyutlardaki tensörler tahsis edilip serbest bırakıldıkça, boş alan dağınık parçalara bölünür. Toplamda 5 GB boş alana sahip olabilirsiniz ancak hiçbir boşluk yeterince büyük olmadığından bitişik bir 2 GB tensör tahsis edemeyebilirsiniz. Bu nedenle eğitim, görünüşte mevcut boşluk payına rağmen yetersiz bellek hatalarıyla çökebilir.
Teknik Bilgi
PyTorch'un CUDA önbelleğe alma ayırıcısı, belleği blok akışlarına böler ve istenen boyutlarla eşleşen serbest bırakılmış blokları yeniden kullanarak maliyetli cudaMalloc/cudaFree çağrılarından kaçınır. Parçalanma, bölünmüş blokların yeniden birleştirilememesi durumunda ortaya çıkar. torch.cuda.empty_cache, PYTORCH_CUDA_ALLOC_CONF genişletilebilir_segments seçeneği ve bellek anlık görüntüleri gibi araçlar yardımcı olur. Daha yeni yaklaşımlar, bitişik olmayan fiziksel sayfaları bitişik bir sanal aralığa eşleyerek, büyük isteklerin parçalanmaya rağmen başarılı olmasını sağlayarak sanal bellek fikirlerini ödünç alır.
Stratejik Etki
Maliyet ve bütçe
Mimari kararlar yıllarca performansı ve işletme maliyetini etkiler.
Daha net kararlar
Teknik eğitim, ekiplerin yalnızca en yenisini değil, doğru yığını seçmesine de yardımcı olur.
Quality control
Daha iyi mühendislik seçenekleri, üretimdeki güvenilirlik olaylarını azaltır.
GPU Bellek Yönetimi ve Parçalamanın Geleceği
Bellek yönetimi, işletim sistemlerinden ilham alınarak daha akıllı ve daha sayfalı hale geliyor. Sanal bellek tarzı ayırıcılar ve sayfalanmış dikkat (çıkarım sırasında KV önbelleğini yönetmek için kullanılır) gibi teknikler israfı ve parçalanmayı önemli ölçüde azaltır. Çerçevelerin varsayılan olarak genişletilebilir, birleştirici ayırıcılara, yerleşik profil oluşturucular aracılığıyla daha iyi görünürlüğe ve boşaltma ve yeniden hesaplama ile daha sıkı bağlantıya sahip olmasını bekleyebilirsiniz; böylece sistem, kullanımı yüksek tutmak ve nadiren çökmek üzere GPU, CPU ve disk belleğini otomatik olarak dengeler.
Gerçek Dünya Uygulaması
Ayrılmış belleğe rağmen boş alan gösterilmesine rağmen "CUDA yetersiz bellek" nedeniyle kilitlenen bir eğitim çalıştırması, genişletilebilir segmentleri etkinleştirmek için PYTORCH_CUDA_ALLOC_CONF ayarlanarak düzeltildi.
Hangi tensörlerin ve parçalanmanın GPU'nun 80 GB'ını tükettiğini teşhis etmek için torch.cuda.memory_summary veya bellek anlık görüntüsünü kullanma.
vLLM'nin PagedAttention özelliği, hafızayı boşa harcamadan birçok eşzamanlı sohbet isteğine hizmet vermek için sabit boyutlu sayfalarda dikkat KV önbelleğini yönetir.
Etkinleştirme belleğini kesmek ve parçalanmadan kaynaklanan bellek yetersizliği hatalarını önlemek için toplu iş boyutunu azaltmak veya degrade denetim noktası oluşturmayı etkinleştirmek.
Riskler ve Korkuluklar
Bir kıyaslamayı optimize etmek daha geniş sistem zayıflıklarını gizleyebilir.
Altyapı ve bakım maliyetleri genellikle hafife alınır.
Sistemler karmaşıklaştıkça güvenlik ve gözlemlenebilirlik boşlukları büyüyebilir.
Uygulama Yol Haritası
Uygulamadan önce gecikmeyi, kaliteyi ve maliyet hedeflerini tanımlayın.
Gerçekçi yük ve veri koşulları altında kıyaslama yapın.
Hatalar, sapmalar ve kullanıcı etkisi için cihaz izleme.
Ölçeklendirmeden önce geri alma ve olay müdahale yollarını hazırlayın.
Keşfetmeye Devam Edin
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
GPU Planlama ve Küme Düzenleme
Sık sorulan sorular
What is GPU Memory Management and Fragmentation?
Yapay zeka çerçevelerinin GPU'daki sınırlı belleği nasıl ayırdığı, yeniden kullandığı ve geri kazandığı ve teknik olarak bol miktarda bellek kaldığında bile neden kalan boşlukların (parçalanma) yetersiz bellek hatalarına neden olabileceği. Bunu anlamak, büyük modeller takmanın ve gizemli kazalardan kaçınmanın anahtarıdır.
GPU bellek parçalanması nedir?
Parçalanma, toplam boş belleğin yeterli olduğu anlamına gelir, ancak parçalara bölünmüştür, dolayısıyla hiçbir boşluk büyük bir tensör için yeterince büyük değildir.
PyTorch gibi çerçeveler neden önbelleğe alma bellek ayırıcısı kullanıyor?
Her işlem için cudaMalloc/cudaFree'yi çağırmak yavaş olduğundan, önbellek ayırıcısı büyük blokları yakalar ve havuzdan serbest bırakılanları yeniden kullanır.
5 GB boş alanı görüyorsunuz ancak 2 GB tensör ayıramıyorsunuz. Muhtemel sebep nedir?
Bu klasik parçalanma belirtisi, boş bellek mevcut olduğunda ancak istek için yeterince büyük bitişik bir yığın halinde olmadığında ortaya çıkar.
Hangi PyTorch ayarı, bellek bölümlerinin esnek bir şekilde büyümesine izin vererek parçalanmayı azaltmaya yardımcı olur?
PYTORCH_CUDA_ALLOC_CONF öğesinin genişletilebilir_segmentleri etkinleştirecek şekilde ayarlanması, ayırıcının segmentleri büyütmesine olanak tanır ve parçalanmayla ilgili hataları azaltır.
vLLM'nin PagedAttention'ı çıkarım sırasında bellek israfını azaltmak için neyi başarıyor?
PagedAttention, KV önbelleğini işletim sistemi sanal belleği gibi sabit boyutlu sayfalarda saklayarak parçalanmayı ortadan kaldırır ve birçok isteği verimli bir şekilde karşılar.