本站提供正體中文版。切換到正體中文本站提供简体中文版。切换到简体中文This site is available in English.View in Englishこのサイトには日本語版があります。日本語で表示이 사이트는 한국어로도 제공됩니다.한국어로 보기Diese Website ist auch auf Deutsch verfügbar.Auf Deutsch ansehenEste sitio web también está disponible en español.Ver en españolQuesto sito è disponibile anche in italiano.Visualizza in italianoCe site est également disponible en français.Afficher en françaisEste site também está disponível em português.Ver em portuguêsDeze website is ook beschikbaar in het Nederlands.In het Nederlands bekijkenЭтот сайт также доступен на русском языке.Смотреть на русскомयह वेबसाइट हिन्दी में भी उपलब्ध है।हिन्दी में देखेंهذا الموقع متاح أيضًا باللغة العربية.عرض بالعربيةSitus ini juga tersedia dalam bahasa Indonesia.Lihat dalam bahasa IndonesiaTa strona jest dostępna także po polsku.Wyświetl po polskuTrang web này cũng có phiên bản tiếng Việt.Xem bằng tiếng Việtاین وب‌سایت به فارسی هم در دسترس است.مشاهده به فارسی

PixInsight'ta GPU hızlandırma: CUDA kurulumu ve gerçek performans testleri

Araçlar ve donanım2021.12Erken dönem notları

Bu yazı 2021 ile 2024 yılları arasında tuttuğum notlardan derlenmiştir. Bazı araçlar, CUDA sürümleri ve kurulum adımları o zamandan bu yana güncellendi (özellikle sonraki PixInsight sürümleri artık tek tıkla yapılandırmayı destekliyor), bu yüzden okurken zaman bağlamını göz önünde bulundurun.

Yıldız çıkarma, yapay zekâ ile gürültü azaltma ve yapay zekâ ile keskinleştirme gibi sinir ağı tabanlı işlemler birbiri ardına PixInsight’ın iş akışına girdiğinden beri, “görüntü işleme bilgisayarıma bir ekran kartı ekleyeyim mi” sorusu çok somut bir mesele hâline geldi. Bu yazıda GPU hızlandırma konusunda son birkaç yılda yaptığım ölçümleri ve kurulum deneyimlerimi derliyorum: neden GPU gerekir, nasıl etkinleştirilir, ne kadar zaman kazandırır ve platformlar arasında ne gibi farklar vardır.

Neden GPU hızlandırma gerekir

PixInsight’ta şu anda GPU hızlandırmayı destekleyen işlemler, esas olarak sinir ağı hesaplamasına yaslananlardır: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT), BlurXTerminator (BXT). Bu işlemleri yalnızca CPU ile çalıştırırsanız, özellikle görüntü boyutu büyüdükçe bekleme süresi hayli kabarır.

Etkisi en çok hissedilen örneklerden biri toplu yıldız çıkarmadır: kuyruklu yıldızları yeni yöntemle işlerken, doğrusal durumdayken henüz entegrasyona girmemiş her kuyruklu yıldız karesinden yıldızları tek tek çıkarmanız gerekir. Örneğin 9 megapikselli iki yüz küsur karede, RTX 3060 Laptop sürümüyle hızlandırıldığında tek kare yalnızca 20 saniye kadar sürüyor; işi tamamen CPU’ya bırakırsanız toplam süre size hayatınızı sorgulatır.

GPU hızlandırmayı bir kez tattıktan sonra artık geri dönemezsiniz.

CUDA’yı ilk kez başarıyla etkinleştirdiğimde

2021’in sonunda, NVIDIA CUDA, cuDNN ve TensorFlow’un farklı sürümlerini saatlerce denedikten sonra, sonunda yıldız çıkarmada GPU’dan (NVIDIA RTX 3060) yardım almayı başardım:

  • StarXTerminator yalnızca yaklaşık 15 saniye;
  • StarNet++ 10 saniyenin altında;

sürede tek bir karenin yıldızlarını çıkarabiliyordu. Yalnızca CPU’ya kıyasla fark çok belirgindi.

RTX 3060 ile CUDA hızlandırmalı yıldız çıkarmanın ilk kez başarıyla etkinleştirildiği ekran

Nasıl etkinleştirilir: elle yapılandırmadan tek tıkla kuruluma

Eski yöntem: dosyaları elle yerleştirmek

Eskiden GPU hızlandırmayı etkinleştirmek için uygun sürümdeki CUDA, cuDNN, TensorFlow gibi dosyaları kendiniz indirip doğru konumlara yerleştirmeniz gerekiyordu. Bu sürecin eşiği düşük değildi ve yalnızca Windows kullanan, bilgisayarında PixInsight kurulu olan ve CUDA çekirdeği bulunan bir NVIDIA ekran kartına sahip kullanıcılar için geçerliydi. AMD ekran kartı (dahili grafik dâhil) kullananlar burayı doğrudan atlasın; Linux kullananlar ise karşılıklarını kendileri eşleştirmek zorunda. Yapılandırma tamamlandığında StarNet, StarNet++, SXT, NXT ve BXT’nin çalışma hızı büyük ölçüde artıyordu.

