405 Milyar Parametreli Siber Güvenlik Odaklı LLM Modeli Projem— Part 1: Limitleri Zorlamak!
Ilk siber güvenlik modelim olan SenecaLLM’de Meta’nin llama3.1–8B base modelini kullanmıştım. 8 Milyar parametreli bir LLM’in dahi eğitilmesi beni fazlasıyla zorlamıştı. Ancak doğru dataset ve transformers kütüphanesinin Train yapısına hakim olunca oldukça iyi bir zamanda modelimi tamamladım. Şimdi modelimin gücünü en iyi seviyeye arttırarak 405 Milyar parametreli bir Meta llama3.1'i eğitip, finetune yapmaya karar verdim.
LLM’lerde sıkça denk geldiğimiz 3B, 8B, 70B ve 405B gibi parametreleri öncelikle bir inceleyelim.
B harfi LLM modelinde “Bilion” nin kısaltmasıdır. 3B, 8B, 70B, 405B rakamları modelin ne kadar büyük ve karmaşık olduğunu gösterir; model içindeki her bir ağırlık veya bias değerinin topla mıdır. Bu rakamlar arttıkça model büyür ve daha fazla yeni bilgiyi öğrenmesine ve aldığı talimatları hatırlama kapasitesine sahip olur. Ama model büyüdükçe eğitilmesi, saklanması ve calistirilip kullanılması çok çok daha zordur.
Bir önceki makalemde biliyorsunuz ki yapay sınır ağları matrisler ve birçok fonksiyon formunda pek çok çarpma-toplama operasyonu yaparak çalışır.
Bu matrislerin her biri, öğrenilen bir ağırlıktır. Transformer tabanlı dil modellerinde bu ağırlıklar:
- Embedding katmanı; Kelimeleri ya da token’ları sayısal vektörlere dönüştürür.
- Attention mekanizması; Q, K, V matrisleri.
- Feed-forward katmanlar; Gizli katmanlar, aktivatorler,
- Layer norm gibi ek katmanların parametrelerini içerir.
Modelin toplam parametre sayısı büyüdükçe:
- Eğitmek için gereken bellek (VRAM/RAM) ve işlem gücü (FLOPS) katlanarak artar.
- Modelin teorik olarak öğrenebileceği bilgi miktarı artar.
- Eğitimin süresi uzar ve maliyeti yükselir.
Küçük modeller dil akıcılığı, mantıksal tutarlılık ve geniş bilgi tabanı gerektiren zorlu görevlerde daha büyük modellere kıyasla geride kalabilir. Parametre sayısı arttıkça daha karmaşık “dil yetenekleri” sergileyebilir, ancak geri dönüş (performans artışı) her zaman “lineer” değildir. Bazı görevlerde 70B seviyesindeki modellerle benzer sonuçlar da alınabilir. Örnek olarak; OpenAI’nin GPT-3.5 / GPT-4 modelleri parametre sayısı net açıklanmasa da 100B+ olduğu tahmin ediliyor.
Genelde parametre sayısı arttıkça dil modelinin karmaşık kalıpları öğrenebilme ve daha tutarlı/uzun metinler üretme kapasitesi yükselir. Akla su gelmemeli; 70B’den 405B’ye çıktığımızda, her zaman 6 kat daha zeki veya daha iyi bir modelimiz olacağı anlamına gelmeyecektir. Bu katlanma; Modelin veri kalitesi, eğitim süresi, hyperparametre ayarları göz önünde bulundurarak hesaplanabilir. Ama unutmamalıyız; parametre boyutu büyüdükçe VRAM ve eğitim süresi masrafları fırladığı için, her projeye uygun olmayabilir.
Şimdi konuyu biraz daha anladığımıza göre, projemdeki zorlu noktaları analiz edip, düşünelim.
Aklımda ki ilk ve en önemli sorun GPU miktarı ve parasal sorunlar olacak. Çünkü bu projemi kar amacı gutmeyecek şekilde topluluğa sunmayı planlıyorum. Bu nedenle de belirli bir bütçe oluşturarak projenin devamlılığını sağlayacağım.
Modelin boyutu efsanevi bir büyüklükte olduğundan fp16 ile herhangi bir quantization ve LoRA olmadan yapmaya çalışsam yüzlerce H100 80GB’a ihtiyaç duymam gerekiyor. Ancak bunun yerine aklımdaki plan şu;
LoRA gibi parameter-efficient bir yöntemle modelin tüm parametrelerini güncellemeye gerek kalmadığından bellek ihtiyacı ve gerekli GPU sayısı ciddi ölçüde azaltarak eğitim yapabilirim. Bu sayede Runpod yada Vast.ai kullanarak 11 x H100 80 GB ile eğitime başlamayı düşünüyorum. Peki bu GPU sayısına nasıl ulaştım?
Modeli hiç quantize etmeden sırf belleğe yükleyecek olsak, salt model ağırlıkları 405B × 2 bayt = 810 GB VRAM gerektirir. Sırf modeli quantize edilmeden çalıştırmak icin…
Birde bu modelin eğitimi söz konusu olduğunda moment/gradient bellek kullanımı ve forward/backward pass sırasında , 2–3 TB VRAM seviyelerine ulaşmak hatta geçmek gerekecek.
O nedenle LoRA ile eğitim yapıp aynı zamanda kullancagiz. LoRA 8-bit veya 4-bit quantization ile kullanılıyor. Mesela 4-bit quantization senaryosunda, parametre başına 0.5 bayt harcarsam, 405B parametre için yaklaşık;
- 405 × 10⁹ × 0.5≈ 202.5 GB VRAM lazim demektir.
Ancak aktivasyonlar, geçici bellek kullanımı gibi aktörler için yine kabaca 1.5–2 kat alan bırakmak gerekebilir. Yani toplam 300–400 GB VRAM civarında bir üst sınırdan söz edebiliriz. Bu da hala çok büyük bir rakam…
LoRA
Low-Rank Adaptation yani LoRA, büyük dil modelleri gibi devasa parametre setine sahip ağların tamamını en bastan egitmek yerine, çok daha küçük ek parametreler üzerinden uyarlama yapmayı hedefleyen bir yaklaşımdir aslinda. Böylece:
- Modelin orijinal parametreleri çoğunlukla donuk kalır ve güncellenmez. Bu da modelin hem bozulmasini hemde dengesiz ciktilar vermesinide engeller.
- Güncelleme yapılması gereken kısımları, öğrenme kapasitesini büyük oranda koruyacak şekilde low-rank matris çarpımlarına indirger. Birazdan detayli bakacagiz.
Normalde tam bir matris ΔW∈R^(d×k) güncellenecekken, LoRA bunu ΔW=A×B seklinde iki küçük matrisin çarpımı seklinde ayırır.
- Burda rank r 4,8,16 gibi küçük seçilir.
- A∈R^(d×r) ve B∈R^(r×k) boyutlarındadır. iste bu sayede ΔW’nin tam boyutu olan d×k’e gore, (d×r)+(r×k) ile çok daha az parametre güncellenir.
Yani W degeri donuk kalirken A ve B matrisindeki degerler guncellenecektir. Sonuc formulude;
Finalde modelin ilgili katmanındaki etkin ağırlık şu şekilde olur:
(W)eff=W+ΔW=W+A×B olacaktir. Kisaca LoRA bu sekilde calisir.
Genelde endüstriyel ve akademik kullanımda, 70B üstü modellerin LoRA fine-tuning’inde bile 12–16 GPU tercih ediliyor. Çünkü hem eğitimin süresini makul seviyede tutmak istiyorlar hem de daha büyük batch size & sequence length gibi senaryolarda verim almak istiyorlar. Ama 405B gibi çok daha büyük bir modelde de benzer şekilde kullanmak isteyebiliriz.
Ancak 12–16 GPU’luk bir H100 kümesinin 960–1280 GB arasında VRAM sağladığını düşünürsek, 4-bit quantize + LoRA senaryosunda bu kapasiteyle daha rahat bir şekilde eğitimimizi yapabilir, üstüne batch size’ı arttırabiliriz.
Şimdi, ise koyulalım. Anlık gelişmeleri X hesabımdan takip edebilirsiniz. Görüşmek uzere… https://x.com/AlicanKiraz0