Windows ML Çalışma Zamanı API'sine genel bakış

Important

Windows ML Çalışma Zamanı API'si şu anda deneyseldir ve üretim ortamlarında kullanılmak üzere desteklenmemektedir. Bu API'yi deneyen uygulamalar Microsoft Store'da yayımlanmamalıdır.

Important

Windows ML Çalışma Zamanı API'si şu anda C++ ve Python dillerinde kullanılabilir; C# şu anda desteklenmiyor. C#'tan bu API'leri kullanmakla ilgileniyorsanız, Windows ML GitHub deposunda bir sorun oluşturarak bize bildirin!

Windows ML Çalışma Zamanı API'si, Windows için özel olarak oluşturulmuş yerel bir C/C++ yerel yapay zeka çıkarım yapma çerçevesidir. Windows ML Çalışma Zamanı API'si ile bir model yükleyebilir, bir CPU, GPU veya NPU yürütme hedefi seçebilir (belirli bir DXCore bağdaştırıcısı veya D3D12 cihazı dahil), tensorları bu hedefe bağlayabilir, model ve işlemci aşamalarını bir işlem hattında birleştirebilir, işlem hattını derleyebilir ve çıkış tensorları oluşturmak için çalıştırabilirsiniz.

İsteğe bağlı Metin Oluşturma ve Konuşma Tanıma API'leri, uygulamanızın sağladığı bir model üzerinden aynı Çalışma Zamanı nesnelerini daha üst düzey iş akışlarında birleştirir: bkz. Windows ML kullanarak kendi dil modelinizle metin oluşturma ve Windows ML kullanarak kendi Fısıltı modelinizle konuşmayı tanıma.

Runtime API ile ONNX Çalışma Zamanı karşılaştırması

Uygulamanız yalnızca Windows'u hedefliyorsa (ve şu anda deneysel API'leri kullanmak istiyorsanız), Çalışma Zamanı API'sini kullanın. Donanım seçimi (belirli bir DXCore bağdaştırıcısı veya D3D12 cihazı dahil), tensor yerleşimi, çok aşamalı işlem hattı yerleştirme ve derleme üzerinde açık denetim sağlar.

Aksi takdirde, uygulamanızın başka platformlarda çalışması gerekiyorsa veya zaten çalışan platformlar arası ONNX Çalışma Zamanı oturum koduna sahipse, bunun yerine Windows ML'de bulunan ONNX Çalışma Zamanı API'lerini kullanın.

Çekirdek nesne modeli

Concept Birincil API Description
Runtime IWinMLRuntime WinMLCreateRuntime tarafından döndürülen arabirim; model dosyalarını yükler, yürütme hedefleri oluşturur ve işlem hattı oluşturucuları oluşturur.
Model IWinMLModel Dosyadan veya arabellekten yüklenen sabit, opak model artefaktı. IWinMLModelSchema ile bildirilen şemasını yansıtır.
Çalıştırma hedefi IWinMLExecutionTarget Aşamaları oluşturmak ve tensor oluşturmak için kullanılan CPU, GPU veya NPU yerleştirme belirteci.
Pipeline oluşturucu IWinMLPipelineBuilder Model ve işlemci aşamalarını ekler, bunları bağlar ve hazırlanmış bir işlem hattı oluşturur.
Pipeline IWinMLPipeline Bağlı tensorları yürüten ve çıkış tensorları üreten hazır, hemen çalıştırılabilir grafik.
Stage IWinMLStage Konumsal giriş ve çıkış bağlamalarına ve çözümlenen yürütme hedefine sahip işlem hattındaki bir adım.
Tensör IWinMLTensor Aşama girişlerine ve çıkışlarına bağlı tipli çok boyutlu veriler.
Metin oluşturma / konuşma tanıma Windows ML Metin Oluşturma ve Konuşma Tanıma API'leri Tipli oturumlar, akışlar ve sonuçlarla, çağıranın sahip olduğu Çalışma Zamanı nesneleri üzerinde oluşturulan üst düzey iş akışı.