İşin can sıkıcı yanı, PixInsight’ı her güncellediğinizde bu dosyaları çoğu zaman yeniden yerleştirmek gerekmesi ve bunun kolayca unutulmasıydı.

Bugünkü yöntem: PI programının dahili tek tıkla yapılandırması

2024 yılının başına gelindiğinde durum epeyce düzeldi — artık PixInsight içinde bir güncelleme deposu (repository) eklemeniz yeterli; ek kurulum ve yapılandırmaya gerek kalmadan GPU hızlandırmayı doğrudan kullanabiliyorsunuz. Bu, XTerminator serisinin yazarı RC’nin (Russell Croman) PixInsight forumunda paylaştığı yöntem. O sırada bu özellik yalnızca Windows için geçerliydi, Linux sürümü hâlâ geliştiriliyordu; Mac işletim sistemine gelince, orada zaten baştan beri böyle bir yapılandırmaya gerek yok.

GPU’nun gerçekten hesap yaptığından nasıl emin olunur

Yıldız çıkarma ya da gürültü azaltma sırasında GPU’nun güç verip vermediğini öğrenmek isterseniz, Windows 10/11’de şunu yapın: Görev Yöneticisi’ni (Task Manager) açın, “GPU” sayfasına geçin ve “CUDA” alt sayfasını seçin. CUDA çekirdeklerinde bir kullanım oranı görünüyorsa GPU kullanılıyor demektir (örneğin SXT çalışırken CUDA çekirdeklerinin %87 kullanım oranına fırladığını görebilirsiniz); CUDA çekirdekleri hiç kıpırdamıyorsa GPU hiç devreye girmemiş demektir.

Görev Yöneticisi’nin CUDA alt sayfasında GPU kullanım oranını doğrulama GPU işleme akışının şeması CUDA’nın temel mimarisinin şeması

Performans ölçümleri

Üst seviye CPU vs orta-alt seviye GPU

Çoğu kişi şunu sorar: CPU yeterince güçlüyse ekran kartına gerek kalmaz mı? Tüketici sınıfı üst seviye bir CPU’yu (AMD R9-7950X) tüketici sınıfı orta-alt seviye bir ekran kartıyla (RTX 3060 12G) karşı karşıya getirdim; yazılım olarak PI 1.8.9-1 ve SXT 2.05 AI 11 lite kullandım:

  • Birinci görüntü, M1 (14.75MP): CPU ile yıldız çıkarma 1 dakika 45 saniye; GPU ile yıldız çıkarma 10,2 saniye.
  • İkinci görüntü, Webb NGC 3372 (123MP): CPU ile yıldız çıkarma 12 dakika 31 saniye; GPU ile yıldız çıkarma 1 dakika 05 saniye.

Buradan iki kural görülüyor: görüntü boyutu büyüdükçe GPU hızlandırmanın etkisi daha da belirginleşiyor; ayrıca üst seviye bir CPU’yu orta-alt seviye bir GPU ile karşı karşıya getirseniz bile, CPU aynı işi bitirmek için GPU’nun en az on katı süreye ihtiyaç duyuyor. CPU’nuz üst seviye bir model değilse aradaki fark yalnızca büyür. Bu yüzden, iş akışınızda yapay zekâ tabanlı işlemleri tekrar tekrar kullanmanız gerekiyorsa, en azından orta-alt seviye bir RTX 30 serisi ekran kartı edinmenizi şiddetle tavsiye ederim.

Üst seviye CPU ile orta-alt seviye GPU’nun yıldız çıkarma sürelerinin karşılaştırması

Yalnızca CUDA yazılımını güncelleyerek hız neredeyse ikiye katlanabiliyor

Şaşırtıcı bir keşif daha var. Bir yılı aşkın süre önce RTX 3060 Laptop dizüstü bilgisayarımda ilk kez CUDA hızlandırmayı etkinleştirmiştim; bir yıldan biraz fazla süre sonra, hiçbir hesaplama donanımını değiştirmeden (zaten dizüstü bilgisayarda değiştiremezsiniz) yalnızca ilgili yazılımları güncelleyip aynı görüntüyle yeniden ölçtüğümde, hızın neredeyse ikiye katlandığını gördüm.

120 megapiksellik bir görüntünün yıldızlarını çıkarmayı örnek alalım (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):

  • CUDA yapılandırması bir (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): yaklaşık 2,5 dakika.
  • CUDA yapılandırması iki (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): yalnızca 1 dakika 20 saniye.

Yani CUDA’yı erken dönemde kurup sonrasında hiç güncellemeyen arkadaşlar, CUDA yazılımını güncellemeyi unutmayın; yukarıdaki “yapılandırma iki” bileşimini örnek alabilirsiniz — performansın yarısını bedavaya toplamak gibi bir şey.

