tag paralel-hesaplama

Bu sayfada paralel-hesaplama etiketi ile işaretlenmiş 3 yapay zeka kavramını bulabilirsiniz.

CUDA (Compute Unified Device Architecture), NVIDIA tarafından 2006 yılında geliştirilen ve GPU'ları genel amaçlı hesaplama (GPGPU) için kullanmayı mümkün kılan paralel hesaplama platformu ve programlama modelidir. Grafik işleme birimlerinin binlerce çekirdeğini eş zamanlı olarak çalıştırma kapasitesini yapay zeka ve bilimsel hesaplamalar için açan bu teknoloji, modern derin öğrenmenin temel altyapısını oluşturur. CUDA, geleneksel CPU programlamadan temel bir paradigma değişikliği sunar. CPU'lar güçlü ancak sınırlı sayıda çekirdekle sıralı işlemler için optimize edilmişken; NVIDIA GPU'ları onlarca binden yüz binlerce CUDA çekirdeğiyle aynı anda binlerce işlem gerçekleştirebilir. Bu eşzamanlılık, matris çarpımı, konvolüsyon ve gradyan hesaplama gibi derin öğrenme operasyonlarını CPU'ya kıyasla 10–100 kat hızlandırır. CUDA'nın iş parçacığı hiyerarşisi üç katmandan oluşur: Temel birim olan iş parçacıkları (threads), bu iş parçacıklarını gruplandıran bloklar (blocks) ve blokları organize eden ızgaralar (grids). Bir CUDA çekirdeği (kernel) çağrıldığında GPU'da binlerce iş parçacığı eş zamanlı olarak çalışır; her blok içindeki iş parçacıkları paylaşılan belleği (shared memory) kullanarak birbirleriyle iletişim kurabilir. CUDA'nın bellek hiyerarşisi de performans açısından kritik rol oynar. Global bellek geniş kapasiteli (~80 GB/s bant genişliği) ancak yüksek gecikmeli; paylaşılan bellek ise blok başına ~100 KB kapasitesiyle SRAM hızında (~8 TB/s) çalışır. Verimli CUDA kodu, veri hareketini minimize ederek paylaşılan belleği akıllıca kullanır. Kaydediciler (registers), sabit bellek (constant memory) ve doku belleği (texture memory) ise erişim desenlerine göre optimize edilmiş ek bellek katmanları sunar. CUDA Toolkit, geliştiricilere nvcc derleyicisi, cuBLAS (lineer cebir), cuDNN (derin sinir ağları), cuFFT (Fourier dönüşümü) ve NCCL (çoklu GPU iletişimi) gibi optimize kütüphaneler sunar. Günümüzde FlashAttention ve TensorRT-LLM gibi araçlar CUDA kernellerini büyük dil modellerinin çıkarım aşaması için özelleştirerek LLM hızını 2–4 kat artırmaktadır. NVIDIA H100 gibi gelişmiş veri merkezi GPU'ları 16.896 CUDA çekirdeğine ek olarak FP16/BF16/INT8 matris işlemlerini 4–16 kat hızlandıran Tensor Core'lar içerir.

memory

CUDA (Compute Unified Device Architecture)

CUDA (Compute Unified Device Architecture), NVIDIA tarafından 2006 yılında geliştirilen ve GPU'ları genel amaçlı hesaplama (GPGPU) için kullanmayı mümkün kılan paralel hesaplama platformu ve programlama modelidir. Grafik işleme birimlerinin binlerce çekirdeğini eş zamanlı olarak çalıştırma kapasitesini yapay zeka ve bilimsel hesaplamalar için açan bu teknoloji, modern derin öğrenmenin temel altyapısını oluşturur. CUDA, geleneksel CPU programlamadan temel bir paradigma değişikliği sunar. CPU'lar güçlü ancak sınırlı sayıda çekirdekle sıralı işlemler için optimize edilmişken; NVIDIA GPU'ları onlarca binden yüz binlerce CUDA çekirdeğiyle aynı anda binlerce işlem gerçekleştirebilir. Bu eşzamanlılık, matris çarpımı, konvolüsyon ve gradyan hesaplama gibi derin öğrenme operasyonlarını CPU'ya kıyasla 10–100 kat hızlandırır. CUDA'nın iş parçacığı hiyerarşisi üç katmandan oluşur: Temel birim olan iş parçacıkları (threads), bu iş parçacıklarını gruplandıran bloklar (blocks) ve blokları organize eden ızgaralar (grids). Bir CUDA çekirdeği (kernel) çağrıldığında GPU'da binlerce iş parçacığı eş zamanlı olarak çalışır; her blok içindeki iş parçacıkları paylaşılan belleği (shared memory) kullanarak birbirleriyle iletişim kurabilir. CUDA'nın bellek hiyerarşisi de performans açısından kritik rol oynar. Global bellek geniş kapasiteli (~80 GB/s bant genişliği) ancak yüksek gecikmeli; paylaşılan bellek ise blok başına ~100 KB kapasitesiyle SRAM hızında (~8 TB/s) çalışır. Verimli CUDA kodu, veri hareketini minimize ederek paylaşılan belleği akıllıca kullanır. Kaydediciler (registers), sabit bellek (constant memory) ve doku belleği (texture memory) ise erişim desenlerine göre optimize edilmiş ek bellek katmanları sunar. CUDA Toolkit, geliştiricilere nvcc derleyicisi, cuBLAS (lineer cebir), cuDNN (derin sinir ağları), cuFFT (Fourier dönüşümü) ve NCCL (çoklu GPU iletişimi) gibi optimize kütüphaneler sunar. Günümüzde FlashAttention ve TensorRT-LLM gibi araçlar CUDA kernellerini büyük dil modellerinin çıkarım aşaması için özelleştirerek LLM hızını 2–4 kat artırmaktadır. NVIDIA H100 gibi gelişmiş veri merkezi GPU'ları 16.896 CUDA çekirdeğine ek olarak FP16/BF16/INT8 matris işlemlerini 4–16 kat hızlandıran Tensor Core'lar içerir.

