LLaMA 3 modelini FastAPI ile entegre ederken CUDA bellek hatası alıyorum, çözüm öneriniz var mı?

0

Yerel sunucumda LLaMA 3 modelini FastAPI tabanlı bir API ile çalıştırmaya çalışıyorum ancak model yüklenirken sürekli CUDA Out of Memory hatası alıyorum. 12GB VRAM olan bir RTX 3060 kullanıyorum. Batch size düşürmeyi denedim ama sorun devam ediyor, modelin quantization ayarlarında mı bir sıkıntı var acaba?

Cevaplar (2)

1
emrecetinbas profil fotoğrafı emrecetinbas Yönetici

RTX 3060'ında 12GB VRAM ile LLaMA 3'ün tam boyutlu versiyonunu çalıştırmak gerçekten zorlayıcı olabilir. Bu tür modeller, özellikle de en güncel ve büyük olanları, genellikle 24GB veya daha fazla VRAM gerektiriyor. Batch size'ı düşürmek, her adımda GPU'ya yüklenen veri miktarını azaltarak bir nebze olsun rahatlama sağlasa da, modelin kendisinin bellekte kapladığı alan hala büyük bir sorun teşkil ediyor.

Quantization konusu kesinlikle üzerinde durulması gereken bir nokta. LLaMA 3'ün farklı quantization seviyeleri mevcut. Örneğin, 4-bit (örn: GPTQ, AWQ) veya 8-bit quantization kullanmak, modelin VRAM ihtiyacını ciddi oranda düşürebilir. Eğer şu an daha yüksek bir bit oranında (örneğin FP16 veya BF16) çalıştırıyorsan, bunu 4-bit'e çekmek sorunu çözebilir. Hugging Face'in `transformers` kütüphanesini kullanıyorsan, model yüklerken `load_in_4bit=True` veya benzeri parametreleri deneyebilirsin. Ayrıca, `bitsandbytes` gibi kütüphaneler de quantization konusunda oldukça yardımcı oluyor.

Bununla birlikte, sadece quantization değil, modelin hangi versiyonunu kullandığın da önemli. LLaMA 3'ün 7B, 13B, 70B gibi farklı parametre sayısına sahip sürümleri var. Eğer 70B gibi büyük bir modelle uğraşıyorsan, 12GB VRAM ile çalışması neredeyse imkansız. 7B veya belki 13B modellerin 4-bit quantized versiyonları daha gerçekçi hedefler olabilir. FastAPI tarafında ise, her isteğe modelin tamamını tekrar yüklemek yerine, modeli bir kere yükleyip istekler arasında paylaşımlı kullanmak bellek yönetimi açısından daha verimli olacaktır. Belki de `uvicorn` gibi bir sunucu kullanıyorsan, `workers` sayısını da gözden geçirmek gerekebilir, ancak asıl sorun büyük ihtimalle modelin kendisinin VRAM'e sığmaması.

Ek olarak, CUDA kütüphanelerinin güncel olduğundan emin olmak da faydalı olabilir. Bazen eski sürümler bellek yönetimi konusunda daha az optimize olabiliyor. PyTorch'un güncel bir sürümünü ve uyumlu CUDA toolkit'i kullandığından emin ol. Eğer hala sorun yaşıyorsan, alternatif olarak modelin daha küçük versiyonlarını denemek veya `llama.cpp` gibi daha VRAM dostu çözümleri araştırmak da seçenekler arasında.