CUDA yazılımının güncellenmesinden önceki ve sonraki yıldız çıkarma sürelerinin karşılaştırması Farklı CUDA sürümlerinde işlem süresi farkı

Masaüstü sürümü vs dizüstü sürümü ekran kartı

Elimde tam da RTX 3060 12G ve RTX 3060 Laptop 6G olmak üzere iki kart vardı; aynı yazılım sürümü altında yıldız çıkarma süreleri:

  • RTX 3060 12G: 1 dakika 4 saniye;
  • RTX 3060 Laptop 6G: 1 dakika 20 saniye.

İkisinin yongası aynı; fark yalnızca bellek kapasitesinde ve masaüstü/dizüstü sürümlerinin güç tasarımında olduğu için yıldız çıkarma süreleri birbirine yakın. Fiyat/performans açısından bakılırsa, NVIDIA ekran kartlı bir oyuncu dizüstü bilgisayarı (o zamanki fiyatı yaklaşık 30.000 Tayvan doları) oldukça hesaplı bir seçenek sayılır.

Masaüstü ve dizüstü sürümü RTX 3060’ın yıldız çıkarma sürelerinin karşılaştırması

Eski bir madenci kartı bile fark yaratıyor

Evde yaklaşık dört yıl önce topladığım eski bir bilgisayar var (AMD R5-3600); asıl ekran kartı (R9-270) ömrünün sonuna yaklaşmıştı. İnternetten 3.000 Tayvan dolarını bulmayan bir madenci kartı — NVIDIA GTX 1660s — kaptım ve makineye takıp tam kare (full frame) bir görüntüde (yaklaşık 60 megapiksel) yıldız çıkarmayı test ettim:

  • Yalnızca CPU: 5 dakika 40 saniye;
  • GPU: 51 saniye;

yani süre farkı yaklaşık 6,6 kat. 1660s’in CUDA çekirdeği sayısı yalnızca bin dört yüz küsur olsa da, kazanılan süre yine de çok belirgin. Yıldız çıkarma, yapay zekâ ile gürültü azaltma ve yapay zekâ ile keskinleştirme gibi işlemleri tekrar tekrar çalıştırıyorsanız, GPU hızlandırma gerçekten değerli bir yatırımdır.

GTX 1660s ile GPU hızlandırmalı yıldız çıkarmanın süre karşılaştırması

Platformlar arasındaki farklar

Farklı işletim sistemleri ve donanımlar, yapay zekâ tabanlı işlemlerin GPU hızlandırmayı kullanıp kullanamayacağı konusunda aynı desteği vermiyor. Windows, Mac ve Linux olmak üzere üç platformun durumunu derledim (Mac test sonuçlarının bir kısmını bir meraklı dostumuz sağladı):

  • Windows + NVIDIA: yapılandırma bir kez tamamlandığında, CUDA çağrılarak SXT, BXT, NXT ve StarNet’in tamamı GPU ile hızlandırılabiliyor.
  • Apple Silicon işlemcili Mac (M1 / M1 Ultra gibi): BXT ve NXT hiçbir ayar gerektirmeden otomatik olarak Metal’i çağırıp GPU hızlandırma kullanıyor; SXT çalışırken yalnızca CPU kaynaklarının bir kısmını kullanıyor, GPU’ya hiç dokunmuyor; StarNet 2’ye gelince, GPU hızlandırmayı başarıyla kullanabilmek için resmî sitedeki deneysel sürüme (yalnızca komut satırı CLI kipinde) geçmek gerekiyor.
  • Intel işlemcili Mac: StarNet yalnızca CPU kullanabiliyor; SXT, BXT ve NXT ise GPU hızlandırma kullanabiliyor, üstelik AMD GPU ile bile çalışıyor.

Apple Silicon platformunda SXT gibi işlemler GPU hızlandırmayı yerel olarak desteklediğinden, performansları “Windows + NVIDIA CUDA hızlandırması” ile aşağı yukarı başa baş. PC üzerindeki Linux sistemine gelince, orada da aynı şekilde hesaplamayı hızlandırmak için GPU çağrılabiliyor.

Her platformda yapay zekâ tabanlı işlemlerin GPU hızlandırmayı kullanıp kullanamadığına dair test sonuçları

Özet

Son birkaç yılın değişimine dönüp bakınca: GPU hızlandırma, “CUDA sürümlerini birbirine uydurmak için saatler harcadığınız” çetin bir yapılandırmadan “PI içinde tek tıkla halledilen” bir işe dönüştü; hızlandırılabilen işlemlerin sayısı giderek artıyor, üstelik ucuza alınabilen eski bir madenci kartı bile kat kat hızlanma sağlayabiliyor. İş akışınız yapay zekâ tabanlı işlemlere ağır biçimde dayanıyorsa, orta-alt seviye bir NVIDIA ekran kartı (ya da Apple Silicon işlemcili bir Mac) neredeyse zorunlu.