Tensor Core Nasıl Çalışır?
NVIDIA GPU mimarisi iki farklı hesaplama birimi barındırır: genel amaçlı CUDA çekirdekleri ve matris işlemlerine özel Tensor Core'lar. Klasik CUDA çekirdekleri döngü, koşul ve genel sayısal işlemler için optimize edilmişken Tensor Core'lar yalnızca matris çarpma-biriktirme (MMA: D = A × B + C) operasyonu yapmak üzere tasarlanmış sabit işlev birimleridir. Tensor Core'un temel prensibi her saat döngüsünde 4×4 matris boyutunda bir çarpma ve biriktirme gerçekleştirmesidir. Bir warp (32 iş parçacığı), wmma API aracılığıyla 16×16 matrislerini 4×4 bloklara bölerek işler. Bu paralel çalışma modu, FP32 CUDA çekirdeklerine kıyasla matris hesaplamalarında teorik tepe performansını yaklaşık bir ordem büyüklüğünde artırır. CUDA kodunda Tensor Core'lara erişmek için iki yol bulunur: wmma API ile doğrudan kernel yazımı ya da cuBLAS ve cuDNN gibi NVIDIA kütüphanelerinin kullanımı. Üst seviye çerçevelerde ise PyTorch'ta torch.cuda.amp.autocast() ve TensorFlow'da tf.keras.mixed_precision.set_global_policy('mixed_float16') yeterlidir.
Nesil Gelişimi: Volta'dan Hopper'a
1. Nesil — Volta (V100, 2017)
İlk Tensor Core nesli. FP16 girdi, FP32 biriktirme. V100'de 640 Tensor Core ile yaklaşık 125 TFLOPS FP16 tepe performansı. Turing'den önce yalnızca veri merkezi GPU'larında mevcuttu.
2. Nesil — Turing (T4, RTX 20XX, 2018)
INT8 ve INT4 desteği eklenerek çıkarım optimizasyonuna odaklanıldı. Tüketici RTX 20 serisi kartlara da entegre edildi; DLSS 1.0 bu nesil Tensor Core'larla çalışıyordu.
3. Nesil — Ampere (A100, RTX 30XX, 2020)
TF32, BF16 ve yapısal seyreklik (2:4 sparsity) desteği. A100'de 312 TFLOPS TF32 ve 624 TFLOPS BF16. Büyük dil modellerinin eğitiminde standart platform haline geldi.
4. Nesil — Hopper (H100, 2022)
FP8 desteği ve Transformer Engine entegrasyonu. A100'e kıyasla yaklaşık 6× daha yüksek verim. Transformer Engine, FP8 ölçekleme faktörlerini katman bazında dinamik ayarlar; LLM eğitiminde bugünün fiili standardı.
Karma Hassasiyet Hesaplama
Tensor Core'ların en kritik özelliği karma hassasiyet (mixed-precision) hesaplamayı desteklemeleridir. Bu yaklaşımda matris çarpmaları FP16 veya BF16 gibi daha kısa bit genişlikli formatlarda yapılır; biriktirme ve ağırlık güncellemeleri ise FP32 formatında tutulur. Bu tasarım iki temel avantaj sağlar: FP16 tensörler FP32'ye kıyasla iki kat daha az bellek kaplar ve bellek bant genişliği ihtiyacını yarıya indirir; Tensor Core'lar FP16 modunda standart CUDA çekirdeklerine göre sekiz kata kadar daha hızlı çalışır. Model doğruluğu büyük ölçüde korunurken eğitim süresi dramatik biçimde kısalır. BF16 ise FP16'ya göre daha geniş üs aralığına sahip olduğundan sayısal taşma riskini azaltır. Google Brain'in önerdiği bu format, A100 ve H100'de de desteklenmekte olup büyük dil modellerinin eğitiminde sıklıkla tercih edilmektedir. PyTorch Automatic Mixed Precision (AMP) uyumlu operasyonları otomatik olarak FP16/BF16'ya dönüştürür, kalanları FP32'de tutar.
Uygulama Alanları
- check_circle Büyük Dil Modeli Eğitimi: GPT-4, LLaMA ve Gemini gibi modellerin öğrenme döngüsündeki devasa matris çarpmaları Tensor Core'larda çalışır; aylarca sürebilecek eğitimler haftalara inmiştir.
- check_circle Gerçek Zamanlı Çıkarım: INT8 ve FP8 desteği sayesinde düşük gecikme süresiyle üretim ortamında model çıkarımı yapılır; NVIDIA TensorRT bu optimizasyonu otomatik uygular.
- check_circle Oyun Grafiği (DLSS): Deep Learning Super Sampling (DLSS) teknolojisi, Tensor Core'lar üzerinde çalışan bir derin öğrenme modeli ile düşük çözünürlüklü kareleri gerçek zamanlı süper örnekleme yaparak yüksek çözünürlüklü görüntüye dönüştürür.
- check_circle Bilimsel Hesaplama (HPC): Moleküler dinamik simülasyonları, iklim modelleme ve finansal risk hesaplamaları gibi yoğun matris işlemi gerektiren HPC uygulamaları da Tensor Core'lardan doğrudan yararlanır.
Sıkça Sorulan Sorular
- check_circle Tensor Core ile CUDA Core arasındaki fark nedir?: CUDA Core genel amaçlı bir hesaplama birimidir ve her türlü skaler ya da vektör işlemi yapabilir. Tensor Core ise yalnızca matris çarpma-biriktirme (MMA) için optimize edilmiş özel bir birimdir; bu işlemde CUDA Core'a göre yaklaşık 8 kat daha yüksek verim sağlar ancak sadece bu operasyon türünde kullanılabilir.
- check_circle Tensor Core'u nasıl etkinleştiririm?: PyTorch kullanıyorsanız torch.cuda.amp.autocast() context manager'ını uygulamanıza eklemek yeterlidir; uygun operasyonları otomatik FP16'ya dönüştürür ve Tensor Core'ları devreye alır. TensorFlow'da tf.keras.mixed_precision.set_global_policy('mixed_float16') API'si aynı işlevi görür.
- check_circle Hangi NVIDIA GPU'larda Tensor Core bulunur?: 2017'de çıkan Volta (V100) mimarisinden itibaren tüm veri merkezi GPU'larında (V100, T4, A100, H100) ve 2018'den itibaren tüketici RTX kartlarında (RTX 20, 30, 40 serisi) Tensor Core mevcuttur. Eski Pascal ve Maxwell mimarili kartlarda (GTX serisi) Tensor Core yoktur.
- check_circle FP8 nedir ve neden önemlidir?: FP8, 8 bitlik kayan nokta sayı formatıdır. H100 Hopper mimarisinde Transformer Engine ile tanıtılmıştır. FP16'ya kıyasla bellek kullanımını yarıya indirirken hesaplama hızını yaklaşık iki kat artırır. Transformer Engine, sayısal hassasiyet kaybını yönetmek için ölçekleme faktörlerini katman bazında dinamik olarak ayarlar.