3 puan yazan GN⁺ 2023-11-13 | 1 yorum | WhatsApp'ta paylaş
  • Yapay zeka geliştirme artık yalnızca CPU tarzı sıralı yürütme ile yeterli değil; eğitim ve çıkarım performansını doğru şekilde ele almak için GPU’nun büyük ölçekli paralel işleme modelini anlamak gerekiyor
  • CPU, tüketici sınıfı sistemlerde genelde 2~16 çekirdek ile tek iş parçacıklı ve koşullu dallanmalı işlerde güçlüdür; GPU ise binlerce küçük çekirdeğiyle matris işlemleri, görüntü işleme ve derin öğrenme için avantaj sağlar
  • AWS, P3/P4, P5/Inf1, G4 ve Amazon SageMaker gibi GPU çalışma ortamları sunar; p3.2xlarge saat başına $3.06, p5.48xlarge $98.32, g4dn.xlarge ise yaklaşık $0.526 düzeyindedir
  • NVIDIA CUDA, geliştiricilerin GPU bellek ayırma, veri kopyalama, kernel çalıştırma ve derlemeye kadar uzanan paralel yürütme akışını doğrudan yönetebilmesini sağlar
  • Dizi toplama, Mandelbrot üretimi ve kedi-köpek sınıflandırma CNN örnekleri, sıralı döngülerin GPU iş parçacıklarına nasıl bölündüğünü gösterir; Mandelbrot örneğinde süre CPU’da 4.07 saniyeden GPU’da 0.0046 saniyeye düşer

Neden yalnızca CPU bilgisi yetmiyor

  • Birçok geliştirici öğrenme ve problem çözmeyi CPU merkezli yaklaşımla edindi, ancak CPU temelde sıralı mimariye dayanarak çalışır
  • Geleneksel CPU, komutları doğrusal biçimde yürütür ve az sayıdaki güçlü çekirdeği tek iş parçacıklı performans için optimize eder
  • Birden fazla işin aynı anda yürütülmesi gereken durumlarda, sıralı yürütme yaklaşımı nedeniyle işleri tek tek ele almanın maliyeti büyür
  • Çoklu iş parçacığıyla performans artırılabilir, ancak CPU’nun temel tasarım felsefesi hâlâ sıralı yürütmeye daha yakındır

Yapay zeka modelleri ve paralel işleme

  • Transformer gibi modern yapay zeka mimarileri, eğitim performansını artırmak için paralel işleme kullanır
  • RNN sıralı çalışırken, GPT gibi Transformer’lar birçok kelimeyi aynı anda işleyebilir; bu da eğitim verimliliğini ve model kapasitesini artırır
  • Paralel eğitim daha büyük modelleri mümkün kılar ve daha büyük modeller daha iyi çıktılar üretebilecek bir temel sağlar
  • Paralellik yalnızca doğal dil işleme için değil, görüntü tanıma için de geçerlidir
    • AlexNet, görüntünün farklı bölümlerini aynı anda işleyerek desenleri tanımlamaya örnektir
  • CPU, tek iş parçacıklı performans merkezli tasarımı nedeniyle karmaşık yapay zeka modellerinin gerektirdiği yoğun paralel hesaplamayı verimli biçimde dağıtıp çalıştırmakta zorlanır

GPU darboğazları nasıl azaltır

  • GPU, CPU’daki büyük ve güçlü çekirdekler yerine çok sayıda küçük ve özelleşmiş çekirdek kullanan bir yapıyla tasarlanmıştır
  • Grafik işleme ve karmaşık matematiksel hesaplamalar gibi aynı tür işlemlerin büyük ölçekte tekrarlandığı iş yüklerinde GPU’nun paralelliği belirginleşir
  • TensorFlow gibi derin öğrenme çerçeveleri, model eğitimi ve çıkarımı hızlandırmak için GPU performansından yararlanacak şekilde optimize edilmiştir
  • Sinir ağı eğitimi çok sayıda matris işlemi içerir ve GPU, geniş çekirdek sayısıyla bu işlemleri paralelleştirmede güçlüdür