arrow_forward
code_blocks

HPC (High Performance Computing) (Yüksek Başarımlı Hesaplama (HPC))

HPC (High Performance Computing), yani Yüksek Başarımlı Hesaplama; milyarlarca aritmetik işlemi saniyede eş zamanlı gerçekleştirebilen süper bilgisayar kümeleri, özel hızlandırıcı çipler ve yüksek hızlı ağlardan oluşan bilişim altyapılarına verilen genel addır. Geleneksel tek bir iş istasyonunun gücünü çok aşan bu sistemler; iklim modelleme, nükleer simülasyon, ilaç keşfi ve en önemlisi yapay zeka model eğitimi gibi hesaplama yoğun görevler için vazgeçilmezdir. Yapay zeka bağlamında HPC'nin önemi katlanarak artmaktadır: GPT-4 büyüklüğünde bir dil modeli, binlerce GPU'nun haftalarca paralel çalışmasını gerektirmektedir. NVIDIA'nın DGX SuperPOD kümeleri, Meta'nın RSC (Research SuperCluster) altyapısı ve Google'ın TPU Pod sistemleri, AI eğitiminde kullanılan önde gelen HPC örnekleridir. Temel HPC bileşenleri şunlardır: çok çekirdekli CPU ve GPU düğümleri, düşük gecikmeli ve yüksek bant genişliğine sahip ağ ara yüzleri (InfiniBand, NVLink), yüksek bant genişlikli depolama sistemleri (Lustre, GPFS) ve iş yükü zamanlayıcıları (SLURM, PBS Pro). Performans ölçümü FLOPS (floating-point operations per second) cinsinden yapılır; günümüzdeki öncü sistemler exaFLOPS (10^18 işlem/saniye) sınırına yaklaşmaktadır. Türkiye'de TÜBİTAK ULAKBİM bünyesindeki Truba kümesi, üniversiteler ve araştırma kurumları için HPC kapasitesi sunmaktadır. Bulut sağlayıcılar (AWS HPC, Azure HPC, Google Cloud HPC) ise on-premise yatırım gerektirmeksizin talep anında ölçeklenebilen esnek HPC ortamları sağlamaktadır.

arrow_forward
code_blocks

Sistolik Dizi (Sistolik Dizi)

Sistolik dizi (systolic array), işlem elemanlarının (PE — processing element) düzenli bir ızgara topolojisinde dizilerek verinin komşu elemanlar arasında ritmik (darbeli) bir akışla işlendiği özel amaçlı paralel donanım mimarisidir. 1978'de Carnegie Mellon Üniversitesi'nden H.T. Kung ve Charles Leiserson tarafından önerilen bu mimari, "veri kalbe kan gibi pompalanır" metaforundan adını alır. Sistolik dizinin temel çalışma prensibi şudur: her saat döngüsünde veriler ızgara boyunca bir adım kayar; her işlem elemanı kendisine gelen kısmi sonucu bir önceki eleman verisiyle birleştirerek bir sonraki elemana iletir. Bu yaklaşım, verinin tek bir merkezi belleğe gidip gelmesi yerine işlem elemanları arasında yerel olarak akmasını sağlar; böylece bellek bant genişliği darboğazı dramatik biçimde azaltılır. Ağırlık matrisi çiplere yüklendikten sonra sabit kalır; aktivasyonlar ise dizi üzerinden dalgalar halinde geçer. Bu veri yeniden kullanım stratejisi, derin öğrenmenin baskın hesaplaması olan matris-matris çarpımını son derece enerji verimli kılar. Yapay zeka donanımlarında sistolik dizi mimarisi kritik bir rol üstlenmektedir. Google'ın Tensör İşleme Birimi (TPU), 2016 yılında 256×256 sistolik dizi üzerine inşa edilmiş olarak duyurulmuş ve sinir ağı matris çarpımları için saniyede 92 teraops performans sunmuştur. TPU v4 ve v5 nesilleri bu prensibi daha büyük diziler ve yüksek bant genişlikli HBM bellekle birleştirerek ölçeklemiştir. Groq'un LPU (Language Processing Unit) mimarisi de benzer bir veri akış prensibini benimser; ağırlıkları çipe sabitleyip token akışını deterministik bir hattan geçirerek çıkarımda rekor düşük gecikme elde eder. GPU'larla karşılaştırıldığında sistolik diziler farklı bir hesaplama paradigmasını temsil eder. GPU genel amaçlı paralel hesaplama için binlerce çekirdek içerirken, sistolik dizi belirli bir hesaplama kalıbı (özellikle matris-matris çarpımı) için optimize edilmiş özel bir hattır. Bu nedenle çıkarım (inference) gibi sabit hesaplama kalıbı gerektiren görevlerde daha verimlidir. Yazılım esnekliği daha kısıtlı olsa da watt başına işlem kapasitesi açısından sistolik diziler öne çıkar ve yapay zeka hızlandırıcı tasarımında belirleyici bir mimari seçenek olmaya devam etmektedir.

arrow_forward