NVIDIA RTX GPU’larda Tensor Kilidi Nasıl Açılır?


Techolay’ı Google’da tercih edilen kaynak olarak ekleyin
Teknoloji haberlerimizi Google’da daha sık görmek için Techolay’ı tercih edilen kaynaklarınıza ekleyin.

NVIDIA'nın Yapay Zekâ Kısıtlamasını Kaldırdık

GeForce RTX kartlarında Tensor çekirdeklerinin performansı, kullanılan sayı biçimine ve birikim hassasiyetine göre değişiyor. Topluluk ölçümlerinde RTX 4090’ın FP32 birikimli FP16 sonucu yaklaşık iki katına çıkarken, 200 W güç sınırındaki ASUS RTX 4070 testimizde artış %33,4’te kaldı. Bu yazıda farkın hangi iş yüklerinde görüldüğüne ve sentetik test sonuçlarının ne anlama geldiğine bakıyoruz.

1. GeForce RTX’te Tensor performansı

NVIDIA’nın mimari teknik belgeleri (whitepaper) incelendiğinde, GeForce RTX kartlarındaki Tensor çekirdeklerinin FP16 birikimli (FP16 accumulate) matris çarpımlarında tam hızda çalışırken, yapay zeka eğitimi ve modern çıkarım (inference) süreçlerinde kritik öneme sahip FP32 birikimli (FP32 accumulate) FP16 ve BF16 işlemlerinde yarı hızda çalıştırıldığı görülüyor. Örneğin stok bir RTX 4090, FP32 birikimli FP16 ve BF16 işlemlerinde 165.5 – 165.6 TFLOP seviyesinde sınırlandırılmış. Aynı şekilde Ampere mimarisinde PyTorch’un varsayılan olarak kullandığı TF32 formatı da yarı hıza kilitlenmiş.

Mekanizma Nasıl İşliyor?

Geliştirilen açık kaynaklı araçlar, işletim sistemi açılırken resmi NVIDIA sürücüsü ekran kartına bağlanmadan hemen önce (Linux’ta initramfs aşamasında, Windows’ta ise özel bir UEFI önyükleme katmanında) devreye giriyor:

  1. SM Speed-Select (Hız Seçimi) Yazmaçlarının Değiştirilmesi: Araç, GPU üzerinde yetkili bir firmware işlemi başlatarak Streaming Multiprocessor (SM) hız seçimi yazmaçlarına (SS0 = 0x88888888 ve SS1 = 0x8) doğrudan müdahale edip komut yayınlama hızı (instruction issue rate) kısıtlamasını kaldırıyor.
  2. PCIe Function Level Reset (FLR): Yazmaç değişikliğinin ardından karta PCIe Fonksiyon Düzeyinde Sıfırlama (FLR) uygulanıyor ve kontrol stok NVIDIA sürücüsüne devrediliyor. Yama, PCIe FLR sıfırlamalarında ve sürücü başlatma süreçlerinde geçerliliğini koruyor.
  3. Geçici (Volatile) Yapı: Yapılan değişiklik doğrudan kartın geçici durum yazmaçlarında tutuluyor. Bilgisayar tamamen kapatılıp gücü kesildiğinde (cold boot) kart fabrika ayarlarına dönüyor; bu sayede kalıcı VBIOS bozulması (brick) riski geleneksel VBIOS modlamalarına kıyasla çok daha düşük.

2. Hangi iş yüklerinde fark var?

Kilit açma işlemi ekran kartının kas gücünü yoktan var etmiyor; donanımda fiziksel olarak bulunan ancak firmware ile yarı hıza düşürülen FP32 birikimli Tensor veri yolunu tam hıza çıkarıyor.

3. GPU serilerine göre benchmark sonuçları

Topluluk ve proje geliştiricileri tarafından Linux ve Windows ortamlarında (mmapeak, MAMF ve cuBLAS testleriyle) kaydedilen gerçek dünya ve sentetik test sonuçları şu şekilde:

RTX 40 serisi (Ada Lovelace)

Linux üzerinde 615.78.08 sürücüsüyle yapılan testlerde RTX 4090 (10de:2684 AD102) modelinin FP32 birikimli Tensor performansı tam iki katına çıkmakta:

