1 puan yazan GN⁺ 2024-05-13 | 1 yorum | WhatsApp'ta paylaş
  • Yapay zeka hesaplama maliyetleri büyürken, Hazy Research GPU performans optimizasyonunun anahtarını NVIDIA H100'ün tensor core'larını hiç boş bırakmamak olarak özetliyor
  • H100, half-precision matris çarpımında 989 TFLOPs üretirken genel amaçlı işlemler yaklaşık 60 TFLOPs'ta kalıyor; bu yüzden tensor core durduğu anda kullanım oranı ciddi biçimde düşüyor
  • Tepe performansa yaklaşmak için WGMMA, shared memory yerleşimi, adres üretimi ve occupancy birlikte ele alınmalı; wgmma.mma_async olmadan mikro benchmarklarda tepe değerin yaklaşık %63'ünde kalınıyor
  • Açık kaynak CUDA gömülü DSL'i ThunderKittens, tile·vector soyutlamalarıyla swizzling ve register layout gibi karmaşıklıkları sararak FlashAttention türü kernel'lerin yazımını sadeleştiriyor
  • H100 için FlashAttention-2 forward kernel'i yaklaşık 100 satırda yazılabiliyor ve FlashAttention-2'den yaklaşık %30 daha hızlı; Based linear attention kernel'i ise 215 TFLOPs seviyesinde çalışıyor

H100 performansını belirleyen koşullar

  • Yapay zeka çok fazla compute kullanıyor ve Hazy Research son birkaç yıldır AI'ın daha az compute kullanması ya da verilen compute üzerinde daha verimli çalışması için uğraşıyor
  • Pratik amaç, GPU'ları hızlandırırken öğrenilenleri toparlamak ve hızlı kernel yazımına yardımcı olan CUDA gömülü DSL'i ThunderKittens'ı yayımlamak
  • Daha geniş çerçevede ise donanım anlayışının AI compute'una bakış biçimini nasıl değiştirdiği ele alınıyor

NVIDIA H100'ün yapısı ve darboğazlar

  • H100 SXM GPU şu yapı temel alınarak ele alınıyor
    • 80GB HBM3, 3TB/s bant genişliği
    • 50MB L2 cache, 12TB/s bant genişliği; GPU genelinde 25MB'lık iki bölüme ayrılmış ve crossbar ile bağlanmış durumda
  • 132 adet SM

    • Her SM, en fazla 227KB shared memory içeren 256KB L1 cache'e sahip ve birlikte yaklaşık 33TB/s bant genişliği sunuyor
    • Hopper'ın yeni donanımı Tensor Memory Accelerator(TMA), asenkron adres üretimi ve bellek fetch işlemlerini üstleniyor
    • Her SM 4 quadrant'tan oluşuyor; her quadrant içinde bir warp scheduler, 512 vector register, matris çarpımı için tensor core ve paralel yerleşik komutlar bulunuyor
    • Tüm compute işlemleri SM üzerinde gerçekleşiyor ve bunların büyük bölümü register içinde işleniyor
    • H100'de performans almanın özü, tensor core'u sürekli beslenmiş durumda tutmak
    • H100, half-precision matris çarpımında 989 TFLOPs, “diğer” işlemlerde ise yaklaşık 60 TFLOPs sunuyor
    • Tensor core'un kullanıldığı çevrimlerde donanım kullanım oranı en az %94'e ulaşıyor
    • Tensor core'un kullanılmadığı çevrimlerde ise kullanım en fazla %6'da kalıyor