CPU ve GPU’nun rol farkı

  • CPU

    • CPU, sıralı işleme odaklı tasarlanmıştır; tek bir komut akışını doğrusal olarak yürüten işlerde güçlüdür
    • Genel amaçlı hesaplama, sistem işleri ve koşullu dallanma içeren karmaşık algoritmaları işlemek için uygundur
    • Tüketici sınıfı CPU’lar genelde 2~16 çekirdek aralığında, görece az sayıda çekirdeğe sahiptir
    • Her çekirdek kendi komut kümesini bağımsız biçimde işleyebilir
  • GPU

    • GPU, paralel mimari ile tasarlanmıştır ve aynı anda çok sayıda alt işi yürütmede verimlidir
    • Grafik işleme, karmaşık matematiksel hesaplamalar ve paralelleştirilebilen algoritmaların yürütülmesinde avantajlıdır
    • İşleri daha küçük paralel birimlere bölerek birden çok işlemi aynı anda yürütür
    • GPU çekirdekleri çoğu zaman binlerce adettir ve streaming multiprocessors (SMs) veya benzeri yapılardan oluşur
    • Görüntü-video işleme, derin öğrenme ve bilimsel simülasyonlar gibi aynı anda çok veriyle çalışan işler için uygundur

AWS üzerinde seçilebilecek GPU ortamları

  • AWS, makine öğrenmesi gibi işlerde kullanılabilecek çeşitli GPU instance seçenekleri sunar
  • Genel amaçlı GPU instance’ları

    • P3 ve P4, farklı iş yüklerine uygun genel amaçlı GPU instance’larıdır
    • Makine öğrenmesi eğitimi ve çıkarımı, görüntü işleme ve video kodlama için kullanılabilir
    • p3.2xlarge saat başına $3.06’dır ve 16GB GPU belleğe sahip 1 adet NVIDIA Tesla V100 GPU sunar
  • Çıkarım için optimize edilmiş instance’lar

    • Çıkarım, eğitilmiş bir yapay zeka modeline gerçek zamanlı veri vererek tahmin üretme veya bir görevi çözme sürecidir
    • P5 ve Inf1, düşük gecikme ve maliyet verimliliğinin önemli olduğu makine öğrenmesi çıkarımı için uyarlanmıştır
    • p5.48xlarge saat başına $98.32’dır ve her biri 80GB belleğe sahip 8 adet NVIDIA H100 GPU, toplamda 640GB video belleği sunar
  • Grafik için optimize edilmiş instance’lar

    • G4 instances, grafik yoğun işleri işlemek üzere tasarlanmıştır
    • Video oyunu geliştiricileri G4 instance’larını kullanarak oyunlar için 3D grafik işleyebilir
    • g4dn.xlarge saat başına $0.526’dır ve 16GB belleğe sahip 1 adet NVIDIA T4 GPU kullanır
  • Yönetilen makine öğrenmesi hizmeti

    • Amazon SageMaker, makine öğrenmesi için yönetilen bir hizmettir ve P3, P4, P5 gibi GPU tabanlı instance’lara erişim sağlar
    • SageMaker, altyapıyı doğrudan yönetmeden makine öğrenmesine başlamak isteyen kurumlar için uygundur
    • Ayrı olarak Amazon SageMaker fiyatlandırma belgesi sunulmaktadır

