Quantization Yapay Zeka Modellerini Nasıl Küçültür
Önceki yazıda bir modelin büyük ölçüde devasa bir ağırlık yığını olduğunu gördük. Her ağırlık bir sayıdır ve her sayı bellekte yer kaplar. Bugün birçok model her ağırlığı 16 bitle, yani 2 baytla saklar. Bu yüzden 7 milyar ağırlığı olan bir model, sadece bu ağırlıkları tutmak için yaklaşık 14 GB belleğe ihtiyaç duyar.
Quantization, her ağırlığı daha az bitle saklama hilesidir: 8, 4 ya da daha da az. Ağırlık başına daha az bit, daha küçük bir model demektir. Model çoğu zaman daha hızlı da çalışır, çünkü metin üretmenin hızı çoğu zaman ağırlıkların bellekten ne kadar hızlı okunabildiğiyle sınırlıdır. Bir model boyutu ve bit sayısı seçin.
- 8 GBBirçok oyun ekran kartıÇok büyük
- 24 GBÜst seviye oyun ekran kartlarıSığar
- 80 GBBüyük veri merkezi GPU'larıSığar
Burada GB bir milyar bayt demektir. Bir modeli çalıştırmak ağırlıkların üstüne ek bellek de gerektirir; bu yüzden "sığar" yalnızca ağırlıklar için geçerlidir. Bellek boyutları tipik örneklerdir.
16 bitten 4 bite inmek ağırlıkları dört kat küçültür. Bu, büyük bir veri merkezi GPU'suna ihtiyaç duymakla modeli tek bir ekran kartında, hatta bir dizüstü bilgisayarda çalıştırmak arasındaki fark olabilir.
Ama bir sorun var. Daha az bitle yazabileceğiniz farklı sayıların sayısı da azalır. 4 bitle yalnızca 16 farklı sayı yazılabilir. Bu yüzden her ağırlık, izin verilen birkaç adımdan birine yuvarlanmak zorundadır; fiyatları tam liraya yuvarlamak gibi. Model artık yalnızca adımın numarasını saklar. Bit sayısını seçin ve ağırlıkların en yakın adıma oturmasını izleyin: yuvarlanmış ağırlıklar.
- İzin verilen değer sayısı
- 16
- Ağırlık başına ortalama yuvarlama hatası
- 0.029
- Nöron çıktısı, orijinal ağırlıklarla
- 0.246
- Nöron çıktısı, yuvarlanmış ağırlıklarla
- 0.237
Elle seçilmiş örnek ağırlıklar ve girdiler. Adımlar en küçük ağırlıktan en büyüğüne eşit aralıklarla dağıtılır. Gerçek formatlar farklılık gösterir; bazıları eşit aralıklı adımlar yerine küçük kayan noktalı sayılar kullanır.
8 bitte adımlar o kadar yakındır ki yuvarlama neredeyse görünmez. 4 bitte görünür, ama her ağırlık yine de çok az kayar. 2 bitte yalnızca dört izin verilen değer vardır ve ağırlıklar epey yer değiştirir. Nöron çıktısına da dikkat edin: Bazı ağırlıklar yukarı, bazıları aşağı yuvarlanır; bu yüzden hataları kısmen birbirini götürebilir.
Bu yüzden 8 bitlik modeller genellikle orijinalleriyle neredeyse aynı davranır, büyük modellerin 4 bitlik sürümleri de çoğu zaman şaşırtıcı derecede iyi çalışır. Bunun altında kalite genellikle daha belirgin şekilde düşer. Ne kadar düşeceği modele ve quantization'ın ne kadar özenle yapıldığına bağlıdır.
Yuvarlamayı çok daha kötü hale getiren bir şey var: gerçek modellerde sıkça bulunan, alışılmadık derecede büyük birkaç ağırlık. Adımlar en küçük ve en büyük ağırlık arasına eşit aralıklarla dağıtıldığı için tek bir büyük ağırlık aralığı genişletir ve bütün küçük ağırlıklar birkaç adımı paylaşmak zorunda kalır. Büyük bir ağırlık ekleyin ve diğerlerini izleyin.
- 1. grup
- 0.007
- 2. grup
- 0.009
4 bite yuvarlanmış örnek ağırlıklar (aralıktaki en küçük değerden en büyüğüne 16 adım). Gerçek araçlar çoğu zaman 32 ile 128 ağırlıklık gruplar kullanır; biz görebilmeniz için 8 kullanıyoruz.
Yaygın çözüm, ağırlıkları küçük gruplara bölüp her gruba kendi aralığını vermektir. Böylece büyük bir ağırlık yalnızca kendi grubunu bozar. Her grubun kendi aralığını da saklaması gerekir ve bu biraz ek bellek tutar. "4 bitlik" bir modelin genellikle ağırlık başına tam 4 bitten biraz daha büyük olmasının nedenlerinden biri budur.
Gerçek araçlar başka hileler de ekler. Bazıları modelin en hassas kısımlarını daha yüksek hassasiyette tutar. Bazıları hangi hataların daha önemli olduğunu görmek için örnek metinler kullanarak yuvarlamayı özenle seçer. Ama temel fikir aynı kalır: daha az bit, birkaç izin verilen değer ve özenli yuvarlama.
Yani quantization bir takastır: Biraz hassasiyet karşılığında çok daha küçük ve çoğu zaman daha hızlı bir model. Çoğu zaman bu takasa değer; insanların kendi bilgisayarlarında çalıştırdığı modellerin birçoğunun quantization'dan geçmiş olmasının nedeni de budur.
Quantization'ın yapmadığı bir şey var: Modeli daha akıllı hale getirmez. Modelin ne öğrendiğini değil, ağırlıkların nasıl saklandığını değiştirir; bu yüzden amaç yalnızca orijinale olabildiğince yakın kalmaktır. Bir model fazla sert bir şekilde quantization'dan geçirilirse, orijinalin yapmayacağı hatalar yapmaya başlayabilir.
Bu içerik size yardımcı olduysa bana bir kahve ısmarlayabilirsiniz.
yapay zeka, yazılım ve tasarım üzerine etkileşimli yazı ve kurslardan haberdar olmak için bültene katılabilirsiniz. Ayda en fazla birkaç e-posta alırsınız.
800’den fazla meraklı okura sen de katıl.