Ekran Kartıİşlem / Test TürüKilitli (Stok)Kilit Açık (Unlocked)Performans Artışı
RTX 4090FP16 FP32 Birikim (Linux)165.6 TFLOPS331.6 TFLOPS+%100 (2.0x)
RTX 4090BF16 FP32 Birikim (Linux)165.5 TFLOPS330.6 TFLOPS+%99.7 (2.0x)
RTX 4090MAMF Finder FP16 (Windows UEFI)179.0 TFLOPS330.9 TFLOPS+%84.9
RTX 4090Triton BF16 / cuBLAS BF16 (WSL2)Baz Değer–+%41 / +%5
RTX 4080 SUPERFP16 / FP8 Matris ÇarpımıBaz Değer–1.83x / ~2.0x
RTX 4080 32GB (Mod)BF16 (Windows Raporu)Baz Değer–+%78 ~ %101
RTX 4070 Ti SUPERFP16 FP32 (Linux 240W) / Windows95.0 TFLOPS189.9 TFLOPS+%99.9 (Linux) / +%76 (Win)
RTX 4070 TiBF16 (Windows / Genel Rapor)Baz Değer–+%76 ~ %84
RTX 4060 TiFP16 / BF16 TensorBaz Değer–~+%40

RTX 30 serisi (Ampere): Masaüstü ve dizüstü

Hem Linux çekirdek modülü hem de Windows UEFI portu üzerinden alınan ölçümler, giriş seviyesinden amiral gemisine kadar tüm Ampere ailesinde devasa artışlar olduğunu gösteriyor:

Ekran Kartıİşlem / Test TürüKilitli (Stok)Kilit Açık (Unlocked)Performans Artışı
RTX 3090 TiBF16 (Linux / Windows)87.5 / 80.98 TFLOPS157.0 / 150.22 TFLOPS+%80 (Linux) / +%85 (Win)
RTX 3090 TiTF32 Matris Çarpımı (Linux)42.6 TFLOPS82.6 TFLOPS+%93.9
RTX 3090BF16 (Windows Raporu)Baz Değer–+%86 ~ %90
RTX 3080 TiFP16 / BF16 (Windows Raporu)Baz Değer–+%82 (FP16) / +%63 (BF16)
RTX 3080 (10GB / LHR)FP16 & BF16 (Linux / Windows)~65 TFLOPS110–113 TFLOPS+%68 ~ %89
RTX 3070 TiBF16 (Windows Raporu)43.7 TFLOPS89.3 TFLOPS+%103 (~2 Kat)
RTX 3070BF16 / FP16Baz Değer–+%72 ~ %81
RTX 3060 12GB (GA104)BF16 (Windows Raporu)25.77 TFLOPS49.41 TFLOPS+%92
RTX 3060 12GB (GA106)BF16 (Windows Raporu)Baz Değer–+%70
RTX 3080 Ti LaptopBF16 (Windows Raporu)Baz Değer–+%58
RTX 3060 LaptopBF16 (Windows Raporu)Baz Değer–+%49
RTX 3050 Ti LaptopFP16 (Windows Raporu)Baz Değer–+%55

RTX 20 serisi (Turing): 22 GB modlu RTX 2080 Ti

Turing mimarisinde (TU102) 22 GB VRAM modifikasyonlu RTX 2080 Ti üzerinde yapılan testlerde, 250W güç sınırıyla 350W’lık stok bir RTX 3090’a yakın matris çarpım hızlarına ulaşıldı:

RTX 50 Serisi (Blackwell) Neden Yok?

NVIDIA, RTX 50 serisinde (Blackwell mimarisi) firmware imzalama ve donanım başlatma güvenliğini sıkılaştırdığı için mevcut Booter/firmware yöntemi RTX 50 serisinde çalışmamakta.

4. Açık Kaynak Proje Ekosistemi ve GitHub Depoları