NVIDIA CUDA’nın temel kullanımı

  • CUDA, NVIDIA tarafından geliştirilen bir paralel hesaplama platformu ve programlama modelidir; GPU hızlandırıcıları kullanarak uygulamaların daha hızlı çalışmasını sağlar
  • Örnekler, GPU bellek ayırma, veri kopyalama, kernel çalıştırma ve sonucun geri alınmasından oluşan CUDA geliştirme akışını gösterir
  • Kurulum akışı

    • CUDA üzerinden base installer ve driver installer indirilir
    • Ana dizindeki .bashrc dosyasına şu ortam değişkenleri eklenir
      • export PATH="/usr/local/cuda-12.3/bin:$PATH"
      • export LD_LIBRARY_PATH="/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH"
    • Aşağıdaki komutlar çalıştırılır
      • sudo apt-get install cuda-toolkit
      • sudo apt-get install nvidia-gds
    • Değişikliklerin uygulanması için sistem yeniden başlatılır
  • Yararlı doğrulama komutları

    • lspci | grep VGA: sistemdeki GPU’ları tanımlar ve listeler
    • nvidia-smi: NVIDIA GPU’ların kullanım oranı, sıcaklığı, bellek kullanımı gibi ayrıntılı bilgileri verir
    • sudo lshw -C display: ekran kartı gibi görüntü denetleyicisi bilgilerini verir
    • inxi -G: GPU ve ekran dahil grafik alt sistemine dair bilgileri gösterir
    • sudo hwinfo --gfxcard: sistemdeki ekran kartı hakkında ayrıntılı bilgi almak için kullanılır

CUDA ile dizi toplamayı paralelleştirme

  • Dizi toplama, GPU paralelleştirmesini anlatmak için uygun bir problemdir
  • Örnek diziler A = [1,2,3,4,5,6], B = [7,8,9,10,11,12] ve sonuç C = [8,10,12,14,16,18] şeklindedir
  • CPU yaklaşımı, dizi elemanlarını tek tek dolaşarak toplama yapar
  • Veri miktarı arttıkça sıralı yaklaşımın süresi uzar; GPU ise 1+7, 2+8, 3+9 gibi işlemleri aynı anda yapabilir
  • CUDA örneği .cu kernel dosyası kullanır
    • __global__, GPU üzerinde çağrılan bir kernel fonksiyonunu ifade eder
    • vectorAdd, a, b, c olmak üzere üç tamsayı işaretçisi alır ve vektör toplamayı gerçekleştirir
    • threadIdx.x, mevcut iş parçacığının indeksini alır
    • Her iş parçacığı, kendisine karşılık gelen elemanın toplamını c[i] içine yazar
  • main fonksiyonu GPU bellek ayırma, veri kopyalama, kernel çalıştırma ve sonuç kopyalama sırasıyla ilerler
    • cudaMalloc ile cudaA, cudaB, cudaC belleği GPU üzerinde ayrılır
    • cudaMemcpy ile a ve b, host’tan GPU’ya kopyalanır
    • vectorAdd <<<1, sizeof(a) / sizeof(a[0])>>> ile kernel çalıştırılır
    • Sonuç vektörü cudaC, GPU’dan host’a geri kopyalanır
  • Derleme ve çalıştırma için nvcc komutu kullanılır
  • Tam kod sunulmaktadır

Python’da görüntü üretiminde GPU kullanımı

  • Mandelbrot kümesi üretimi, belirli bir denklemde sayıların davranışına göre karmaşık görsel desenler oluşturan ve yoğun kaynak gerektiren bir işlemdir
  • CPU tabanlı Python örneği her pikseli dolaşarak Mandelbrot değerini hesaplar ve 1024×1536 boyutlu bir görüntüyü üretmek 4.07 saniye sürer
  • GPU hızlandırmalı sürüm Numba library kullanır
    • @jit dekoratörü, Python kodunu makine koduna dönüştüren Just-In-Time derleme yapar
    • cuda.jit ile mandel_gpu oluşturulur ve device=True verilerek GPU üzerinde çalışması sağlanır
    • mandel_kernel, CUDA GPU üzerinde çalışır ve Mandelbrot üretim işini GPU iş parçacıklarına dağıtır
  • create_fractal_gpu, GPU bellek ayırma, iş parçacığı-blok ayarı, GPU kernel çalıştırma, senkronizasyon ve sonuç kopyalama işlemlerini yapar
    • threadsperblock = (16, 16) kullanılır
    • cuda.synchronize() ile GPU işinin tamamlanması beklenir
    • d_image.copy_to_host(image) ile sonuç CPU tarafına kopyalanır
  • GPU çalışma süresi 0.0046 saniye’dir; bu da CPU tabanlı koda göre çok daha hızlıdır
  • Tam kod sunulmaktadır

