İçeriğe geç
edumintsBlog
Makine Öğrenmesi3 dk okuma

GPU-unlock: Nvidia 3000 Serisi Kartlarda FP/BF16 Komut İşleme Hızının Kilidini Açma

Kaynak: Hacker News

Paylaş
Makine ÖğrenmesiEdumints Blog
İçindekiler 3 başlık

GPU unlock 1.0.0: Profesyonel Seviye Performans Kilidini Açma#

Bu Linux çekirdek modülü (kmod), Nvidia 3000 serisi ekran kartlarındaki FP/BF16 komut işleme hızını profesyonel eşdeğerlerinin seviyesine çıkarmak için tasarlanmıştır. CMP kilit açıcının V67/PLM tekniğini, UEFI yaklaşımının sürücü öncesi (pre-driver) zamanlamasıyla birleştirir. Modül; kilidi açar, hız seçicilerini (SS0 0x88888888 tam BF16 hızını seçer ve 4-bit SS1 0x8 IMLA4) yazar ve değiştirilmemiş resmi NVIDIA sürücüsü karta bağlanmadan önce FLR (Function Level Reset) gerçekleştirir.

Bu araç ne bir UEFI uygulamasıdır ne de yamalanmış bir NVIDIA sürücüsüdür. Erken aşamada çalışan bu çekirdek modülü yaklaşımının yazılım geliştirme ve sistem yönetimi açısından en büyük pratik avantajı, NVIDIA her yeni sürücü sürümü yayınladığında manuel olarak yama yapma zorunluluğunu ortadan kaldırmasıdır.

Bu işlemin sonucunda GA102, GA103, GA104 ve GA106 grafik işlemcilerinde FP32 birikimli (accumulation) FP/BF16 FMA komut yürütme hızı iki katına çıkar. Derin öğrenme modelleri eğiten veya yerel çıkarım (inference) yapan geliştiriciler için bu, mevcut tüketici donanımıyla kurumsal seviyeye yakın matris çarpımı performansı elde etmek anlamına gelir.

3090 Ti yoğun 8192³ GEMM (450 W, FP32 birikimli beş örneklemli medyan değerleri):

  • FP16: Önce 87.46 TFLOPS | Sonra 118.39 TFLOPS
  • BF16: Önce 87.50 TFLOPS | Sonra 157.41 TFLOPS
  • TF32: Önce 42.58 TFLOPS | Sonra 82.61 TFLOPS

Nasıl Kurulur (How to install)#

İlk olarak depoyu klonlayın ve kurulumu başlatın:

git clone https://github.com/Zagitta/gpu-unlock
cd gpu-unlock
make install

Ardından mevcut seçeneklerinizi koruyarak çekirdek komut satırınıza (kernel command line) gpu_unlock.targets=all parametresini ekleyin:

  • GRUB (Debian/Ubuntu/Mint): /etc/default/grub içindeki GRUB_CMDLINE_LINUX_DEFAULT satırına ekleyin, ardından sudo update-grub komutunu çalıştırın.
  • GRUB (Arch/CachyOS): Aynı düzenlemeyi yapın, ardından sudo grub-mkconfig -o /boot/grub/grub.cfg komutunu çalıştırın.
  • Fedora/RHEL: sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all" komutunu çalıştırın.
  • systemd-boot: Önyükleme girdinizdeki options satırına ekleyin (bootctl status konumu gösterir).
  • UKI / oluşturulan girdiler: /etc/kernel/cmdline dosyasına ekleyin ve önyükleme imajlarınızı/girdilerinizi yeniden oluşturun (örneğin mkinitcpio UKI'leri için sudo mkinitcpio -P).

Yerel Derleme (Local build)#

Her derleme işlemi, sabitlenmiş NVIDIA/CachyOS girdilerini HTTPS üzerinden indirir, SHA-256 doğrulamasını yapar ve yalnızca derleme dizininde ve ikili (binary) pakette donanım yazılımı (firmware) üretir. Bu yaklaşım, güvenli yazılım tedarik zinciri ve tekrarlanabilir derlemeler (reproducible builds) açısından kritik bir mühendislik pratiğidir. Üç paket formatı da aynı make install-* hedefleri üzerinden kurulur ve paketler mevcut HEAD üzerinden inşa edilir.

Derleme, bağımlılıkları yükleme ve paket kurulumunu tek adımda gerçekleştirmek için (sudo parolası gerektirir):

  • make install — Dağıtımı algılar ve uygun yükleyiciyi seçer.
  • make install-arch — makepkg -sif çalıştırır.
  • make install-deb — apt-get build-dep, dpkg-buildpackage, apt-get install çalıştırır.
  • make install-rpm — dnf builddep, rpmbuild, dnf install çalıştırır.

make install komutu Arch, Debian/Ubuntu veya Fedora/RHEL/CentOS ailelerini tespit etmek için /etc/os-release (ID ve ardından ID_LIKE) dosyasını kullanır. RPM yükleyicisi DNF gerektirir; diğer dağıtımlar için yukarıdaki uyumlu hedeflerden birini doğrudan seçebilirsiniz. Sadece paket derlemek için make arch, make deb ve make rpm komutları kullanılır; oluşturulan Debian ve RPM paketleri build/deb ile build/rpm dizinlerine kaydedilir.

Kaynak ve atıf

Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • github.com/Zagitta/gpu-unlock