DirectML Nedir?

2019 yılının Mayıs ayında sunulan Windows 10 güncellemesiyle bir arada DirectX 12 kütüphanesinde yerini alan DirectML, öteki DirectX geliştirmeleri ve güncellemelerinden daha farklı bir alana yönelik yayınlanıyor: Makine tahsili.
DirectML, algoritma ve programlama paradigmalarını tanımlamak için makine tahsili alanında kullanılmak üzere Microsoft tarafından geliştirildi. Bu API, GPU’da tek tip bir yapı sayesinde çıkarım modellerinin (inference models) işlenmesini hızlandırmaya çalışıyor. DirectML’de DXR üzere donanımın bunu nasıl yapması gerektiği anlatılmıyor. Burada programcıya düşen sırf kodlarını yazmak ve şoförlerin uygun formda işlemesine müsaade vermek.
Evvelden makine tahsili denilince çok sayıda işlemciye sahip bilgisayarlar akla gelirdi. Ama vakit içinde GPU’ların belirli başlı süreçlerde değerli ölçüde güçlü olduğu ortaya çıktı ve merkezi işlemcilerin pabucu dama atılmaya başlandı. Bilhassa bunda 2017 yılında NVIDIA tarafından tanıtılan Volta mimarili GPU’lar ve bu GPU’larla bir arada piyasaya sunulan Tensor çekirdekleri büyük ölçüde tesirli oldu.
Tensor çekirdekleri, birçok büyük sayıya sahip olan sayı kümelerini rahatça işlemek ve tensör süreçlerini yönetim etmek için geliştirilmiş bir donanımsal yapıdır. Tensör matematiği bu alanda en çok çıkarım modellerinde (inference models) epeyce değerli bir yere sahip olan hudut ağlarının işlenmesinde kullanılıyor.
DirectML’yi kullanmak için ekran kartınızla bir arada gelen rastgele bir Tensor çekirdeğine gerek yok. Hatta ve hatta bir GPU’ya bile gereksiniminiz bulunmuyor. Aslında Direct3D 12’nin özelliklerinden biri olan meta komutları (meta commands) sayesinde donanım üreticilerinin aygıtlarındaki birtakım özelliklerin kullanılması mümkün oluyor. Böylelikle DirectML bundan faydalanarak donanım üzerinde süreçler yapabiliyor.
Her ne kadar DirectML’nin GPU gerektirmediğini söylesek de (daha doğrusu komutların işlendiği donanımla rastgele bir bağı bulunmaz), meta komutları GPU’nun yaptıklarını yapmak için eşsiz bir yol kullanmaya imkan tanıyor. NVIDIA’nın Volta, Turing ve Ampere mimarili GPU’ları kelam konusu olduğunda meta komutlarının gerçek ayarlanmasına bağlı olarak Tensor çekirdekleri devreye girip matematiksel süreçleri yapmaya başlıyor. Şayet meta komutlar düzgün bir biçimde ayarlanmamışsa, GPU’lar shader’ları olağan çekirdeklerde çalıştırmaya devam ederler. Bunları da kullanamadığınız durumda CPU devreye girer.

Evet, bunların hepsi epeyce hoş lakin teoriyi bir kenara bırakalım. Geliştiriciler DirectML ile ne yapabilir ki diye düşünebilirsiniz. En kolayından üç noktada çok büyük yararı dokunuyor.
- Kenar yumuşatma (Anti-Aliasing)
- Ölçeklendirme ve “süper çözünürlük”.
- Gürültüden arındırma (Denoising)
Bunların da hiçbiri aslında DirectML gerektirmiyor. DirectML çıkmadan öncesinde yıllardır var olan teknikler diyebilirsiniz. Fakat API’nin özellikleri ve meta komutlarının birleşimi sayesinde AMD, Intel ve NVIDIA bu stil hızlandırıcıları artık kullanabilir hale geldi. Ki NVIDIA bunu halihazırda DLSS (Deep Learning Harika Sampling / Derin Öğrenme Muhteşem Örnekleyici) ile Tensor çekirdekleri yardımıyla yapıyor. AMD de FSR ile bu alanda olduğunu duyurdu ama ayrıntıları şimdi paylaşmadı.
DLSS basitçe bir oyunun daha düşük çözünürlükte çalışmasını sağlıyor lakin kareleri daha yüksek bir çözünürlükte sunuyor. Böylelikle gerçeğe nazaran biraz daha düşük çözünürlüğün bütün performans avantajlarından faydalanıyor. Buna, Blu-ray oynatıcıların DVD sineması HD’ye dönüştürürken yaptığı yükseltme sürecine benzeri biçimde çalışan bir teknoloji diyebiliriz.
Lakin manzara işlemede hudut ağları yardımıyla piksellerin renkleri, objelerin nereye yöneldiği ve nerede oldukları daha hakikat bir formda cevaplanıp işlenerek, halihazırda var olan teknolojiden daha kaliteli bir sonuç elde edilebilir. DLSS üzere teknolojiler aslında başarılı sonuçlar vermekte ama DirectML’nin de bu alanda değerlendirildiğinde çok büyük potansiyele sahip olduğunu söyleyebiliriz.
Muhteşem Resolution adı verilen bu ana teknoloji DXR’dan ağır bir biçimde faydalanan oyunlarda bilhassa tesirli olacak. Çünkü manzaraların kalitesinin yükseltilmesi esnasında geliştiriciler tarafından yapılan optimizasyonlardan dolayı ortaya çıkan “gürültüler” de büyük ölçüde çarçabuk düzeltilebilecek diye düşünüyoruz.
Bütün bunlar bir yana, çerçeve (frame) çözünürlüğünün düşürülmesiyle birlikte sahneye gölgelendiricilerin uygulanması için daha az ışın kullanılacak. Bu sayede ışın izleme performansı da çok daha güzel olacak diyebiliriz. Çünkü daha az çözünürlük daha az piksel ve daha az ışının takibi manasına geliyor. Bu adımların çabucak sonrasında kalitenin de yükseltilmesiyle bir arada kareler ortadaki farkın anlaşılması mümkün olmayacak derecede, hatta yerine nazaran çok daha kaliteli bir halde bizlere sunuluyor.

Soldaki denoise edilmeyen, sağdaki ise denoise edilmiş imaj. – Görsel Kaynağı: TechSpot
Özetle DirectML teknolojisi çok yüksek verimlilikte denoising (gürültü azaltma, bozukluk azaltma) süreçlerinde kullanılabilir. Bu sayede imaj kalitesi etkilenmeden daha az ışınla daha yeterli performans elde edilebilir. Üstte yer alan manzarada solda piksel başına yalnızca birincil ışınların kullanıldığı, sağda ise tıpkı imgenin Intel’in hudut ağları yardımıyla optimize ettiği Open Image Denoiser ile düzeltilmiş ışın izlemeli halini görüyorsunuz. Ortadaki fark inanılmaz.
Bu makine tahsili API’si birinci çıktığı günden bu yana iki adet büyük güncelleme ve birçok ek süreç ile birlikte yeni data çeşitlerine yönelik dayanak aldı. DXR’a kıyasla şu anda piyasada bulunan rastgele bir oyun DirectML teknolojisini kullanmıyor lakin kesinlikle ki oyun geliştiricilerinin gözünden bu büyük performans karı kaçmayacaktır diye düşünüyoruz.
Kaynak: Technopat