Teknik KILAVUZ

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.

2 min readSon güncelleme

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ı

1

Uygulamadan önce gecikmeyi, kaliteyi ve maliyet hedeflerini tanımlayın.

2

Gerçekçi yük ve veri koşulları altında kıyaslama yapın.

3

Hatalar, sapmalar ve kullanıcı etkisi için cihaz izleme.

4

Ö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.

Testi başlat

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.