- L-Mul, LLM'lerin yüksek enerji maliyetinin kayan noktalı çarpma işlemlerinden kaynaklandığına odaklanan ve çarpmayı tamsayı toplama ile yaklaşık hesaplamayı amaçlayan lineer karmaşıklıklı bir çarpma algoritmasıdır
fp32çarpma,int32toplamadan 37 kat daha fazla enerji tükettiği için, L-Mul tensor işleme donanımına uygulandığında eleman bazlı kayan noktalı tensor çarpım enerjisinin %95'ini, dot product enerjisinin ise %80'ini azaltma potansiyeline sahiptir- Hesaplama yöntemi, mantissa çarpımı ile yuvarlamayı atlar; işareti XOR ile işler ve kalan bitleri
x[1:] + y[1:] - offsetbiçimindeki toplama ile kurar - Deneylerde 4-bit mantissalı L-Mul,
float8 e4m3çarpımıyla benzer hassasiyet gösterdi; 3-bit mantissalı L-Mul isefloat8 e5m2'den daha iyi sonuç verdi - Önceden eğitilmiş LLM'lere ek eğitim olmadan L-Mul attention uygulandığında doğal dil çıkarımı görevlerinde ortalama kayıp %0.07 oldu; görsel görevlerde ise ortalama doğruluk %0.12 arttı
L-Mul'un hedeflediği darboğaz
- Büyük sinir ağları hesaplamanın önemli bir bölümünü kayan noktalı tensor çarpımı için harcar ve bu işlem, toplamaya göre daha yüksek enerji maliyetine sahiptir
- L-Mul, kayan noktalı sayıların çarpımını tamsayı toplama ile yaklaşık hesaplayan bir linear-complexity multiplication algoritmasıdır
- Uygulama alanı birden fazla hesaplama adımını kapsar
- attention mekanizması içindeki çarpımlar
- matris çarpımı
- eleman bazlı çarpım
- Transformer tabanlı LLM'lerde attention, giriş bağlam uzunluğu
NiçinO(N²)karmaşıklığa sahiptir ve yüksek boyutlu tensor çarpımlarıyla birlikte hesaplama verimliliğinin başlıca darboğazlarından biri haline gelir
Aritmetik işlemlere göre enerji maliyeti
- Horowitz (2014) işlem maliyeti tablosu, toplama ile çarpma arasındaki enerji farkını doğrudan gösterir
int8toplama: 0.03 pJint32toplama: 0.1 pJfp16toplama: 0.4 pJfp32toplama: 0.9 pJint8çarpma: 0.2 pJint32çarpma: 3.1 pJfp16çarpma: 1.1 pJfp32çarpma: 3.7 pJ
fp32çarpma,fp32toplamadan 4 kat,int32toplamadan ise 37 kat daha fazla enerji kullanır- PyTorch'ta tensor çarpımı sonuç biriktirmenin varsayılan hassasiyeti
fp32olarak ayarlanmıştır - I/O ve kontrol işlemleri hariç tutulduğunda,
fp32çarpmanınint32toplama ile yaklaşık hesaplanması enerji kullanımını yaklaşık1/37 ≈ 2.7%düzeyine indirir - Biriktirme hassasiyeti
fp16'ya düşürüldüğünde bile tamsayı toplama, kayan noktalı çarpma enerjisinin yalnızca yaklaşık %4.7'sini kullanır
L-Mul'un hesaplama yöntemi
- Genel kayan noktalı çarpma, iki sayı
x,yiçin şu biçimdedir(1 + xm) · 2^xe · (1 + ym) · 2^ye- sonuç
(1 + xm + ym + xm · ym) · 2^(xe+ye)ve işaret XOR'undan oluşur
- Hesaplamadaki darboğaz,
mbitlik mantissa içinO(m²)mantissa çarpımıdır - L-Mul,
xm · ymterimini kaldırır ve şu biçimde yaklaşıklar(1 + xm + ym + 2^-l(m)) · 2^(xe+ye)
l(m), mantissa bit sayısına göre değişirm ≤ 3isemm = 4ise ayrı bir değerm > 4ise ayrı bir değer
- Bit düzeyindeki uygulama daha basit bir ifadeye indirgenir
- işaret biti:
x[0] ⊕ y[0] - kalan bitler:
x[1:] + y[1:] - offset
- işaret biti:
- Kayan nokta biçimi
1 + xmifadesini örtük olarak işlediğinden, L-Mul gerçek uygulamada tek bir adder ile kurulabilir - Mantissa toplamı 2'yi aşarsa carry otomatik olarak exponent'a aktarılır
- Mevcut kayan noktalı çarpımın gerektirdiği mantissa çarpımı ve yuvarlama adımları atlanarak hesaplama miktarı azaltılır
Transformer attention'a uygulama
- L-Mul tabanlı attention,
Q,K,Voluşturduktan sonra attention hesaplamasındaki matris çarpımını L-matmul ile değiştirir - Hesaplama biçimi şöyledir
K = H · WkQ = H · WqV = H · WvA = softmax[L-matmul(Q, Kᵀ) / √d]H′ = L-matmul(A, H)
L-matmul, standart kayan noktalı çarpımların tamamını L-Mul ile gerçekleştiren bir matris çarpımıdır- Bu yapı, kayan noktalı çarpımları tamsayı toplamaya çevirerek hesaplama kaynağı kullanımını düşürür
Hassasiyet·karmaşıklık analizi ve deney sonuçları
- Hassasiyet analizi, L-Mul'un kayan noktalı sayıların fraction kısmını kaç bite kadar korumaya eşdeğer olduğunu değerlendirecek şekilde kurulmuştur
- Uniform dağılımlı operand analizinde L-Mul, fp8 e5m2'den daha doğrudur
- Önceden eğitilmiş 5 LLM'in birleşik weight dağılımlarına dayanan pratik analizde, 5-bit mantissalı operandlarda fp8 e4m3'ten daha yüksek hassasiyet elde edilebilir
- Deney sonuçları teorik hata tahminleriyle uyumludur
- 4-bit mantissalı L-Mul,
float8 e4m3çarpımıyla benzer hassasiyet - 3-bit mantissalı L-Mul,
float8 e5m2'den daha yüksek hassasiyet
- 4-bit mantissalı L-Mul,
- Önceden eğitilmiş LLM'lerde standart attention uygulaması doğrudan L-Mul attention ile değiştirildi ve ek eğitim kullanılmadı
- commonsense, structured reasoning, language understanding görevlerinde ortalama performans kaybı: %0.07
- visual question answering, object hallucination, free-form visual instruction görevlerinde ortalama doğruluk değişimi: %0.12 artış
- Fine-tuning deneylerinde attention, linear transformation ve eleman bazlı çarpımdaki tüm çarpımları 3-bit mantissalı L-Mul ile değiştiren model,
float8 e4m3biriktirme hassasiyeti kullanan standart modelle benzer performans verdi - Kapı düzeyinde hesaplama miktarı tahmininde standart çarpım şu düzeydedir
fp16çarpma: yaklaşık 584fp8 e4m3çarpma: yaklaşık 325fp8 e5m2çarpma: yaklaşık 296
- L-Mul'un kapı düzeyindeki hesaplama miktarı tahmini daha düşüktür
fp16L-Mul: yaklaşık 256fp8L-Mul: yaklaşık 157
- GPU'larda L-Mul'un yerel bir uygulaması bulunmadığından verimliliğinden tam olarak yararlanmak zordur; L-Mul tabanlı modellerin, özel mimari tasarımın entegre edildiği cihazlarda eğitilmesi ve barındırılması önerilir
- Bu teknoloji patent pending durumundadır
1 yorum
Hacker News yorumları
Eskiden Intel CPU'larda kayan nokta hesaplama pahalıyken, programcıların bunu tamsayı hileleriyle aştığı çeşitli yöntemler olduğunu hatırlıyorum.
Forth ile tanınan Chuck Moore, ara hesaplamalarda 1.6 × 4.1 gibi değerleri 16 × 41 gibi tamsayı olarak işleyip, çıktıda ondalık noktayı tekrar “doğru konuma” koyma yöntemini göstermişti. Kayan nokta değerinin aralığı 10 ile çarpıldığında bile 65536'yı aşmıyorsa 16 bit tamsayılarla da iyi çalışıyordu ve 10 bit hassasiyetli analog değerleri saniyede birkaç kez hızlıca hesaplaması gereken gömülü çiplere çok uygundu.
Microsoft Streets and Trips üzerinde çalışmış bir Microsoft mühendisiyle de uzun zaman önce konuşmuştum; onlar da normalde kayan nokta olacak sayıları ve hesaplamaları, yalnızca gerçekten gereken hassasiyeti içeren bir tür paketlenmiş tamsayı biçimine koyarak o dönemin CPU'larında daha hızlı çalıştırdıklarını ve CD-ROM'a sığacak şekilde daha kolay sıkıştırdıklarını söylemişti. Ekran görüntüleri https://archive.org/details/3135521376_qq_CD1 adresinde.
Düzgün yazılmış finansla ilgili kodların bunu kullanması gerekir, ama gördüğüm finans sektöründe ana bilgisayar çalıştıranlar dışında pek yaygın değildi. İlginç şekilde sabit nokta aritmetiğini FreeType, GDI, WPF, WARP (D3D11 referans rasterleştiricisi) gibi yazılım rasterleştiricilerinde çok daha fazla gördüm.
https://arxiv.org/html/2306.11975v4
Gerçekten ilginç.
“Eleman bazlı kayan nokta tensör çarpımında enerji maliyetini potansiyel olarak %95, iç çarpımda %80 azaltabilir” türünden bir iddia; eğer konu evrişimli sinir ağları olsaydı hesaplama optimizasyonu çok daha anlamlı olurdu.
Ama Transformer'lar hesaplama açısından hafif, bellek açısından ağır taraftadır. Darboğaz, model ağırlıklarını çekirdeklere getirme sürecidir; alıntılanan %95 ve %80 enerji tasarrufu da tüm çıkarım sürecine değil, yalnızca çarpma işlemlerine ayrı ayrı bakılan değerlerdir.
“Yalnızca decoder'lı Transformer çıkarımında bellek bant genişliği darboğazdır” diye tekrarlanan söz, katı anlamda yalnızca batch boyutu 1 olan tekil batch decoding için geçerlidir. Çünkü o durumda çoğunlukla vektör-matris çarpımı yapılır.
fp8'de tahmini kapı sayısı normal bir fp8 çarpanı için 296, bu teknik için 157; yani çarpan gücündeki kazanç çok daha düşük olacaktır. Yaklaşık %50 daha makul bir tahmin ve tekrar edeyim, fp8'de iç çarpımda toplama işlemin büyük bir bölümünü oluşturur.
Genel olarak %80 güç kazancı ve küçük doğruluk düşüşü iddia etmek epey dürüst olmayan bir izlenim veriyor. Çünkü güç kazancı yalnızca fp32 işlemler için geçerli, küçük doğruluk düşüşü ise yalnızca fp8 operatörleri için geçerli. fp32'deki doğruluk düşüşü analiz edilmemiş, fp8 iç çarpımda tasarruf edilen güç de sunulmamış.
fp4 gibi daha küçük biçimler için doğrudan lookup table bile kullanılabilir; bu da fiilen bir ölçüde standartlaşmış bir quantization yöntemine yaklaşır.
[2023] GradIEEEnt half decent: The hidden power of imprecise lines
http://tom7.org/grad/murphy2023grad.pdf
Videosu da var: https://www.youtube.com/watch?v=Ae9EKCyI1xU
GradIEEEnt half decent: The hidden power of imprecise lines [video] - https://news.ycombinator.com/item?id=36806970 - Temmuz 2023, 9 yorum
GradIEEEnt half decent - https://news.ycombinator.com/item?id=35780921 - Mayıs 2023, 32 yorum
Okumadım ama bu, bir biçimde logaritma tablosu kullanmak gibi değil mi diye düşünüyorum.
Küçümsemek için söylemiyorum; mantık kapıları gibi daha temel bir seviyede logaritmaları tam anlamadığımı hissettiğim için soruyorum. Çarpmayı tablo araması ve toplamaya çevirebiliyorsak, tersine zor toplama ve kolay çarpma sunan devreler ya da bu tür ödünleşimlerin kombinasyonları da olmalı gibi geliyor.
Bu kısım kolaydır ve herkes donanımda uygulayabilir. Zor kısım birikim yaparken, özellikle geniş bir aralıkta birikim yapıp log uzayında kalmaya devam etmektir.
Makalede hata teriminin düzgün bir türetimi ve tartışması yok gibi görünüyor, bu yüzden garip geldi. Hepsi çıkarım sonuçları üzerinden dolaylı olarak ele alınmış.
Tam kapı seviyesi açıklama olmasa bile “toplayıcı” gibi blok etiketleri olan bir şekil gerekirdi. İlk paragrafta de Vries adını görmek de güven hissine yardımcı olmadı.
Yöntem bölümünün dipnotunda “L-Mul tabanlı modellerin, özel mimari tasarımla entegre edilmiş cihazlarda eğitilmesi ve barındırılması önerilir. Patent başvurusu sürüyor” deniyor.
Hesaplama miktarı azalacak gibi görünüyor ama değer başına hâlâ 8 bit kullandığı için çıkarım çalıştırmak için gereken bellek ihtiyacını azaltmıyor.
Bu yüzden modeli çıkarım amaçları için daha erişilebilir hâle getirdiğini söylemek zor. Bu depolama biçimi eğitim için de uygunsa potansiyel olarak ilginç bir kullanım alanı olabilir.
Baytları taşımak, hesaplamadan 10 kattan fazla enerji harcar. Hesaplama verimliliği insanların sandığı kadar büyük bir sorun değil.
Şu anda hesaplama sadece yanlış yerde; en azından iç çarpımdaki ilk toplama aşamasında bellek veri yolunu baypas edip bellek hücresinin hemen yanında olmalı.
Deneyimime göre sabit nokta matematiğinin gerçek sihirbazları 8 bit ve 16 bit video oyunu tasarımcılarıydı.
Yaptıkları optimizasyonlar hayranlık vericiydi; örneğin ilk uçuş simülatörlerini ve birinci şahıs nişancı oyunlarını yapmak için 3B matris matematiğini gerçek zamanlı hesaplayabilir hâle getirdiler.