Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
L'API runtime di ML Windows è attualmente sperimentale e non è supportata per l'uso in ambienti di produzione. Le app che stanno testando questa API non devono essere pubblicate nel Microsoft Store.
Importante
L'API di runtime Windows ML è attualmente disponibile in C++ e Python; C# non è attualmente supportato. Segnalare se si è interessati a usare queste API da C# aprendo un issue nel repo GitHub di Windows ML.
L'API runtime di Windows ML è un framework locale di inferenza di intelligenza artificiale C/C++ nativo progettato specificamente per Windows. Con l'API di runtime di ML Windows è possibile caricare un modello, scegliere una destinazione di esecuzione cpu, GPU o NPU (incluso un adattatore DXCore specifico o un dispositivo D3D12), associare tensori a tale destinazione, comporre le fasi del modello e del processore in una pipeline, compilare la pipeline ed eseguirla per produrre tensori di output.
Le API facoltative di generazione del testo e di riconoscimento vocale compongono questi stessi oggetti runtime in flussi di lavoro di livello superiore su un modello fornito dall'app: vedere Generare testo con il proprio modello linguistico usando Windows ML e Riconoscere il parlato con il proprio modello Whisper usando Windows ML.
API di runtime vs ONNX Runtime
Se l'app è destinata solo a Windows (e si è disposti a usare le API attualmente sperimentali), usare l'API di runtime. Fornisce un controllo esplicito sulla selezione hardware (incluso un adattatore DXCore specifico o un dispositivo D3D12), sulla residenza dei tensori, sul posizionamento della pipeline a più fasi e sulla compilazione.
In caso contrario, se l'app deve essere eseguita in altre piattaforme o ha già codice di sessione ONNX Runtime multipiattaforma, usare invece le API di ONNX Runtime incluse in Windows ML.
Modello a oggetti di base
| Concetto | API principale | Description |
|---|---|---|
| Runtime | IWinMLRuntime |
Interfaccia restituita da WinMLCreateRuntime; carica i file di modello, crea destinazioni di esecuzione e crea builder di pipeline. |
| Model | IWinMLModel |
Artefatto del modello opaco non modificabile caricato da un file o da un buffer. Riflette lo schema dichiarato tramite IWinMLModelSchema. |
| Destinazione di esecuzione | IWinMLExecutionTarget |
Token di posizionamento CPU, GPU o NPU usato per creare fasi e creare tensori. |
| Builder di pipeline | IWinMLPipelineBuilder |
Aggiunge fasi del modello e del processore, le connette e crea una pipeline preparata. |
| Pipeline | IWinMLPipeline |
Grafo preparato, immediatamente eseguibile che esegue tensori associati e produce tensori di output. |
| Stage | IWinMLStage |
Passaggio della pipeline che possiede le associazioni di input e output posizionali e la relativa destinazione di esecuzione risolta. |
| Tensore | IWinMLTensor |
Dati multidimensionali tipizzati associati a input e output di fase. |
| Generazione di testo/riconoscimento vocale | API di Windows ML per la generazione del testo e il riconoscimento vocale | Flusso di lavoro di livello superiore composto su oggetti Runtime di proprietà del chiamante, con sessioni, flussi e risultati tipizzati. |
Scegli un back-end e una destinazione di esecuzione
LoadModelFromFile seleziona il back-end dall'estensione del file dell'artefatto del modello.
L'app usa gli stessi oggetti runtime, ovvero modello, destinazione di esecuzione, generatore di pipeline, fasi, associazioni e Run , indipendentemente dal back-end che carica il file.
| File del modello | Backend | Accelerazione hardware |
|---|---|---|
.onnx, .ort |
Runtime ONNX | Provider di esecuzione (EP) che Windows installa e mantiene aggiornati attraverso il catalogo EP di Windows ML |
.gguf |
llama.cpp | Un modulo CPU locale dell'app, oltre a un modulo CUDA facoltativo per GPU NVIDIA da distribuire insieme all'app. CPU e CUDA sono gli unici back-end llama.cpp Windows ML convalidati per questa versione. |
Una destinazione di esecuzione rappresenta una classe hardware ( CPU, GPU o NPU ) creata con IWinMLRuntime. Riutilizzare un target per creare stage e creare tensori: il riutilizzo di un target esprime l'affinità con lo stesso target, mentre l'uso di target distinti rende espliciti i limiti di trasferimento tra target. Quando viene eseguito il metodo del generatore di Build pipeline, il runtime inserisce ogni fase nel back-end di esecuzione per la destinazione e garantisce la compatibilità tra destinazione e back-end.
Per una classe hardware senza enumerare manualmente i dispositivi, chiamare CreateExecutionTarget con un WINML_EXECUTION_TARGET_KIND e un oggetto WINML_EXECUTION_TARGET_PREFERENCE che classifica i candidati di tale classe, ad esempio una GPU integrata rispetto a una GPU discreta. Trattare ERROR_NOT_FOUND e ERROR_NOT_SUPPORTED allo stesso modo ed eseguire il fallback a un'altra classe:
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 equivale a richiedere il tipo di CPU.
CreateExecutionTargetFromAdapter e CreateExecutionTargetFromD3D12 associano un target a un adattatore DXCore specifico o a un dispositivo D3D12 invece di consentire al runtime di sceglierne uno. Per i modelli ONNX che dipendono da un provider di esecuzione installato (EP), una superficie di compatibilità ONNX Runtime facoltativa consente di vincolare un provider già registrato.
Ogni back-end risolve queste destinazioni in modo diverso, ad esempio il back-end llama.cpp usato dai .gguf modelli richiede almeno un offload GPU parziale per rispettare una destinazione GPU e non supporta le destinazioni NPU o il vincolo del provider. Per la matrice completa della risoluzione di destinazione per back-end e per una procedura dettagliata sull'esecuzione di un modello GGUF, vedere Concetti dell'API di Windows ML Runtime.