WGMMA: gerekli ama zorlu komut

  • H100'de wgmma.mma_async adlı warp group matrix multiply accumulate komutu bulunuyor
    • PTX'te wgmma.mma_async
    • SASS'ta HGMMA / IGMMA / QGMMA / BGMMA
  • Önceki GPU'lardaki wmma.mma.sync, mma.sync komutlarında 32 thread'den oluşan tek bir warp, tensor core'a veri verip sonucu bekleyen senkron bir model izliyordu
  • wgmma.mma_async ile art arda gelen 128 thread, SM'in tüm quadrant'ları boyunca işbirlikçi şekilde senkronize oluyor ve shared memory'den doğrudan asenkron matris çarpımı başlatıyor
    • Warp'lar matris çarpımı sürerken register üzerinde başka işler yapabiliyor
    • Sonuç istenen anda beklenebiliyor
  • Mikro benchmarklarda H100'ün toplam compute gücünü çıkarmak için bu komutların gerekli olduğu görüldü
    • Kullanılmadığında GPU'nun tepe kullanımın yaklaşık %63'ünde kaldığı gözlendi
    • Bunun nedeni, tensor core'un yerel kaynaklarda bile derin bir donanım pipeline'ı gerektirmesi olabilir
  • En büyük zorluk memory layout karmaşıklığı
    • Swizzle uygulanmamış shared memory layout, çok zayıf coalescing nedeniyle yüksek L2 bant genişliği talep ediyor
    • Swizzled layout'un dokümantasyonu hatalı olduğundan çözülmesi zaman aldı
    • Swizzled layout yalnızca belirli matris shape'lerinde çalışıyor gibi görünüyor ve wgmma.mma_async'in diğer özellikleriyle iyi örtüşmüyor
    • Donanım, tensor core'a giderken sub-matrix transpose yapabiliyor ama bu yalnızca layout swizzled değilse mümkün
  • FlashAttention gibi kernel'lerde TMA ve L2 cache yeterince hızlı olduğu için bu sorun kısmen gizlenebiliyor
  • Donanımı tam kullanmak için memory request'leri coalescing etmek ve bank conflict'ten kaçınmak gerektiğinden layout kontrolü kritik hale geliyor

Shared memory ve bank conflict

  • Shared memory'nin tek erişim gecikmesi yaklaşık 30 cycle görünüyor; bu sürede SM'in tensor core'u neredeyse iki kez 32x32 kare matris çarpımı yapabiliyor
  • FlashAttention gibi önceki çalışmalarda daha çok HBM-SRAM darboğazına odaklanılmıştı ve geçmişte bu gerçekten önemliydi
  • HBM hızlandıkça ve tensor core çipin diğer bölümlerinden daha hızlı büyüdükçe, shared memory'deki küçük gecikmeler bile ortadan kaldırılması ya da gizlenmesi gereken bir hedefe dönüştü
  • Shared memory 32 bank'a ayrıldığı için dikkat edilmezse bank conflict oluşuyor
    • Aynı memory bank'ten birden fazla farklı memory parçası aynı anda istenirse istekler seri hale geliyor
    • Deneyime göre bu, kernel'in dengesiz biçimde yavaşlamasına yol açabiliyor
    • WGMMA ve MMA komutlarının gerektirdiği register layout, basit kullanıldığında bank conflict yaşayabiliyor
  • Çözüm, conflict'i önlemek için shared memory'yi çeşitli swizzling kalıplarıyla yeniden düzenlemek
  • Mümkün olduğunda register ile shared memory arasındaki taşımayı önlemek; gerektiğinde ise WGMMA ve TMA gibi yerleşik donanımla asenkron veri taşıma yapmak daha avantajlı
  • Gerçek warp kullanılarak yapılan senkron taşıma en yaygın yöntem olsa da neredeyse en kötü fallback seçeneği

Adres üretimi ve TMA

  • H100'de hem tensor core hem de memory çok hızlı olduğu için, fetch edilecek memory address'leri üretme işi bile çip kaynaklarının önemli bir bölümünü tüketiyor
    • Karmaşık interleaved pattern'ler veya swizzling pattern'leri eklendiğinde bu daha da belirginleşiyor
  • NVIDIA'nın Tensor Memory Accelerator(TMA) çözümü, global/shared memory için çok boyutlu tensor layout tanımlamaya, bu tensor'ün subtile'larını asenkron fetch etmeye ve tamamlandığında barrier tetiklemeye olanak veriyor
  • TMA, adres üretim maliyetini düşürüyor ve pipeline kurmayı da kolaylaştırıyor
  • TMA, wgmma.mma_async gibi H100'ün potansiyelini ortaya çıkarmada kritik görülüyor
    • Deneyime göre WGMMA'dan bile daha önemli olabilir
    • Register kaynaklarını ve instruction dispatch'i tasarruflu kullanıyor
    • Global memory üzerinde asenkron reduction yapabilme özelliği sayesinde karmaşık backward kernel'lerde de işe yarıyor
  • TMA için de swizzling mode'u anlamak adına bir miktar reverse engineering gerekti, ancak WGMMA'ya kıyasla daha az sancılıydı