Kilit açma araçları hedef GPU mimarisine ve işletim sistemine göre iki ana proje etrafında şekilleniyor:

  1. Zagitta/gpu-unlock (Linux – RTX 30 ve 40 Serisi): Akımı başlatan orijinal depo. RTX 3000 (Ampere) ve RTX 4000 (Ada) serisi kartlarda FP16/BF16/TF32 hızlarını profesyonel eşdeğerlerine çıkaran Linux çekirdek modülüdür.
  2. physicsdolphin/nv-uefi-unlocker (Windows ve Linux – UEFI): Kilidi NVIDIA sürücüsü yüklenmeden önce UEFI aşamasında açan, USB bellekten başlatılan araç. İşlem bittikten sonra sistemi otomatik olarak Windows Önyükleme Yöneticisi’ne (veya Linux önyükleyicisine) devrediyor; GTX 16 ile RTX 20, 30 ve 40 serisini kapsıyor ve Windows’ta önerilen yol bu.

5. Adım Adım Kurulum ve Uygulama Rehberi

Önemli Uyarı: Bu araçlar doğrudan ekran kartının düşük seviyeli donanım yazmaçlarına ve firmware katmanına müdahale eder. Hatalı yapılandırma sistemin kilitlenmesine, siyah ekranda kalmasına veya donanım kararsızlığına yol açabilir. İşlemlere başlamadan önce olası bir önyükleme sorununa karşı yedek bir kurtarma seçeneği (veya dahili GPU / ikinci bir görüntü çıkışı) bulundurmanızı öneriyoruz.

A. Kubuntu 26.04 Üzerinde RTX 40 Serisi Kurulumu (Zagitta/gpu-unlock)

Bu bölüm, Kubuntu 26.04 LTS (çekirdek 7.0, KDE Plasma 6.6, Wayland) üzerinde bir ASUS RTX 4070 ile baştan sona yaptığımız kurulumu anlatıyor. Ada Lovelace (RTX 40) desteği, Zagitta/gpu-unlock deposunun 27 Ekim 2026’da yayımlanan 2.0 sürümüyle ana projeye eklendi ve deneysel olarak işaretli; ayrı bir fork gerekmiyor. Desteklenen PCI cihaz kimlikleri depodaki kernel/gpu_unlock/recipes.c dosyasında listeleniyor (RTX 4070 için 10de:2786). Süreç, Secure Boot kapatılmadan tamamlandı.

  1. NVIDIA Sürücüsünü Kurun: Yeni kurulmuş sistemde açık kaynak nouveau sürücüsü yüklüdür. Ubuntu’nun önerdiği sürücüyü görüp kurun:

sudo apt update
ubuntu-drivers devices
sudo apt install nvidia-driver-595-open

RTX 40 serisi için açık çekirdek modüllü -open paketini seçin. -server varyantlarını ve tek başına nvidia-utils paketini kurmayın; o paket yalnızca nvidia-smi aracını getirir, sürücüyü değil. Secure Boot açıksa kurulum sırasında tek kullanımlık bir MOK parolası belirlemeniz istenir.

  1. MOK Anahtarını Kaydedin (Secure Boot açıksa): Yeniden başlatınca açılan mavi MOK Management ekranında sırasıyla Enroll MOK, Continue ve Yes seçeneklerini seçin, parolayı girin ve Reboot deyin. Ekran yaklaşık 10 saniye bekler; kaçırırsanız sistem nouveau ile açılır. Bu durumda aşağıdaki komutu çalıştırıp yeniden başlatın:

sudo update-secureboot-policy –enroll-key

  1. Sürücüyü ve Kartı Doğrulayın:

nvidia-smi
lsmod | grep -E ‘^(nvidia|nouveau)’
lspci -Dnn -d 10de:

nvidia-smi kartı göstermeli (testimizde sürücü 595.99.02, CUDA 13.2), lsmod çıktısında nouveau bulunmamalı. lspci çıktısından kartın PCI adresini ve kimliğini not edin; bizde 0000:02:00.0 ve [10de:2786] idi. Kimlik recipes.c içinde yoksa kuruluma devam etmeyin.

  1. Kilidi Açmadan Önce Baz Ölçüm Alın: Sonucu karşılaştırabilmek için PyTorch’u bir sanal ortama kurun ve FP32, TF32, FP16 ve BF16 matris çarpımı testini (8192³ GEMM, 5 tekrarın medyanı) çalıştırın. Ubuntu, sistem geneline pip install yapılmasına izin vermediği için sanal ortam şart; paketin adı pytorch değil torch:

