Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Özet
Direct Machine Learning (DirectML), makine öğrenmesi (ML) için alt düzey bir API'dir. API,DirectX 12 stilinde tanıdık (yerel C++, nano-COM) programlama arabirimine ve iş akışına sahiptir. Makine öğrenmesi çıkarım iş yüklerini oyun, altyapı, ara yazılım, arka uç veya başka bir uygulamayla tümleştirebilirsiniz. DirectML, DirectX 12 uyumlu tüm donanımlar tarafından desteklenir.
Donanım hızlandırmalı makine öğrenmesi temel öğeleri (operatörler olarak adlandırılır) DirectML'nin yapı taşlarıdır. Bu yapı taşlarından, üstel büyütme, kenar yumuşatma ve stil aktarımı gibi makine öğrenmesi tekniklerini geliştirebilirsiniz. Örneğin, gürültü giderme ve süper çözünürlük, piksel başına daha az ışınla etkileyici ışın izlemeli efektler elde etmenizi sağlar.
Makine öğrenmesi çıkarım iş yüklerini oyun, altyapı, ara yazılım, arka uç veya başka bir uygulamayla tümleştirebilirsiniz. DirectML'nin tanıdık (yerel C++, nano-COM) DirectX 12 stili programlama arabirimi ve iş akışı vardır ve tüm DirectX 12 uyumlu donanımlar tarafından desteklenir. En düşük DirectML uygulaması örneği de dahil olmak üzere DirectML örnek uygulamaları için bkz. DirectML örnek uygulamaları.
DirectML, Windows 10, sürüm 1903 ve windows SDK'sının ilgili sürümünde kullanıma sunulmuştur.
DirectML projem için uygun mu?
DirectML, DirectX 12 uyumlu herhangi bir GPU üzerinde makine öğrenmesi iş yüklerini çalıştırmanızı sağlayan düşük düzeyli bir donanım soyutlama katmanıdır.
Makine öğrenmesi performansınızı gerçek zamanlı, yüksek performanslı, düşük gecikme süresi veya kaynak kısıtlamalı senaryolar için iyileştirmeniz gerekiyorsa, DirectML size en fazla denetimi ve esnekliği sağlar. DirectML'yi kullanarak makine öğrenmesini doğrudan mevcut altyapınızla veya işleme işlem hattınızla tümleştirebilir ya da Windows üzerinde kendi özel makine öğrenmesi çerçevelerinizi ve ara yazılımınızı oluşturabilirsiniz.
DirectML'yi, makine öğrenmesi modelleri için açık standart ONNX biçimini destekleyen platformlar arası bir kitaplık olan ONNX Çalışma Zamanı aracılığıyla dolaylı olarak da kullanabilirsiniz. ONNX Çalışma Zamanı DirectML'yi yürütme sağlayıcılarından biri olarak, CPU, CUDA veya TensorRT gibi diğer arka uçlarla birlikte kullanabilir. Bu şekilde, kendiniz herhangi bir DirectML kodu yazmadan DirectML'nin performansından ve uyumluluğundan yararlanabilirsiniz.
Alternatif olarak, yük bağlama-değerlendirme deseniyle makine öğrenmesi iş akışını basitleştiren daha üst düzey, model odaklı bir API olan WinML API'sini kullanabilirsiniz. WinML ayrıca modeller için ONNX biçimini kullanır ve arka ucu olarak DirectML kullanabilir. WinML, temel alınan donanım veya çerçevenin ayrıntıları konusunda endişelenmeden makine öğrenmesini Windows uygulamalarınızla hızlı ve kolay bir şekilde tümleştirmeniz gereken senaryolar için tasarlanmıştır.
DirectML ne iş yapar; ve geliştirici olarak ne yapmam gerekir ?
DirectML, çıkarım modelinizin tek tek katmanlarını GPU'da (veya varsa yapay zeka hızlandırma çekirdeklerinde) verimli bir şekilde yürütür. Her katman bir operatördür ve DirectML size düşük düzeyli, donanım hızlandırmalı makine öğrenmesi temel işleçlerinden oluşan bir kitaplık sağlar. DirectML işlemlerini yalıtarak veya grafik olarak yürütebilirsiniz ( DirectML'de katman katman ve graf tabanlı iş akışları bölümüne bakın).
İşleçler ve grafikler donanıma ve mimariye özgü iyileştirmeler uygular. Aynı zamanda, geliştirici olarak bu işleçleri yürütmek için satıcıdan bağımsız tek bir arabirim görürsünüz.
DirectML'deki işleç kitaplığı, bir makine öğrenmesi iş yükünde kullanabilmeyi beklediğiniz tüm olağan işlemleri sağlar.
- Doğrusal, ReLU, sigmoid, tanh ve daha fazlası gibi etkinleştirme işleçleri.
- Add, exp, log, max, min, sub ve daha fazlası gibi öğeye göre işleçler.
- 2D ve 3D evrişim işleçleri ve daha fazlası.
- Argmin, ortalama, l2, toplam ve daha fazlası gibi azaltma işleçleri.
- Ortalama, lp ve maksimum gibi havuz işleçleri.
- Gemm, gru, lstm ve rnn gibi sinir ağı (NN) işleçleri.
- Ve daha fazlası.
En yüksek performansı elde etmek ve kullanmadığınız hizmetler için ödeme yapmamak adına, DirectML, bir geliştirici olarak donanım üzerinde makine öğrenmesi iş yükünüzün nasıl yürütüleceğini kontrol etmenizi sağlar. Geliştirici olarak hangi işleçlerin ve ne zaman yürütüleceklerini anlamak sizin sorumluluğunuzdadır. kendi takdirinize bırakılan görevler şunlardır: modelin transkripti; katmanlarınızı basitleştirme ve iyileştirme; ağırlıkları yükleme; kaynak ayırma, bağlama, bellek yönetimi (Direct3D 12'de olduğu gibi); ve grafiğin yürütülmesi.
Graflarınızla ilgili üst düzey bilgileri korursunuz (modelinizi doğrudan sabit kodlayabilir veya kendi model yükleyicinizi yazabilirsiniz). Bir örnekleme modeli, örneğin, her biri yukarı örnekleme, evrişim, normalizasyon ve aktivasyon işleçlerinden oluşan birkaç katman kullanılarak tasarlanabilir. Bu bilgi, dikkatli zamanlama ve engel yönetimi sayesinde donanımdan en paralelliği ve performansı ayıklayabilirsiniz. Bir oyun geliştiriyorsanız dikkatli kaynak yönetimi ve zamanlama üzerindeki denetiminiz, GPU'nun doygunluğunu sağlamak için makine öğrenmesi iş yüklerini ve geleneksel işleme çalışmalarını birbirine ayırmanıza olanak tanır.
Üst düzey DirectML iş akışı nedir?
DirectML'nin nasıl kullanılacağını beklediğimiz için üst düzey tarif aşağıdadır. Başlatma ve yürütmenin iki ana aşamasında, işi komut listelerine kaydeder ve sonra bunları bir kuyrukta yürütürsiniz.
Başlatma İşlemi
- Direct3D 12 kaynaklarınızı (Direct3D 12 cihazı, komut kuyruğu, komut listesi ve tanımlayıcı yığınları gibi kaynaklar) oluşturun.
- İşleme iş yükünüzün yanı sıra makine öğrenmesi çıkarımını yaptığınız için DirectML kaynakları (DirectML cihazı ve operatör örnekleri) oluşturun. Belirli bir veri türüne sahip belirli bir filtre tensor boyutuyla belirli bir tür convolution gerçekleştirmeniz gereken bir makine öğrenmesi modeliniz varsa, bunların tümü DirectML'nin convolution işlecinin parametreleridir.
- DirectML kayıtları Direct3D 12 komut listelerinde çalışır. Bu nedenle başlatma işlemi tamamlandıktan sonra, convolution işlecinizin bağlamasını ve başlatmasını (örneğin) komut listenize kaydedersiniz. Ardından, komut listenizi her zamanki gibi kapatın ve kuyruğunuzda yürütün.
İdam
- Ağırlık tensorlarınızı kaynaklara yükleyin. DirectML'deki bir tensor, normal bir Direct3D 12 kaynağı kullanılarak temsil edilir. Örneğin, ağırlık verilerinizi GPU'ya yüklemek istiyorsanız, bunu diğer Direct3D 12 kaynaklarıyla aynı şekilde yaparsınız (karşıya yükleme yığını veya kopyalama kuyruğu kullanın).
- Ardından, bu Direct3D 12 kaynaklarını giriş ve çıkış tensor'unuz olarak bağlamanız gerekir. Komut listenize operatörlerinizin bağlanmasını ve yürütülmesini kaydedin.
- Komut listenizi kapatın ve yürütün.
Direct3D 12'de olduğu gibi kaynak ömrü ve eşitleme de sizin sorumluluğunuzdadır. Örneğin, DirectML nesnelerinizi en azından GPU'da yürütmeyi tamamlayana kadar serbest bırakmayın.
DirectML'de katman katman ve graf tabanlı iş akışları
DirectML, model yürütmeye yönelik hem katman katman hem de grafik tabanlı yaklaşımları destekler. Katman katman yürütürken, her DirectML işlecini oluşturup başlatmak ve bunları bir komut listesinde yürütmek üzere ayrı ayrı kaydetmek sizin sorumluluğunuzdadır. Buna karşılık, grafı yürütürken her düğümün bir DirectML işlecini, kenarların ise düğümler arasında akan tensor verilerini temsil ettiği bir düğüm ve kenar kümesi oluşturursunuz. Ardından tüm graf başlatma veya yürütme için tek seferde gönderilir ve DirectML, tek tek işleçlerin sizin adınıza zamanlamasını ve kaydını işler.
Her iki desen de farklı durumlarda kullanışlıdır. Katman katman yaklaşım, işlem çalışmalarının sıralanması ve zamanlanması üzerinde en üst düzeyde denetim sağlar. Örneğin, bu denetim düzeyi, DirectML işlem gönderimlerinizle Direct3D 12 işlem iş yüklerini birleştirmenize olanak tanır. Bu, GPU'nuzda aksi takdirde boşta olacak zaman uyumsuz işlem veya gölgelendirici birimlerinden yararlanmak için yararlı olabilir. Katmanı katmana göre el ile yürütme ayrıca tensor düzenleri ve bellek kullanımı üzerinde açık geliştirici denetimi sağlar.
Ancak makine öğrenmesi modelleri genellikle katman grafları açısından ifade edilir. DirectML, katman katman yaklaşımına alternatif olarak modelinizi düğümlerin (DirectML işleçleri) ve aralarındaki kenarların (tensor açıklamaları) yönlendirilmiş bir döngüsel grafı olarak ifade etmenizi sağlar. Grafın açıklamasını derledikten sonra, hepsini bir kerede derleyebilir ve başlatma ve yürütme için DirectML'ye gönderebilirsiniz. Bu yaklaşımda DirectML bir geçiş sırasına karar verir ve her bir işleci ve bunlar arasındaki veri akışını sizin adınıza işler. Bu genellikle makine öğrenmesi modelini ifade etmenin daha basit ve daha doğal bir yoludur ve achitecture'a özgü iyileştirmelerin otomatik olarak uygulanmasına olanak sağlar. Ayrıca DirectMLX yardımcı kitaplığı, DirectML işleçlerinin karmaşık grafiklerini oluşturmak için temiz ve kullanışlı bir söz dizimi sağlar.
Hangi yaklaşımı tercih ettiyseniz, her zaman aynı kapsamlı DirectML işleçleri paketine erişebilirsiniz. Bu, katman katman yaklaşımının ayrıntılı denetimini veya graf yaklaşımının rahatlığını tercih etmek için işlevleri hiçbir zaman feda etmek zorunda olmadığınız anlamına gelir.
Bu bölümde
| Konu | Açıklama |
|---|---|
| Hızlı Başlangıç Kılavuzu | DirectML'i kullanmaya başlayın. |
| Geliştirici Araçları | DirectML'nin profilini oluşturma, iyileştirme ve hata ayıklama araçları. |
| Programlama Kılavuzu | Veri bağlama, engeller, slaytlar, füzyonlar, hata işleme, cihaz kaldırma ve yardımcı işlevleriyle ilgili konular. |
| Sorun giderme | Hata koşullarını işleme ve hata ayıklama katmanını kullanma. |
| DirectML sürüm geçmişi | DirectML, Windows 10'un bir sistem bileşenidir ve tek başına yeniden dağıtılabilir paket olarak da kullanılabilir. |
| DirectML özellik düzeyi geçmişi | Her özellik düzeyinde sunulan türlerin bildirimi. |
| DirectML örnek uygulamaları | Minimum DirectML uygulaması örneği de dahil olmak üzere DirectML örnek uygulamalarına bağlantılar. |
| GPU hızlandırılmış ML eğitimi | Linux için Windows Alt Sistemi (WSL) ve yerel Windows için GPU hızlandırılmış makine öğrenmesi (ML) eğitimi tarafından desteklenen özellikleri kapsar. |
| DirectML API başvurusu | Bu bölüm, DirectML.h içinde belirtilmiş Direct Machine Learning (DirectML) API'lerini kapsar. |