Occupancy'nin gizlediği maliyet

  • CUDA'da occupancy, aynı yürütme donanımı üzerinde birlikte zamanlanan thread sayısını ifade ediyor
  • SM quadrant içindeki warp scheduler, her cycle'da komut almaya hazır bir warp'a instruction issue etmeye çalışıyor
  • H100, önceki nesillere göre occupancy'ye daha az bağımlı bazı özellikler taşıyor
    • Asenkron yetenekler sayesinde tek bir instruction stream bile memory fetch, matrix multiply, shared memory reduction ve register math işlemlerini aynı anda meşgul tutabiliyor
  • Yine de occupancy, hataları ve senkronizasyon maliyetini gizlemede çok yararlı
    • Kusursuz tasarlanmış bir pipeline ek occupancy olmadan da hızlı olabilir
    • Gerçek gözlemler, NVIDIA GPU'ların occupancy dikkate alınarak tasarlandığını düşündürüyor
    • Senkronizasyon ve hata ihtimali fazla olduğundan occupancy yükseldiğinde gerçekleşen donanım kullanım oranı da çoğu zaman artıyor
  • H100'de occupancy yararlı bir seviyede; ancak A100 ve RTX 4090'da bunun sırasıyla daha da önemli hale geldiği düşünülüyor
    • Bunun, H100'e kıyasla senkron instruction dispatch'e daha fazla bağımlı olmalarından kaynaklanabileceği belirtiliyor

ThunderKittens: CUDA içindeki küçük bir DSL

  • ThunderKittens, H100 üzerinde hızlı kernel'leri daha kolay yazmak için oluşturulmuş bir CUDA gömülü DSL
  • Başlangıçta laboratuvar içi kullanım için geliştirildi, ardından açık kaynak olarak yayımlandı
  • Adı, kittens kelimesinin sevimli bulunması ve kodda kittens:: yazmanın eğlenceli olması nedeniyle seçildi
  • ThunderKittens sadeliği hedefliyor ve dört adet template tabanlı tür sunuyor
    • Register tiles: register file üzerindeki 2D tensor
    • Register vectors: register file üzerindeki 1D tensor
    • Shared tiles: shared memory içindeki 2D tensor
    • Shared vectors: shared memory içindeki 1D tensor
  • Tile'lar height, width ve layout ile parameterized ediliyor
  • Register vector, length ve layout ile parameterized edilirken shared vector yalnızca length kullanıyor
    • Shared vector genel olarak bank conflict yaşamıyor
  • Sunulan işlemler, warp düzeyinde veya işbirlikçi warp group düzeyinde tile·vector nesnelerini işliyor
    • initializer: shared vector'ü zero yapmak gibi
    • unary op: exp gibi
    • binary op: mul gibi
    • row/column op: row_sum gibi
  • ThunderKittens, Triton benzeri kütüphanelerin aksine CUDA içine gömülü olduğundan soyutlamanın “gracefully” başarısız olduğu ifade ediliyor
    • Eksik bir özellik varsa istenen biçimde genişletilebiliyor