sudo apt install python3-venv
python3 -m venv ~/venvs/bench && source ~/venvs/bench/bin/activate
pip install torch –index-url https://download.pytorch.org/whl/cu130

  1. Depoyu İndirin ve Kurun:

sudo apt install git build-essential dkms linux-headers-$(uname -r)
git clone https://github.com/Zagitta/gpu-unlock ~/gpu-unlock
cd ~/gpu-unlock
make install

(Not: make install Ubuntu’yu otomatik tanır, Debian paketini derler, firmware üretimi için NVIDIA sürücü arşivini indirir, modülü DKMS ile kurar ve initramfs’i yeniden oluşturur. Ubuntu’da DKMS, modülü kayıtlı MOK anahtarıyla otomatik olarak imzalar.)

  1. İmzayı ve initramfs İçeriğini Kontrol Edin:

modinfo -F signer gpu_unlock
sudo mokutil –test-key /var/lib/shim-signed/mok/MOK.der
sudo lsinitramfs /boot/initrd.img-$(uname -r) | grep -E ‘gpu_unlock|gpu-unlock’

İlk komut bir imzalayıcı adı (ör. “Secure Boot Module Signature key”), ikincisi “is already enrolled” döndürmeli. Üçüncü komut gpu_unlock.ko.zst, scripts/init-top/gpu-unlock ve gpu-unlock/610.43.03/ altındaki firmware dosyalarını listelemeli. RTX 40 için gereken dosyalar booter_load_ad102.bin, gsp_boot_ad102.bin, gsp_boot_desc_ad102.bin ve gsp_ga10x.bin. Kubuntu 26.04’te /boot altındaki dosyaları yalnızca root okuyabildiği için sudo gerekli.

  1. Çekirdek Parametresini GRUB’a Ekleyin: Kubuntu 26.04, /etc/default/grub dosyasında değerleri tek tırnakla yazıyor; aşağıdaki komut iki tırnak türünde de çalışır. İkinci komut, kurtarma için GRUB menüsünü görünür yapar:

sudo cp /etc/default/grub /etc/default/grub.bak
sudo sed -i -E “s/^(GRUB_CMDLINE_LINUX_DEFAULT=)([‘\”])(.*)([‘\”])$/\1\2\3 gpu_unlock.targets=0000:02:00.0\4/” /etc/default/grub
sudo sed -i ‘s/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=menu/; s/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=5/’ /etc/default/grub
sudo update-grub
sudo grep -m1 ‘gpu_unlock.targets’ /boot/grub/grub.cfg

0000:02:00.0 yerine kendi PCI adresinizi yazın; tek GPU’lu sistemde gpu_unlock.targets=all da aynı sonucu verir. Son komut, parametrenin linux satırının sonunda göründüğünü doğrulamalı.

  1. Bilgisayarı Tamamen Kapatıp Açın: sudo poweroff ile kapatın ve yeniden açın. Açılışta ekran birkaç saniye kararır; bu, kartın sıfırlanıp nvidia-drm sürücüsüne devredildiği andır. Bizim testimizde güç kablosunu çekmek gerekmedi.
  2. Sonucu Doğrulayın:

journalctl -k -b | grep gpu_unlock

Başarılı bir açılışta stage=claim device=0x2786 family=AD102/AD103/AD104/AD106/AD107 satırı, pass=1/4 ile pass=4/4 arasında ret=0 değerleri, stage=host ss0=0x88888888 ss1=0x8 satırı ve en sonda unlocked ibaresi görünür.

Test Sonuçlarımız (ASUS RTX 4070, 200 W, sürücü 595.99.02, PyTorch 2.14.1+cu130):

HassasiyetKilitli (Stok)Kilit Açık (Unlocked)Performans Artışı
FP32 (skaler, Tensor dışı)16.35 TFLOPS18.27 TFLOPS+%11.7
TF3228.60 TFLOPS41.27 TFLOPS+%44.3
FP16 → FP32 Birikim56.40 TFLOPS75.24 TFLOPS+%33.4
BF16 → FP32 Birikim57.13 TFLOPS79.28 TFLOPS+%38.8

