· kaynak Hacker News – Front Page (native)
Linux kernel modülü, RTX 3000 GPU'larda profesyonel seviyede FP16/BF16 performansının önünü açıyor
Açık kaynak bir Linux kernel modülü, GeForce RTX 3000 kartlarındaki FP16/BF16 komut hızısı sınırını profesyonel kartlara denk seviyelere çıkarıyor; kullanıcı raporları BF16 GEMM'de %25–80 kazanç gösteriyor.
Modül ne yapıyor
Zagitta tarafından GitHub'da yayımlanan ve Hacker News ana sayfasına düşen gpu-unlock adlı açık kaynak Linux kernel modülü, Nvidia'nın tüketici sınıfı GeForce RTX 3000 ekran kartlarında FP16 ve BF16 komut gönderim hızına koyduğu sınırı kaldırıyor. Projenin README'sine göre, desteklenen çiplerde FP/BF16 fused multiply-add işlemlerinin FP32 pipeline'larına gönderilme hızını yaklaşık iki katına çıkararak şirketin profesyonel kartlarının performansına ulaşıyor.
Modül Ampere GA102, GA103, GA104 ve GA106 çiplerini hedefliyor — pratikte RTX 3090 Ti'den RTX 3060'a kadar.
Nasıl çalışıyor
Proje iki önceki tekniği birleştiriyor: CMP unlocker'dan V67/PLM yöntemi ve UEFI tabanlı bir yaklaşımın driver öncesi zamanlaması. Modül önyükleme sırasında erken yükleniyor — initramfs içinde, tescilli Nvidia driver'ı kart bağlanmadan önce — hız seçicilerini yazıyor (tam BF16 hızını seçen SS0 0x88888888 ve 4-bit SS1 0x8 IMLA4), ardından fonksiyon seviyesinde bir reset gerçekleştiriyor. Bundan sonra hiçbir şekilde değiştirilmemiş Nvidia driver'ı kartı her zamanki gibi bağlıyor ve başlatıyor.\n Yamalanmış bir driver'a göre en önemli pratik avantaj dayanıklılık: stok driver'a dokunulmadığı için Nvidia yeni bir sürüm yayınladığında yeniden yama yapılması gerekmiyor. Ayrıca bir UEFI uygulaması da değil, bu yüzden normal bir Linux önyükleme akışına uyuyor.
Modül kesinlikle isteğe bağlı. Kernel komut satırına gpu_unlock.targets=all (veya virgülle ayrılmış bir PCI adres listesi) eklenmedikçe hiçbir şey yapmıyor ve başka bir driver'ın zaten bağladığı veya başlattığı bir karta dokunmayı reddediyor.
Ölçülen sonuçlar
README, 450 W'daki bir RTX 3090 Ti üzerinde FP32 birikimli yoğun 8192³ GEMM değerlerini, beş örneklik medyanlarla bildiriyor: FP16 87.46'dan 118.39 TFLOPS'a, BF16 87.50'den 157.41 TFLOPS'a ve TF32 42.58'den 82.61 TFLOPS'a yükseldi.
Kullanıcıların gönderdiği uyumluluk raporları BF16 GEMM'de şu kazançları gösteriyor: RTX 3090 Ti'de %68–80, RTX 3090'da %25–67, RTX 3080 10 GB'da %70–73, RTX 3070'de %73–81 ve RTX 3060 12 GB'da yaklaşık %80. Proje, rakamların her raporlayıcının kendi benchmark'ından geldiğini ve doğrudan karşılaştırılabilir olmadığını, ayrıca güç sınırlarının büyük önem taşıdığını belirtiyor — en düşük sonuç olan +%25, 225 W ile sınırlandırılmış kartlardan geldi. Bir kart, OEM bir RTX 3080 Ti 20 GB (GA102-250), kilidi açma işlemini tamamlıyor ama BF16 yarım hızda kalıyor ve GA103 için henüz rapor yok.
Gerçek iş yüklerinde matris ağırlıklı görevler kazanıyor: LLM prefill birkaç raporda %14–36 iyileşti ve diffusion ile FlashAttention iş yükleri de hızlandı. Bellek bant genişliğine bağlı olan LLM decode ve INT8 hesaplama değişmedi. Öncesi ve sonrası çıktıları karşılaştıran raporlar bunların bit düzeyinde özdeş olduğunu buldu.
Kurulum ayrıntıları
Kurulum bir make install uzağınızda; Arch, Debian/Ubuntu ve Fedora/RHEL aileleri için paketler üretiliyor ve modülün Nvidia driver'ından önce yüklenmesi için mkinitcpio, initramfs-tools ve dracut için initramfs hook'ları mevcut. Derlemeler sabitlenmiş girdileri HTTPS üzerinden indiriyor ve SHA-256 hash'lerini doğruluyor; dağıtılan kaynak arşivlerinde hiçbir Nvidia dosyası veya üretilmiş firmware yok.
Raporlar tek bir makinede dört karta kadar, ekranı süren karta ve vfio-pci üzerinden sanal makinelere geçirilen kartlara kadar uzanıyor. RAM'e askıya alma kartları kapatıyor ve seçicileri sıfırladığı için modül geri dönüşte kartları yeniden açıyor — bu yaklaşık bir saniye ekliyor — uyku moduna geçme (hibernation) ise kapsanmıyor.
Neden önemli
Tüketici sınıfı Ampere kartlar, FP16, BF16 ve TF32 gönderim hızları çipin yapabileceğinin altında kısıtlı olarak geliyor ve tam hızlı matris performansı çok daha pahalı profesyonel parçalara ayrılıyor. Bu hızları ücretsiz olarak geri kazandıran bir kernel modülü, driver ikili dosyasına dokunmadan veya sürüm başına yama gerektirmeden RTX 3000 donanımının makine öğrenimi iş yükleri — özellikle prefill ağırlıklı çıkarım ve eğitim tarzı GEMM — için kullanışlı ömrünü anlamlı şekilde uzatıyor. Ödünler de gerçek: donanım durumunu Nvidia'nın onayladığı akışın dışında yazıyor, sonuçlar güç beslemesine ve belirli kart revizyonlarına göre değişiyor ve bir şey ters giderse kullanıcı kendi başının çaresine bakıyor. Yine de Ampere kartlarda yerel modeller çalıştıran Linux kullanıcıları için bu, mevcut en büyük ücretsiz performans sıçramalarından biri.
- #linux
- #nvidia
- #gpu
- #kernel-module
- #open-source