FlashAttention örneği ve performans

  • ThunderKittens örneği olarak RTX 4090 için basit bir forward FlashAttention kernel'i gösteriliyor
    • Yalnızca headdim=64 ele alınıyor
    • n, 256'nın katı olmak zorunda
    • Yaklaşık 60 satır CUDA koduyla yazılıyor
    • Donanım kullanım oranı %75
    • Karmaşıklığın büyük kısmı swizzling pattern'lerinden veya register layout'tan değil, algoritmanın kendisinden geliyor
  • H100 için FlashAttention-2 forward pass de ThunderKittens ile yazılmış
    • TMA, WGMMA, swizzling mode ve descriptor karmaşıklığını ThunderKittens sarıyor
    • Kernel yaklaşık 100 satır
    • H100 üzerinde FlashAttention-2'den yaklaşık %30 daha hızlı
  • ThunderKittens, GPU üzerinde kullanılabilen bir “mini-pytorch” gibi; layout ve instruction ayrıntılarını sarıp primitive'ler sunuyor
  • Based linear attention ve ileride yayımlanacak diğer mimariler için kernel'ler de birlikte sunuluyor
    • Based linear attention kernel'i 215 TFLOPs ile çalışıyor
    • Algoritmanın kendi recompute maliyeti hesaba katıldığında 300 TFLOPs'u aşıyor
    • Linear attention teoride daha verimli olsa da gerçek donanımda tarihsel olarak verimi oldukça düşük kaldı
    • Bu sonucun yüksek throughput gerektiren uygulamaların kapsamını genişletebileceği düşünülüyor

Tile merkezli düşünme

  • ThunderKittens'ın iyi çalışmasının nedeni, her şeyi yapmaya çalışmaması olarak görülüyor
    • CUDA, ThunderKittens'dan çok daha yüksek ifade gücüne sahip
    • ThunderKittens küçük ve basit bir DSL
  • Temel soyutlama small tile ve bunun yapay zeka ile donanımın gittiği yönle uyumlu olduğu düşünülüyor
  • ThunderKittens, 16'dan küçük boyutları desteklemiyor
    • Donanımın da bu kadar küçük boyutları özellikle istemediği düşünülüyor
    • “Matrix multiply 16x16'dan küçükse bunun gerçekten AI olup olmadığından emin olabilir misiniz?” şeklinde bir sorgulama yapılıyor
  • CPU dönemindeki 32-bit word'ü register olarak görme yaklaşımının AI donanımına uymadığı savunuluyor
    • CUDA'nın 1024-bit vector register'ı doğru yönde atılmış bir adım olarak görülüyor
    • Burada register, 16x16 tile verisini temsil ediyor
  • Yapay zekada hâlâ matrix multiply, reduction ve reshape merkezde olduğu için tile soyutlamasının hem AI'a hem de donanıma uyduğu düşünülüyor
  • Bundan sonra AI fikirlerini donanıma iyi eşlenecek şekilde yeniden düzenlemek gerekecek
    • Recurrent state boyutu, SM'e sığabilecek kadar büyük olmalı
    • Compute density, donanımın talep ettiği seviyenin altına düşmemeli
    • Donanımdan öğrenilenleri AI tasarımına uygulamak, gelecek için önemli bir yön olarak görülüyor

AMD destek planı

  • ThunderKittens için AMD hardware desteğinin yakında gelmesi planlanıyor