RTX 4070 testimizde FP32 birikimli FP16 performansı %33,4, BF16 performansı ise %38,8 arttı. Her iki testte de kart 200 W güç sınırına ulaştı ve saat hızı 1.830–1.995 MHz aralığına geriledi. 216 W güç sınırında sıcaklık 83–84 °C’ye çıktı; saat hızı 1.665 MHz’e kadar düştü ve FP16 sonucu 67,81 TFLOPS’a geriledi. Bu soğutmayla en iyi sonucu stok 200 W sınırında aldık. Skaler FP32’deki farkı Tensor performansına bağlamıyoruz: İkinci test daha düşük sıcaklıkta başladı ve her iki ölçüm sırasında da OBS açıktı.

Geri Alma: Kilidi kalıcı olarak kapatmak için sudo cp /etc/default/grub.bak /etc/default/grub && sudo update-grub çalıştırın. Tek seferlik açılış için GRUB menüsünde e tuşuna basıp linux satırındaki gpu_unlock.targets=… parametresini silin ve Ctrl+X ile başlatın. Paketleri tamamen kaldırmak için sudo apt remove gpu-unlock-dkms gpu-unlock-firmware komutunu kullanın.

B. Windows 11 Üzerinde Kurulum (physicsdolphin/nv-uefi-unlocker)

Windows için güncel ve önerilen yol physicsdolphin/nv-uefi-unlocker (sürüm 2.1.8). Araç, Zagitta/gpu-unlock’taki işlem zincirini UEFI aşamasına taşıyor: bilgisayar bir USB bellekten açılıyor, kilit NVIDIA sürücüsü yüklenmeden önce açılıyor ve sistem ardından otomatik olarak Windows’a (veya Linux’a) devrediliyor. VBIOS flashlanmıyor, sistemin EFI bölümüne (ESP) yazılmıyor ve kalıcı önyükleme sırası değişmiyor; bilgisayar kapatıldığında kilit sıfırlanıyor. RTX 20, 30 ve 40 serisi (masaüstü ve dizüstü) destekleniyor, GTX 16 serisi teorik olarak uyumlu. Pascal ve öncesi, GA100 ve RTX 50 desteklenmiyor.

  1. Paketi İndirin ve Ön Koşulları Kontrol Edin: Projenin GitHub Releases sayfasından güncel paketi indirip bir klasöre çıkarın. NVIDIA firmware dosyaları pakette gelmez; hazırlık betiği belirli sürümleri indirir, doğrular ve gereken dosyaları kendisi üretir.

Gereksinimler: FAT32 biçimli bir USB bellek (içindeki dosyaları yedekleyin); UEFI modunda açılan bir sistem; Secure Boot’un kapalı olması ya da kendinden imzalı bir EFI sertifikasının güvenilir olarak eklenmesi. Windows’ta Hızlı Başlat (Fast Startup) özelliğini kapatın, aksi halde “Kapat” komutu aslında hazırda bekletme yolunu izler. Dizüstü bilgisayarlarda mümkünse yalnızca harici GPU (dGPU) ekran modunu seçin ve tek seferlik önyükleme menüsüne işletim sistemindeki Yeniden Başlat ile girin.

RTX 20 ve GTX 16 (Turing) kullanıcıları, USB’yi hazırlamadan önce hedef Windows makinesinde yönetici olarak açılmış PowerShell’de aşağıdaki betiği bir kez çalıştırıp yeniden başlatmalı ve GSP firmware’inin çalıştığını doğrulamalı:

.\enable-turing-unlock.ps1

  1. USB Belleği Hazırlayın: Paketin çıkarıldığı klasörde betiği çalıştırın. Kart serinize göre 40, 30 ya da 20 (20 ve 16 serisi için) seçin. Windows’ta PowerShell 5 veya üstü gerekir ve ilk çalıştırmada internet bağlantısı şart:

$gpuSeries = “40”
.\make-usbroot.ps1 -Family $gpuSeries