GPU ile kedi-köpek sınıflandırma sinir ağı eğitimi

  • GPU’nun yapay zekada nasıl kullanıldığını göstermek için kedi ve köpekleri ayıran bir sinir ağı örneği kullanılır
  • Ön hazırlık olarak CUDA ve TensorFlow gerekir
    • TensorFlow, pip install tensorflow[and-cuda] ile kurulabilir
    • Veri kümesi olarak Kaggle Dogs vs. Cats kullanılır
    • İndirdikten sonra kedi ve köpek görselleri eğitim klasöründe farklı alt klasörlere ayrılır
  • Model, evrişimsel sinir ağı (CNN) kullanır
    • pandas ve numpy veri işleme için kullanılır
    • Sequential, sinir ağı katmanlarını doğrusal biçimde dizmek için kullanılır
    • Convolution2D, MaxPooling2D, Dense, Flatten CNN’i oluşturan katmanlardır
    • ImageDataGenerator, eğitim sırasında gerçek zamanlı veri artırma için kullanılır
  • Eğitim verisi ImageDataGenerator ile yüklenir
    • Eğitim verisine rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True uygulanır
    • Girdi görüntüleri (64, 64) boyutunda, batch size 32 ve ikili sınıflandırma modunda ayarlanır
  • CNN yapısı evrişim, max pooling, flatten, Dense katmanları ve sigmoid çıkıştan oluşur
  • Model, adam optimizer’ı, binary_crossentropy loss’u ve accuracy metriği ile derlenir
  • Eğitim epochs=25, validation_steps=2000 ile yürütülür ve classifier.save('trained_model.h5') ile .h5 dosyasına kaydedilir
  • Çıkarım kodu trained_model.h5 dosyasını yükler, görüntüyü (64, 64) boyutuna dönüştürür ve tahmin değeri 0.5 veya üzerindeyse dog, aksi halde cat çıktısı verir
  • Tam kod sunulmaktadır

GPU kullanımının kapsamı

  • Yapay zeka çağında GPU yeteneklerini görmezden gelmek zorlaştı ve geliştiricilerin GPU kapasitesini daha iyi anlaması gerekiyor
  • Sıralı algoritmalardan paralelleştirilmiş algoritmalara geçişle birlikte GPU, karmaşık hesaplamaları hızlandıran bir araca dönüşüyor
  • GPU’nun paralel işleme yeteneği, özellikle yapay zeka ve makine öğrenmesi işlerinde büyük veri kümeleri ile karmaşık sinir ağı mimarilerini ele almada avantaj sağlar
  • GPU, geleneksel makine öğrenmesi alanının ötesinde bilimsel araştırma, simülasyon ve veri yoğun işlerde de kullanılır
  • Paralel işleme yeteneği; ilaç keşfi, iklim modelleme ve finansal simülasyon gibi farklı alanlardaki problemlerin çözümünde değerlendirilir