1 yorum

 
GN⁺ 2024-05-13
Hacker News yorumları
  • “Matris çarpımı 16x16’dan küçükse, bunun gerçekten yapay zeka olduğundan emin misin?” sorusu ilginç
    Yapay zeka donanımının gereksinimleri giderek daha netleşiyor. GPU aslında bambaşka bir amaç için tasarlanmıştı ama matris çarpımı donanımı iyi olduğu için yapay zekada kullanıldı; “AI GPU” ise gerçek bir GPU’daki bazı işlevleri üzerinden atabilir
    Sayı gösteriminde de 16 bit kayan nokta, 8 bit, 2 bit, 1 bit gibi daha kısa biçimlere doğru bir akış var ve bir gün uygun nokta belirlenecek. Bu yazı, 16x16 tile’ları tercih eden donanımın oldukça makul olduğunu gösteriyor. Şu anda birileri bunu VHDL ile yazıyor olabilir ya da yakında yazması kuvvetle muhtemel
    Sonunda yalnızca “AI” işlemlerini, gereksiz donanım yükü olmadan mümkün olduğunca yapan daha basit, daha az genel amaçlı ve ucuz cihazlar çıkacak gibi görünüyor

    • GPU’lar zaten mümkün olduğunca yalın AI makinelerine evrildi. En azından Nervana’nın kurulduğu 2014’ten beri GPU’nun eski teknoloji olduğu ve yapay zekaya uygun olmadığı söyleniyordu; ama GPU’nun bu kadar hızlı AI makinesine dönüşeceği pek tahmin edilmemiş gibi
    • Apple birkaç yıldır zaten bu yönde ilerliyor. Yonga üzerindeki NPU, GPU ya da CPU’dan tamamen farklı[1]
      Nvidia da muhtemelen bunun üzerinde çalışıyordur; ancak oyun/eğlence/kripto para/yapay zekayı tek bir cihazda birleştiren, yani ekran kartı formunu koruyan yaklaşım iş açısından daha iyi bir tercih olabilir
      [1] https://github.com/hollance/neural-engine/blob/master/docs/a...
    • “NVIDIA’nın yalanı” kısmı rekabetin derinliğini gösteriyor. Belge hatasının tamamen tesadüf olması pek mümkün değil; diyagramlar çalması ya da kopyalaması kolay şeyler olduğu için Nvidia’nın bunu bilerek bırakmasında bir fayda görmüş olması mümkün
      Naveen Rao’nun Nervana’sının, Nvidia’nın kendi sürücüsünden daha hızlı bir Nvidia Maxwell sürücüsü yaptığı zamanları hatırlatıyor. Hızla büyüyen bir üründeki dokümantasyon hatalarının hepsi rekabete karşı önlem değildir; ama araştırmacıların wgmma’yı tersine mühendislikle çözmesi uzun sürdü ve H100 etrafındaki ABD-Çin siyasi durumu da düşünülünce Nvidia’nın hendeğini korumak için eski yöntemlere başvurduğu izlenimi doğuyor
      Bu yüzden H100’ün tuhaflıklarını aşırı kurcalamak yerine, “yapay zekanın istediği donanım nedir” sorusuna ticari koşulların da dahil olduğunu görmek gerekiyor
    • AMD, Versal serisinde şimdiden 2. nesle gelmiş durumda
      https://www.amd.com/en/products/accelerators/alveo/v80.html
      XDNA Architecture
      https://www.amd.com/en/technologies/xdna.html
    • Google da yaklaşık 10 yıldır böyle cihazlar üretmiyor mu?
  • “NVIDIA’nın yalanı. Gerçek 128b swizzled wgmma yerleşimi hakkında inanılmaz derecede yanıltıcı bir ifade. Bu diyagram yüzünden geri alamayacağım 3 haftamı kaybettim, o yüzden kamuoyu önünde utandırıyorum” kısmı etkileyici
    Yapay zekadaki ilerlemenin çok büyük bir bölümünün matris çarpımı optimizasyonu gibi mühendislikte, bu mühendisliğin de önemli bir kısmının NVIDIA çiplerini tersine mühendislikle çözmekte yattığını öğrenince şaşıracak biri var mı merak ediyorum

    • Yapının kendisi büyük fark yaratmıyor. Yeterince büyük veriyle yeterince büyük bir modeli eğitirseniz, mimariden bağımsız olarak benzer sonuçlar çıkma eğiliminde. Bu yüzden yapay zekadaki ilerlemenin büyük kısmının artık matrisleri çok hızlı çarpabilir hâle gelmemiz sayesinde olduğu söylenebilir
  • Warp scheduler, 4 quadrant, tensor memory accelerator, unswizzled wgmma layout…
    GPU terminolojisi ile Star Trek tarzı technobabble arasındaki sınır giderek bulanıklaşıyor

    • Yazıyı okurken bir dereceye kadar biliyordum ama “tensor accelerator ile quadrant’ı warp’lıyoruz” derseniz gerçekten Star Trek hissi veriyor
      Başka yazılara bakarken de ara sıra bunu düşündüm. Birine buradaki yazının bağlantısı verilse ve okusa nasıl hisseder acaba diye. Warp core tartışılan bir Trek geek etkinliğine girmiş gibi olurdu
    • Bu söz üzerine bir adım geri çekilip terimlere yeni bir gözle baktım; gerçekten doğru olduğu için güldüm
  • Yapay zeka çıkarımının güç tüketimini azaltıp hızını artırmak için en iyisi analog yaklaşım devrelerine geçmek gibi görünüyor
    Kusursuz kayan nokta çarpma ve toplama gerekmiyor; sadece iki giriş voltajını alıp çarpım sonucuna yeterince yakın bir çıkış voltajı veren bir cihaza ihtiyaç var

    • Bu yönde çalışan birini tanıyorum; bana büyük engellerin, mevcut çip üretim teknolojisiyle analog mantığın mümkün olduğu bir şey üretmenin yolu, anten gibi davranmayan bir tasarım ve fiziksel çipler arasındaki üretim toleransları farklı olduğundan çalıştırılacak modelin çip bazında ince ayar gerektirme olasılığı olduğunu söylemişti
      Büyük avantaj, float16’yı 16 hatla temsil etmek yerine o sayıyı tek bir hattın voltajıyla temsil etmesi. Teoride float32’den çok daha yüksek hassasiyet bile mümkün olabilir. Ayrıca değerleri aritmetik mantık birimine yüklemeden doğrudan bağlayabildiğiniz için, kalıp alanı ve güç tasarrufu potansiyel olarak birkaç basamak mertebesinde olabilir
    • Analog devrelerin pratikte yararlı hale gelmesine daha çok var diye düşünüyorum; ama hataların tolere edilebildiği yerlerde çözüm gürültülü dijital devreler olabilir
      Örneğin, bir milyon çıkış bitinden birinin ters dönmesini kabul edip performans/güç oranını iyileştirmek gibi. Tek bir sonsuz değer tüm işi bozabileceği için float32’de bu zor olurdu; ama int8’de 0 beklerken ara sıra 128 gelmesi tolere edilebilir gibi görünüyor
      [1] H100’ün matris kayan nokta biriminin gerçekten IEEE 754’e uyup uymadığından emin değilim
    • Bir adım daha ileri gidersek, gerçek biyolojik beynin çalışma biçimine benzeyen ama kolayca üretilebilen bir şeye ihtiyacımız olduğunu düşünüyorum
      Biyolojik sinir ağları, sıradan yapay sinir ağları gibi tam bağlantılıya yakın değildir; nöronların giriş/çıkış bağlantı katsayısı 10’un altındadır, yani çok yereldir. Biyolojide bildiğimiz kadarıyla geri yayılım da yok; bunun yerine geri bildirim ve döngüsellik var
      Merkezi sinir sistemi işlevleri için gerekli olup henüz bilmediğimiz yardımcı hücreler veya süreçler de olabilir. Üst düzeyde bile ciddi miktarda “sabit kodlanmış” bağlantısallık olması muhtemel ve bunların bir kısmı zaten biliniyor. Örneğin kulaktaki işitsel nöronlar birbirine bağlıdır ve sesin konumunu belirlemek için evrişime benzer bir şey gerçekleşir. Bu bir belirme olgusu değil; eğitim olmadan da mümkün olan bir işlevdir
      Yaşamın bunu milyarlarca yıl ve benzer sayıda nesil boyunca bulmuş olması şaşırtıcı değil. Teoride yazılımla da mümkün olurdu; ancak primat/insan beynindeki 1 trilyondan fazla nöron düşünülünce, bugünün bin çekirdek seviyesindeki makineleriyle bile aşırı zor. “Bulut” bile gerekli bağlantısallığı ve gecikme süresini karşılayamazdı
      Bu yaklaşımla solucan ya da böcek düzeyinde bir şeyi başarıyla modelleyebilsek harika olurdu
    • Yeterli aralık ve hassasiyeti aynı anda sağlamak neredeyse imkânsız görünüyor
    • Açıkçası hata ayıklaması kâbus gibi görünüyor
  • Bu yazı bana CS 149 paralel programlama dersinde hissettiğim keyfi yeniden hatırlattı

    • Kayvon ve Kunle harika. İki dönem önce CS149 Parallel Programming’i aldım ve gerçekten çok iyiydi :)
  • Bu yazının üslubu gerçekten etkileyici ve bunu AMD MI300x üzerinde görmeyi dört gözle bekliyorum. Kendi donanımımda zaman kullanmak isterseniz haber verin

    • AMD ürünleriyle yapay zeka işlerini ne kadar denediğini merak ediyorum. RTX 4090’a 2500 dolardan fazla vermek istemediğim için, deney veya başlangıç amaçlı RX 7900XTX düşünüyorum
      Gerçekte ne kadar iyi çalışacağını; yoksa biraz daha biriktirip 7900 XT yerine XTX almak daha mı iyi olur, VRAM azalırsa pratik kullanışlılık ne kadar etkilenir, bunları da merak ediyorum
    • İyi yazı açık ve muğlaklıktan uzak olmalı. Konuşurken araya girip clarification isteyebilirsiniz, ama yazının mesajı iletmek için tek şansı vardır
      Okurun yazarların ne demek istediğini anlamak için knowyourmeme.com’a kadar bakması gerekmemeli. Bu başlığın ne anlama geldiğini bile bilmiyorum; bence hedefi o kadar ıskalamış
    • Gerçekten mi? Wallstreetbets döneminden PTSD aklıma geldi
  • Böyle bir yazıyı tamamen anlamak için nereden başlamak, nasıl bir yol haritası izlemek gerekir merak ediyorum

    • GPU programlamayı öğrenmek için iyi bir ders var. 4.0 dersi civarında gerekli temeli edinebilirsiniz: https://youtube.com/playlist?list=PLzn6LN6WhlN06hIOA_ge6Srgd...
      Ayrıca vektör-matris çarpımı yapan bir CUDA kernel’ı kendiniz yazmayı denemek iyi olur. pycuda kullanırsanız kernel’a odaklanıp geri kalanını Python’la yazabilirsiniz. ChatGPT’ye 4000 elemanlı bir vektörle 4000x12000 bir matrisi çarpan bir uygulamayı kendiniz yapmak istediğinizi söyleyip tüm süreçte size rehberlik etmesini isteyebilirsiniz
      GPU kiralamak için Runpod iyi; şu anda düşük seviye GPU’lardan H100’e kadar var. Başta düşük sınıf bir GPU ile başlayabilirsiniz
    • Daha derine inmek istiyorsanız Spiral matris çarpımı oynatma listesine bakmak iyi olabilir: https://www.youtube.com/playlist?list=PL04PGV4cTuIWT_NXvvZsn...
      Spiral ile matris çarpımı kernel’ı uygulayıp optimize etmeye 2 ay harcadım
  • GitHub README’deki grafik (https://github.com/HazyResearch/ThunderKittens/blob/main/att...) çok baş döndürücü. Böyle dalgalı çubuk grafikler yasal mı gerçekten? :P

  • ThunderKittens adı harika. ThunderKittens’ın ileri yayılımdan bir basamak daha zor olan FlashAttention geri yayılımını ele aldığını görmek isterim

  • Bu tür araştırmaları bugün NPU üreten ekipler zaten yapmıyor mu? Örneğin Groq çipi, yapay zekaya özel bir mimari kullandığı için bu seviyede performans verebiliyor. Tüketici tarafında Apple Silicon da epey yetenekli
    Bu alanın insanı değilim ama görece yavaş yollar üzerinden haberleşen genel amaçlı işlemcilerle sınırlara takılınacak gibi görünüyor. Donanım düzeyinde tasarımı yeniden düşünmek ve sonunda tüketici pazarında fiyatları düşürmek daha iyi bir uzun vadeli strateji gibi duruyor

    • Tüketici tarafında Apple Silicon’ın epey yetenekli olduğu ifadesinden emin değilim. Reddit’teki localllama alt dizinine bakınca, kullanılabilir hızlara ulaşmaya çalışan CPU kullanıcılarının hayal kırıklığına uğradığı çok sayıda gönderi var
      Birkaç yüz dolara Nvidia GPU alınabiliyorken ya da 900 dolara 4050 6GB VRAM’li bir oyun dizüstüsü alınabiliyorken, CPU tabanlı yapay zekayı yetenekli diye nitelemek zor
      İş yerinde de GPU olmadığı için CPU tabanlı denedim ama küçük modeller kullanıp beklemek dışında pek gerçekçi değildi. Sonunda GPU’lu bir bilgisayar talep etmek zorunda kaldım
      “Teknik olarak mümkün” ile “gerçekte kullanımı iyi” aynı şey değil. Nvidia’nın kullanımı gerçekten iyiydi; CPU ise sancılı ve sinir bozucuydu