1. Yeniden başlatmadan önce mesajı ve bağlamı saklayın
Kuyruğa iş eklemeyi bırakın. Hatanın tam metnini, ilgili dosyayı veya sorguyu, birlikte işlenen öğe sayısını ve ulaşılan adımı not edin. Model mi yükleniyordu, hesaplama mı ilerliyordu yoksa çıktı mı yazılıyordu? Ayarları bir notta, tamamlanmış sonuçları da kendi klasöründe saklayın.
Donmuş bir ekran veya açıklama olmadan kapanan bir uygulama, nedeni belirlemek için yeterli değildir. Varsa günlüğünü bulun. Bağlantı kesintisi, geçersiz bir girdi ve dolmuş bellek arayüzde benzer belirtiler üretebilir. Yazılım hiçbir şey belirtmiyorsa «neden belirlenemedi» yazın ve bir teşhis uydurmak yerine asgari bir deneme hazırlayın.
2. GPU belleğini, sistem belleğini ve disk alanını ayırın
GPU belleği, kart üzerindeki hesaplama öğeleri için kullanılır. Sunucunun RAM'i ve depolama alanı başka ihtiyaçları karşılar. BriefGPU GPU kartlarında gösterilen kapasiteler, gerçekten kullanılabilir RAM'i veya diski tanımlamaz. Mesajda belirtilen kaynağı ve ortamınızın bilgilerini kontrol edin.
Python'da MemoryError bir bellek ayırma hatasını belirtir; bu ad tek başına VRAM yetersizliğini göstermez. ENOSPC kodu ise hedef cihazda yetersiz alan anlamına gelir. Bu işaretler araştırmayı yönlendirir, ancak işlemi konumlandırmak için yine uygulamanın günlüğü gerekir.
| Gözlem | İlk kontrol | Daha büyük bir GPU'nun tek başına çözemeyeceği şeyler |
|---|---|---|
| Hesaplama sırasında CUDA out of memory mesajı | Kartın kullanılan belleği, diğer işler ve grup boyutu | Yazılım uyumsuzluğu veya bozuk bir dosya |
| Dosyalar okunurken MemoryError | Süreç belleği, RAM'e yüklenen veri miktarı | Tüm klasörün sistem belleğine yüklenmesi |
| Dışa aktarma sırasında No space left on device | Çıktı veya geçici klasörün alanı ve olası kotası | Dolu bir disk veya depolama sınırı |
| Kullanılabilir mesaj olmadan kapanan uygulama | Günlük, ulaşılan adım ve tek bir girdi üzerinde deneme | Hâlâ bilinmeyen bir neden |
3. Tek bir girdiye ve tek bir etkin işe dönün
Önce kendi başlattığınız işlemleri kontrol edin. Bir önizleme, eski bir oturum veya ikinci bir araç hâlâ çalışıyor olabilir. Durumlarını sakladıktan sonra gereksiz hale gelen görevleri düzgün şekilde kapatın. Tanımadığınız bir süreci sonlandırmayın ve birkaç dakika teşhis kazanmak için tüm ortamı yeniden başlatmayın.
Başarısız olan girdiyi tek başına, kalitesini düşürmeden yeniden işleyin. Tek başına geçip grup halinde başarısız oluyorsa eşzamanlı öğe sayısı bir ipucu haline gelir. Örneğin dörtlü bir grubu ikiye, gerekirse bire düşürün. Klasördeki dosya sayısı aynı kalır; yalnızca aynı anda işlenen miktar değişir.
Bazı araçlar bellek zirvelerini sınırlamak için sıralı işleme sunar. Diffusers özellikle bir görüntü grubunun kod çözümünün bölünmesini belgeler. Bu olanak kullanılan ardışık düzene bağlıdır: başka bir model için bulunmuş bir ayarı etkinleştirmeden önce o düzenin seçeneklerine bakın.
4. İstenen sonucu kaybetmeden yükü azaltın
Tek bir girdi başarısız oluyorsa boyutlarını veya uzunluğunu inceleyin. Bir görüntü için 2.048 × 2.048'den 1.024 × 1.024'e geçmek piksel sayısını dörde böler. Bu, toplam belleğin dörde bölüneceğini garanti etmez: model ve diğer öğeler kendi ihtiyaçlarını korur. Bir azaltma ancak çıktı gerekli ayrıntıları koruyorsa kabul edilebilir.
Bir asistan için sağlanan belgeleri, soruyu ve oluşturulan yanıtı birbirinden ayırın. Oluşturma önbelleği uzun bağlamda daha fazla bellek tüketebilir; kesin mekanizmalar modele bağlıdır. Daha kısa bir isteği veya her seferinde tek bir sorguyu deneyin. Yanıtı içeren pasajı çıkarıp sorunun çözüldüğü sonucuna varmayın.
Orijinal girdiyi her zaman saklayın. Deneme varyantını adlandırın ve neyi değiştirdiğini yazın. Araç döşeme bölme veya belirli öğeleri RAM'e aktarma sunuyorsa, belgelerini inceleyin; ek yerlerini, kaliteyi ve gözlenen süreyi kontrol edin. VRAM'den tasarruf sağlayan bir seçenek kısıtı başka bir yere taşıyabilir.
5. Ayrılan bellek ile kullanılabilir belleği karıştırmayın
PyTorch'ta ayırıcının ayırdığı bellek ile tensörlerin kapladığı bellek iki farklı ölçümdür. Kullanılmayan önbelleği boşaltmak hâlâ etkin olan tensörleri serbest bırakmaz. Dolayısıyla bir temizleme komutu, aşırı büyük bir yükü uyumlu bir yüke dönüştürmez.
Uygulamanızı temiz bir şekilde yeniden başlatmak işe yarıyorsa, ardından aynı küçük durumu yeniden oynatın ve sonucu not edin. Yeniden başlatma sonrası bir başarı, tek başına giderilmiş bir bellek sızıntısını kanıtlamaz. Aynı geçişte kullanım her seferinde artıyorsa, bu gözlemi saklayın ve yeniden başlatmaları biriktirmeden önce yazılımın belgelerine veya desteğine başvurun.
Örnek: sorunu on iki görselden oluşan bir klasörde yalıtmak
Bu, donanım ölçümü içermeyen örnek bir senaryodur. Bir serbest çalışan, ikisi büyük boyutlu ve ince metin içeren on iki görsel hazırlar. Dörtlü gruplar hâlinde işleme başarısız olur. Hata mesajını saklar, ardından büyük görsellerden birini tek başına, başlangıç kalitesinde dener. Tablo, olası gözlemlerin nasıl yorumlanacağını gösterir.
Bu senaryoda, ikili grupları ancak iki büyük görseli birlikte ve birkaç sıradan görseli kontrol ettikten sonra benimser. Dışa aktarılan dosyalarda metni ve kenar hatlarını kontrol eder. Bu sonucu tüm görsel boyutlarına, tüm modellere veya başka bir yazılıma genellemez.
| Senaryo denemesi | Varsayımsal gözlem | Yerel karar |
|---|---|---|
| Aynı anda dört görsel | Bellek hatası | Hatayı koru ve grubu küçült |
| Bir büyük görsel, aynı ayarlarla | Eksiksiz ve kabul edilebilir çıktı | Hedef kalite bu tek durumda geçebilir |
| İki büyük görsel birlikte | Eksiksiz ve kabul edilebilir çıktılar | Bu grubu kısa bir kesitte dene |
| Görsel yoğun biçimde küçültüldü | Hesaplama tamamlandı, metin okunamıyor | Teknik başarıya rağmen bu küçültmeyi ele |
Başka bir kapasitenin haklı bir seçenek hâline geldiği durum
GPU belleği eksikliği belirlendiğinde, vazgeçilmez durum tek başına başarısız olduğunda ve kalitenizle uyumlu küçültmeler yeterli olmadığında başka bir kartı karşılaştırın. İlgili yazılımı, sürümü, parametreleri ve girdiyi saklayın: bu dosya bir sonraki denemeyi karşılaştırılabilir kılar. Kaç GB daha fazlasının tam olarak yeterli olacağını çıkarsamanızı sağlamaz.
Model yüklemesindeki bir hata, grubu küçültmenin faydasını da sınırlayabilir: yükün önemli bir kısmı ilk girdiden önce mevcuttur. Hassasiyet veya niceleme seçenekleri çalıştırma koşullarını ve bazen sonuçları değiştirir; ayrı bir deneme gerektirirler. Parti eklemek, birden çok kartın belleğini otomatik olarak birleştirmez.
İşe yarar bir teşhisle bitirin
Çıkış notunuz beş öğeden oluşur: mesaj ve adım, şüphelenilen kaynak, saklanan girdi, geçen veya başarısız olan ayar, yapılan kalite kontrolü. Hâlâ bilinmeyenleri ekleyin. Hiçbir küçük durum çalışmıyorsa, tüm partiyi tekrarlamayı bırakın ve bu bilgilerle yardım isteyin.
Diski boşaltmak için tek orijinallerinizi silmeyin, birden çok parametreyi aynı anda düşürmeyin ve kısmi bir çıktıyı başarı saymayın. Geçerli sonuçları yedeklemek için zaman ayırın. Teşhis belirsizliği azaltmalıdır; sonsuz bir ayar seansına dönüşmesine gerek yok.