Arka uç ve yürütme hedefi seçin

LoadModelFromFile model artifaktının dosya uzantısından arka uç seçer. Uygulamanız, dosyayı hangi arka uç yüklerse yüklesin model, yürütme hedefi, işlem hattı oluşturucusu, aşamalar, bağlamalar ve Run aynı Çalışma Zamanı nesnelerini kullanır.

Model dosyası Backend Donanım hızlandırma
.onnx, .ort ONNX Çalışma Zamanı Windows ML EP kataloğu aracılığıyla Windows'un yüklediği ve güncel tuttuğu yürütme sağlayıcıları (EP'ler)
.gguf llama.cpp Uygulamanızla birlikte dağıttığınız, uygulamaya yerel bir CPU modülü ve NVIDIA GPU'ları için isteğe bağlı bir CUDA modülü. CPU ve CUDA, Windows ML'nin bu sürüm için doğruladığı tek llama.cpp arka uçlarıdır.

IWinMLRuntime ile oluşturulan bir yürütme hedefi, CPU, GPU veya NPU gibi bir donanım sınıfını temsil eder. Aşamaları oluşturmak ve tensörler yaratmak için bir hedefi yeniden kullanın: bir hedefin yeniden kullanılması aynı hedef yakınlığını ifade ederken, ayrı hedefler kullanmak hedefler arası aktarım sınırlarını açık hale getirir. İşlem hattı oluşturucusunun Build yöntemi çalıştırıldığında, çalışma zamanı her aşamayı hedefi için yürütme arka ucuna yerleştirir ve hedef ve arka uç uyumluluğunu kesinleştirir.

Cihazları kendiniz listelemeden bir donanım sınıfı için, WINML_EXECUTION_TARGET_PREFERENCE öğesini, tümleşik GPU ile ayrık GPU arasında olduğu gibi bu sınıftaki adayları sıralayan bir WINML_EXECUTION_TARGET_KIND ve bir CreateExecutionTarget ile çağırın. ERROR_NOT_FOUND ve ERROR_NOT_SUPPORTED öğelerine aynı şekilde davranın ve başka bir sınıfa geri dönün:

ComPtr<IWinMLExecutionTarget> target;
HRESULT hr = runtime->CreateExecutionTarget(
    WINML_EXECUTION_TARGET_KIND_NPU,
    WINML_EXECUTION_TARGET_PREFERENCE_EFFICIENCY,
    target.GetAddressOf());
if (hr == HRESULT_FROM_WIN32(ERROR_NOT_FOUND) ||
    hr == HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED))
{
    THROW_IF_FAILED(runtime->CreateExecutionTarget(
        WINML_EXECUTION_TARGET_KIND_GPU,
        WINML_EXECUTION_TARGET_PREFERENCE_PERFORMANCE,
        target.GetAddressOf()));
}
else
{
    THROW_IF_FAILED(hr);
}

CreateCpuExecutionTarget CPU türünü istemeye eşdeğerdir. CreateExecutionTargetFromAdapter ve CreateExecutionTargetFromD3D12, çalışma zamanının bir tane seçmesine izin vermek yerine hedefi belirli bir DXCore bağdaştırıcısına veya D3D12 cihazına bağlar. Yüklü bir yürütme sağlayıcısına (EP) bağlı ONNX modelleri için isteğe bağlı bir ONNX Çalışma Zamanı uyumluluk yüzeyi, önceden kaydettiğiniz bir sağlayıcıyı sabitlemenizi sağlar. Her arka uç bu hedefleri farklı şekilde çözümler; örneğin, .gguf modelleri tarafından kullanılan llama.cpp arka ucu, GPU hedefini karşılamak için en azından kısmi GPU boşaltması gerektirir ve NPU hedeflerini veya sağlayıcı sabitlemeyi desteklemez. Arka uç başına tam hedef çözünürlük matrisi için ve GGUF modelini çalıştırmaya yönelik bir kılavuz için bkz. Windows ML Runtime API kavramları.

Sonraki Adımlar