1 yorum

 
GN⁺ 2023-11-13
Hacker News görüşleri
  • Bu yazıdaki kod hatalı. CUDA çekirdeği hiç çağrılmıyor: https://github.com/RijulTP/GPUToolkit/blob/f17fec12e008d0d37...
    Mandelbrot kümesini JIT derlenmiş kodla “hesaplama” süresinin %90'ı, gerçek hesaplama yerine fonksiyon derlemeye gidiyor
    CUDA'yı düzgün öğrenmek istiyorsanız matris çarpımı uygulamak iyi bir alıştırmadır; bakmaya değer eğitimler de şunlardır: https://cnugteren.github.io/tutorial/pages/page1.html ve https://siboehm.com/articles/22/CUDA-MMM

    • CUDA'da paralel matematik kodunun “Hello World”ü diye anılan SAXPY de var. SAXPY, “Single-Precision A·X Plus Y” kısaltmasıdır; standart bir BLAS fonksiyonudur ve skaler çarpım ile vektör toplamayı birleştiren çok basit bir işlemdir
      32 bit kayan noktalı X ve Y vektörleri ile A skalerini alır, her X[i] değerini A ile çarpıp sonra Y[i]'ye ekler: https://developer.nvidia.com/blog/six-ways-saxpy/
    • Eleştiri aldıktan sonra kodu düzeltip blogu da güncellemiş
  • “Her geliştiricinin bilmesi gerekir” deniyor ama aslında bu, daha çok AI'da GPU'nun nasıl kullanıldığı üzerine bir yazı. Geliştiricilerin çoğu AI geliştiricisi değil; AI ile doğrudan etkileşime de girmiyorlar, GPU'yu doğrudan da kullanmıyorlar
    Ayrıca GPU'ların var olmasının temel nedeni olan 3D grafikler neredeyse hiç ele alınmıyor

    • Yakın alanların temellerini bilmek faydalıdır. Özellikle makine öğrenmesi gibi geniş uygulama alanı olan konularda daha da öyledir; gelecek ay üstleneceğiniz projede makine öğrenmesi kullanmanız gerekebilir ve o kısmı yürüten bir ekip arkadaşıyla iş birliği yaparken de avantaj sağlar
      Temel bilgiye sahip olursanız yöneticilerin pazarladığı “AI” söylemlerini de daha iyi anlarsınız
      “Yakın alanlara gerek yok” tavrı okulda sık gördüğüm bir şeydi. Sistem yönetimi tarafında arkadaşlarım programlama bilmeye gerek olmadığını söylerdi ama script yazmak gerekiyordu; yazılım geliştirme okulunda ise ağ bilmeye gerek olmadığı söylenirdi ama birkaç yıl sonra iş ilanlarında DevOps her yerde görünmeye başladı
      Yazı kabaca 1500 kelimeyse, ders çalışır gibi okusanız yaklaşık 12 dakika sürer; kod örneklerini çalıştırarak 2 saat harcamak bile büyük bir yatırım sayılmaz. Tabii bunun için o yazının iyi bir giriş metni olması gerekir
    • Geleneksel bir gömülü sistemler şirketinden startup'a geçtiğimde, bir iş arkadaşımın curl ile JSON isteği göndermeyi bilmemesiyle dostça dalga geçtiğimi hatırlıyorum. Hâlâ gömülü sistem geliştiricisiyim ama sonrasında backend, frontend ve altyapı hakkında çok şey öğrendim; önümüzdeki birkaç yılda sektör genelinde AI konusunda benzer bir durumun yaşanması da oldukça olası görünüyor
    • Mandelbrot kümesi render etme örneğinde bile yalnızca 10 kat hızlanma çıkıyor; oysa bu, neredeyse tamamen kayan nokta işlem miktarına bağlı hesaplamaların tipik bir örneği. Bana kalırsa çok zayıf bir yazı
    • Çok sayıda hatalı varsayım var. Geliştiricilerin çoğunun AI geliştiricisi olmadığına katılıyorum; özgün yazının yazarı da genel geliştirici kitlesinden biraz kopuk ya da kendi çevresini genelleştiriyor gibi görünüyor
    • “Her geliştiricinin bilmesi gerekir” diyen yazılar ne zaman görsem, bu iddia genelde yanlış çıkıyor. Gerçekten herkesin bilmesi gereken bilgileri içeren yazılar olabilir ama karşıma çıkanların çoğu clickbait oluyor
  • AI'da Python'ın baskın olmasının nedeni, Python-C ilişkisi ile CPU-GPU ilişkisi arasında bir benzerlik olması olabilir
    GPU'nun performansı çok iyi ama doğrudan onun için kod yazmak zor olduğu için insanlar GPU'yu PyTorch gibi yüksek seviyeli API çağrıları üzerinden kullanıyor
    C de yüksek performanslı ama kodlaması zor; bu yüzden Python, C'nin üzerinde bir soyutlama katmanı olarak kullanılıyor
    İnsanların GPU'ları bu kadar derinlemesine anlaması gerekip gerekmediği net değil. Özellikle AI eğitimi ya da operasyonlarının derinine inmeyenler için bu daha da geçerli; Moore yasasının sona ermesi ve hız artışının ana yolunun çoklu iş parçacıklılığı olması durumunda, paralel programlama paradigmasına uygun yeni dillerin ortaya çıkması muhtemel. Mojo da bunun başlangıç noktası gibi görünüyor

    • Hangi donanımda çalışırsa çalışsın performansı görünmez biçimde en üst düzeye çıkaran yeni bir dil için bir alan olup olmadığını merak etmiştim
      Basit yinelemeli hesaplamalardan başlayıp, arka planda tüm komutların akıllıca bütün CPU çekirdeklerini paralel kullanması ve mümkün olan işleri GPU'ya aktarması gibi bir tasarım
      Böyle bir deneme daha önce yapıldı mı, hatta ilkesel olarak mümkün mü diye merak ediyorum
    • Moore yasasının bittiğini söylemek için henüz erken, çoklu iş parçacıklılığı da çözüm değil. Ama ilk cümle doğru
    • GPU programlama o kadar da zor değil. CUDA, birçok işte oldukça sezgisel; 100 satırdan kısa kodla işleme hızını 100 kat artırabileceğiniz pek çok durum var
    • Daha modern bir dil kullanırsanız Python benzeri ifade gücünü koruyup yine de C düzeyinde performansı oldukça kolay elde edebilirsiniz. Hatta bana göre C, soyutlamasının yetersiz olması nedeniyle yavaş ama basit kodu daha çekici gösteriyor
    • C bir yaşam biçimidir. Neredeyse yalnızca C kullanan insanlar, Python'daki “anlamlı boşluk” kavramını kabullenmekte zorlanır
  • “CPU birden fazla işle karşılaşınca kaynaklarını her işi tek tek işleyecek şekilde dağıtır” açıklaması fazla basit. CPU'nun hâlâ o kadar basit olmasını isterdim bile
    Yazının programlama modeline odaklanması anlaşılır ama performans açısından “CPU komutları sıralı yürütür” demek temelden yanlış. Pipeline'lar komutları paralel yürütür, SIMD vardır ve birden fazla çekirdek aynı problem üzerinde birlikte çalışabilir

    • Bu yazı odağını yanlış yere koymuş gibi. AVX-512 bulunan CPU'larda da büyük ölçüde veri paralelliği vardır ve CPU da aynı anda çok sayıda komut çalıştırabilir
      Asıl büyük fark, CPU'nun tek bir iş parçacığını verimli çalıştırmak için kontrol akışını işlemeye çok daha fazla silikon ve güç ayırması; GPU'nun ise bu kaynakları daha fazla hesaplama birimine ayırıp çok sayıda iş parçacığını çalıştırarak kontrol akışı ve bellek gecikmesini gizlemesidir
    • CPU da birden fazla SIMD komutunu aynı anda yürütür
  • CPU’nun seri kod için, GPU’nun ise paralel kod için iyi olduğu sözü bir ölçüde doğru, ancak oldukça kaba bir yaklaşık. Birkaç yüz watt düzeyinde benzer bir güç bütçesi varsayılırsa, CPU’da hiper iş parçacıkları da dahil olmak üzere bağımsız işleri tek tek çalıştıran yaklaşık 100 “çekirdek” bulunur ve dallanma tahmini ile boru hattı sayesinde bellek gecikmesi gizlenir
    GPU’da ise yaklaşık 100 “hesaplama birimi” vardır; her birim yaklaşık 80 bağımsız işi dönüşümlü yürütür ve diğer işin bir sonraki komutunu çalıştırarak bellek gecikmesini gizler
    Terminoloji oldukça kafa karıştırıcıdır; CPU’da 256 bit genişliğinde vektör birimleri, GPU’da ise 2048 bit genişliğinde vektör birimleri bulunma olasılığı yüksektir, ancak biraz uzaktan bakınca iki mimari epey benzer görünür

    • GPU’ların bellek bant genişliği CPU’lardan yaklaşık 10 kat daha yüksektir ve LLM’lerde bu fark önemli hale gelir. En iyi şekilde batch işlenirse, bir çıktı token’ı üretmek için fiilen tüm belleği okumak gerekir; çünkü bu bellek ağırlıklar veya KV cache için kullanılır
    • Birkaç düşük gecikmeli çekirdekle çok sayıda yüksek throughput çekirdeğini birleştirmeye yönelik girişimlerin pek olmaması hep tuhaf gelmiştir. Bir Intel P çekirdeğini birkaç E çekirdeğiyle çevreleyip, o E çekirdeklerine bol miktarda iGPU çekirdeği veya AVX-512 birimi eklemek yeterli olurdu
      Adı da Xeon Chi olabilirdi
  • Çoğu programlama dili CPU gibi sıralı işlemeye uygun tasarlanmışken, Erlang/Elixir’nin GPU gibi paralelliğe uygun tasarlandığı düşünülürse Nx / Axon’un yükselip yükselmeyeceğini merak ediyorum: https://github.com/elixir-nx/

    • Erlang, yoğun hesaplamalı paralel işleme için değil, eşzamanlılığı yüksek dağıtık sistemler için tasarlanmıştır
    • Elixir ve Nx’in yüksek performanslı bilgi işlem kümelerindeki hesaplama yoğun işlerde ne kadar iyi çalışacağını gerçekten merak ediyorum. Yapısal olarak bu alanda sık kullanılan MPI’dan çok da farklı değil ve numpy ile bilimsel Python ekosistemi gibi çok daha erişilebilir olabilir
    • Elixir ile Nx/Axon kombinasyonunun, CPU ve GPU’nun bir arada bulunduğu NVIDIA Grace Hopper gibi mimarilere ne kadar uygun olduğunu inceliyorum
    • Bunun GPU’da çalışıp çalışmadığını merak ediyorum. Gelecekte ikisine de ihtiyaç olacağını düşünüyorum. Sıralı programlama, hâlâ muazzam paralel yürütme gerektirmeyen çoğu iş için en iyi soyutlamadır
  • Bir satın alma rehberine ihtiyaç var. En az ne kadar harcamak gerektiğini ve bütçe aralıklarına göre en iyi seçimin ne olduğunu bilmek istiyorum. Sorun şu ki bu bilgi zaman zaman değişiyor ve sürekli güncel tutulan bir kaynak olup olmadığını bilmiyorum

  • Yine “her geliştiricinin bilmesi gereken” türü clickbait yazılara mı döndük

    • Bu biçimdeki yazılar muhtemelen ChatGPT tarafından ikame edilecek, ama iyi yazılmışlarsa gerçekten epey değerlidir
      Karmaşıklığı doğrudan ele almayı seviyorum ve bilgisayar donanımı gibi alanlarda hem nicel yöntemleri hem de nitel ayrıntıları belli ölçüde bildiğim için, bir alanın ayrıntılarını düzgünce anlatan yazıları memnuniyetle karşılıyorum
      Örneğin “What every programmer should know about memory” gerçekten her programcının bilmesi gereken bir şey mi, bu ayrı mesele; ama iyi bir programcının bilgisayarın gerçekte nasıl çalıştığına dair bir sezgisi olmalı. O yazıdan alınacak temel nokta olan yerellik, hızlı, takip etmesi kolay ve probleme iyi uyan iyi kodda sık sık doğal olarak ortaya çıkar
    • Öyle görünüyor. Bu yazının iddialarına temkinli yaklaşmak gerekir
  • Güzel bir yazı, ancak AWS P5 instance P4d ve P4de ile birlikte açıkça çıkarımdan çok eğitime uygundur. Çıkarım için daha uygun instance türleri, sırasıyla T4 ve A10G GPU kullanan G4dn ve G5’tir

    • Asıl yazı G5’i atlamış
  • GPU programlama konusunda neredeyse tamamen yeniyim ama bu yazıyı keyifle okudum. Basit bir “köpek mi kedi mi” sinir ağını bu kadar kolay eğitebilecek kadar ilerlenmiş olması şaşırtıcı