Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Important
Rozhraní API modulu Windows ML Runtime je v současné době experimentální a není podporováno pro použití v produkčních prostředích. Aplikace, které toto rozhraní API zkouší, by se neměly publikovat do Microsoft Store.
Important
Rozhraní API modulu Windows ML Runtime je aktuálně dostupné v jazyce C++ a Python; Jazyk C# se v současné době nepodporuje. Dejte nám vědět, jestli vás zajímají tato rozhraní API z jazyka C# publikováním problému v úložišti Windows ML GitHub.
Rozhraní API modulu Windows ML Runtime je nativní místní framework C/C++ pro AI inferenci vytvořený speciálně pro Windows. Pomocí rozhraní API modulu runtime Windows ML můžete načíst model, zvolit cíl spuštění procesoru, GPU nebo NPU (včetně konkrétního adaptéru DXCore nebo zařízení D3D12), svázat tensory s tímto cílem, sestavit fáze modelu a procesoru do kanálu, zkompilovat kanál a spustit ho a vytvořit výstupní tensory.
Volitelná rozhraní API pro generování textu a rozpoznávání řeči skládají tyto stejné objekty Runtime do pracovních postupů vyšší úrovně nad modelem, který poskytuje vaše aplikace: Viz Téma Generování textu pomocí vlastního jazykového modelu pomocí Windows ML a rozpoznávání řeči s vlastním modelem Whisper pomocí Windows ML.
Runtime API vs ONNX Runtime
Pokud vaše aplikace cílí jenom na Windows (a vy jste ochotni používat rozhraní API, která jsou aktuálně experimentální), použijte Runtime API. Poskytuje explicitní kontrolu nad výběrem hardwaru (včetně konkrétního adaptéru DXCore nebo zařízení D3D12), rezidencí tensorů, umístěním vícefázové pipeline a kompilací.
Jinak platí, že pokud vaše aplikace potřebuje běžet na jiných platformách nebo už má funkční kód relace ONNX Runtime, použijte místo toho rozhraní API ONNX Runtime, která jsou součástí Windows ML.
Základní objektový model
| Concept | Primární rozhraní API | Description |
|---|---|---|
| Runtime | IWinMLRuntime |
Rozhraní vrácené WinMLCreateRuntime; načte soubory modelu, vytvoří cíle spuštění a vytvoří objekty pro sestavení pipeline. |
| Model | IWinMLModel |
Neměnný, neprůhledný artefakt modelu načtený ze souboru nebo vyrovnávací paměti Reflektujte deklarované schéma prostřednictvím IWinMLModelSchema. |
| Cíl spuštění | IWinMLExecutionTarget |
Token umístění CPU, GPU nebo NPU sloužící k sestavení fází a vytváření tensorů. |
| Tvůrce pipeline | IWinMLPipelineBuilder |
Přidá fáze modelu a procesoru, připojí je a sestaví připravenou pipeline. |
| Kanál | IWinMLPipeline |
Připravený, okamžitě spustitelný graf, který provádí operace nad navázanými tensory a vytváří výstupní tensory. |
| Stage | IWinMLStage |
Krok v pipeline, který vlastní poziční vstupní a výstupní vazby a svůj určený cíl spuštění. |
| Tenzor | IWinMLTensor |
Typovaná multidimenzionální data svázaná se vstupy a výstupy fáze. |
| Generování textu / rozpoznávání řeči | Windows rozhraní API pro generování textu a rozpoznávání řeči ML | Pracovní tok vyšší úrovně složený z objektů runtime vlastněných volajícím s typovanými sessionami, datovými proudy a výsledky. |
Volba back-endu a cíle spuštění
LoadModelFromFile vybere back-end z přípony souboru artefaktu modelu.
Vaše aplikace používá stejné objekty runtime – model, cíl spuštění, tvůrce pipeline, fáze, vazby a Run – bez ohledu na to, který back-end soubor načte.
| Soubor modelu | Backend | Hardwarová akcelerace |
|---|---|---|
.onnx, .ort |
ONNX Runtime | Zprostředkovatelé provádění (EPs), které systém Windows instaluje a udržuje aktuální prostřednictvím katalogu Windows ML EP |
.gguf |
llama.cpp | Lokální modul CPU pro aplikaci a volitelný modul CUDA pro GPU NVIDIA, který nasadíte společně s aplikací. CPU a CUDA jsou jedinými llama.cpp back-endy, které Windows ML ověřuje pro tuto verzi. |
Cíl spuštění představuje třídu hardwaru – cpu, GPU nebo NPU – vytvořenou pomocí IWinMLRuntime. Znovu použijte cíl k vytváření stupňů a tensorů: opakované použití jednoho cíle vyjadřuje afinitu ke stejnému cíli, zatímco použití jedinečných cílů znamená explicitní hranice přenosu mezi cíli. Když se spustí metoda Build nástroje pro sestavení kanálu, modul runtime umístí každou fázi do back-endu spuštění pro svůj cíl a potvrdí kompatibilitu cíle a back-endu.
Pro hardwarovou třídu, aniž byste sami vytvářeli výčet zařízení, volejte CreateExecutionTarget s WINML_EXECUTION_TARGET_KIND a WINML_EXECUTION_TARGET_PREFERENCE, který řadí kandidáty této třídy, například integrovaný oproti diskrétnímu GPU. Zacházejte s ERROR_NOT_FOUND a ERROR_NOT_SUPPORTED stejně a použijte jinou třídu jako zálož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 odpovídá požadavku na druh procesoru.
CreateExecutionTargetFromAdapter a CreateExecutionTargetFromD3D12 vážou cíl na konkrétní adaptér DXCore nebo zařízení D3D12 místo toho, aby modul runtime jeden z nich vybral. U modelů ONNX, které závisí na nainstalovaném execution provideru (EP), umožňuje volitelné rozhraní kompatibility ONNX Runtime pevně nastavit poskytovatele, kterého jste už zaregistrovali.
Každý back-end tyto cíle zpracovává jinak – například back-end llama.cpp používaný modely .gguf vyžaduje alespoň částečný offload na GPU, aby bylo možné respektovat cíl GPU, a nepodporuje cíle NPU ani připnutí poskytovatele. Úplnou matici cílových rozlišení pro každý backend a návod ke spuštění modelu GGUF najdete v Koncepty rozhraní Windows ML Runtime API.
Další kroky
- Nastavte projekt C++ pro rozhraní API modulu Windows ML Runtime
- Koncepty rozhraní API modulu runtime Windows ML
- Generování textu pomocí vlastního jazykového modelu pomocí Windows ML
- Rozpoznávání řeči pomocí vlastního modelu Whisper pomocí Windows ML
- Spuštění modelu pomocí rozhraní API Windows ML Runtime