Linux, WSL veya Git Bash’te aynı işlem bash make-usbroot.sh –family 40 komutuyla yapılır (glibc 2.34 ve üstü, ör. Ubuntu 22.04+). PowerShell’de TLS kaynaklı indirme hatası alırsanız bash betiğini WSL ya da Git Bash altında çalıştırabilirsiniz. İndirme veya doğrulama hatasında başka bir firmware sürümüne geçmeyin; hatayı giderin.

  1. Dosyaları USB Belleğe Kopyalayın: Betik dosyaları yerel usbroot/ klasörüne üretir. Betiğin sonunda listelenen .bin firmware dosyalarını USB belleğin kök dizinine, BOOTX64.EFI dosyasını ise EFI/BOOT/ klasörüne kopyalayın. Ara çıkarma dosyalarını kopyalamanız gerekmez.

RTX 40 serisi için kök dizindeki dosyalar: booter_load_ad102.bin, gsp_boot_ad102.bin, gsp_boot_desc_ad102.bin, fwimage_ad102.bin, fwsignature_ad102.bin, scrubber_ad10x.bin ve kilit açma yükü v67-ad102-four-plm.bin. v67-*.bin dosyası olmadan araç kilidi açmaz ama GPU’yu yine de sıfırlayabilir. USB’de zaten bir EFI/BOOT/BOOTX64.EFI varsa değiştirmeden önce yedekleyin. Dosyaları sistemin EFI bölümüne kopyalamayın ve kalıcı önyükleme sırasını değiştirmeyin; proje, dahili bir bölümden otomatik açılışı genel kullanıcılara önermiyor.

  1. USB’den Açın ve Onaylayın: Bilgisayarı yeniden başlatın ve anakartın tek seferlik önyükleme menüsünden (ör. ASUS anakartlarda F8) USB belleği seçin. Sürüm ekranında Space veya Enter tuşuna basın; başka bir tuş ya da 30 saniye boyunca işlem yapılmaması işlemi iptal eder ve normal önyükleyiciye döner. İşlem sırasında ekranın geçici olarak kararması ya da donması normaldir. Ardından araç otomatik olarak Windows Önyükleme Yöneticisi’ne (yoksa Linux shim/grub/systemd-boot’a) devreder. İşlem kaydı USB’nin kökündeki loader.log dosyasına yazılır.
  2. Windows İçinde Doğrulayın: Paketteki ssdiag-x86_64-windows.exe aracını yönetici olarak çalıştırın:

ssdiag-x86_64-windows.exe
ssdiag-x86_64-windows.exe –reapply

Varsayılan mod yalnızca okuma yapar. SS0 = 0x88888888 ve SS1’in alt hanesi 0x8 ise kilit etkindir; performansı kilit açmadan önceki ölçümle aynı iş yüküyle karşılaştırın. –reapply seçeneği, kapı (gate) hâlâ açıkken sıfırlanmış hız seçicilerini yeniden yazar; Turing kartlarda araç yalnızca okuma yapar. Linux’ta aynı kontrol, kaynak koddan sudo python3 tools/diag-unlock.py ile yapılır.

  1. Her Soğuk Açılışta Tekrarlayın: Kilit geçicidir. Bilgisayar kapatıldığında, S3 uykusunda ve hazırda bekletmede sıfırlanır; Modern Standby’da da çoğu zaman sıfırlanır. Uyandıktan sonra kapı açık kalmışsa ssdiag-x86_64-windows.exe –reapply yeterlidir, değilse USB’den açma işlemini tekrarlayın.

Sorun Giderme: STOP, hata ya da takılı kalan siyah ekranda aynı oturumda tekrar denemeyin; firmware hâlâ çalışıyor olabilir. Bilgisayarı tamamen kapatın (dizüstünde üreticinin EC deşarj yöntemini uygulayın), USB belleği çıkarın ve normal şekilde açın. Aygıt Yöneticisi’ni ve olay günlüklerini kontrol edin, loader.log dosyasını saklayın. Sürücü hâlâ sorunluysa bir kez daha tamamen kapatıp açın; gerekirse sürücüyü DDU ile kaldırıp yeniden kurun. İşlem başarılı görünüp Windows’ta “Code 12” hatası çıkıyorsa (özellikle X99 platformlarında) BIOS’ta CSM’i kapatın.

6. Sıkça Sorulan Sorular ve Dikkat Edilmesi Gerekenler

Mobil sürümden çık