Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
A interface API do Windows ML Runtime está atualmente em fase experimental e não é suportada para utilização em ambientes de produção. As aplicações que testam esta API não devem ser publicadas na Microsoft Store.
Importante
A API do Windows ML Runtime está atualmente disponível em C++ e Python; O C# não é atualmente suportado. Diz-nos se estiveres interessado em usar estas APIs do C# abrindo um issue no repositório GitHub do Windows ML!
A API do Windows ML Runtime é um framework nativo de inferência local de IA em C/C++, construído especificamente para o Windows. Com a API do Windows ML Runtime, pode carregar um modelo, escolher um CPU, GPU ou NPU alvo de execução (incluindo um adaptador DXCore específico ou dispositivo D3D12), associar tensores a esse destino, compor os estágios do modelo e do processador num pipeline, compilar o pipeline e executá-lo para produzir tensores de saída.
As APIs opcionais de Geração de Texto e Reconhecimento de Fala compõem estes mesmos objetos de Runtime em fluxos de trabalho de nível superior sobre um modelo fornecido pela sua aplicação: veja Gerar texto com o seu próprio modelo de linguagem usando Windows ML e Reconhecer fala com o seu próprio modelo Whisper usando Windows ML.
Runtime API vs ONNX Runtime
Se a tua aplicação só tem como alvo o Windows (e estiveres disposto a usar APIs que se encontram atualmente em fase experimental), usa a API de Runtime. Proporciona controlo explícito sobre a seleção de hardware (incluindo um adaptador DXCore específico ou dispositivo D3D12), residência tensorial, colocação de pipelines em múltiplos estágios e compilação.
Caso contrário, se a sua aplicação precisar de correr noutras plataformas, ou já tiver código de sessão ONNX Runtime multiplataforma a funcionar, use as APIs ONNX Runtime incluídas no Windows ML.
Modelo de objetos do núcleo
| Conceito | API Primária | Description |
|---|---|---|
| Runtime | IWinMLRuntime |
Interface devolvida por WinMLCreateRuntime; carrega ficheiros de modelo, cria alvos de execução e cria construtores de pipeline. |
| Modelo | IWinMLModel |
Artefacto imutável e opaco do modelo carregado a partir de um ficheiro ou buffer. Reflete o seu esquema declarado através de IWinMLModelSchema. |
| Alvo de execução | IWinMLExecutionTarget |
token de posicionamento de CPU, GPU ou NPU usado para construir estágios e criar tensores. |
| Construtor de pipeline | IWinMLPipelineBuilder |
Adiciona estágios de modelo e processador, liga-os e constrói um pipeline preparado. |
| Gasoduto | IWinMLPipeline |
Grafo preparado, imediatamente executável, que executa tensores ligados e produz tensores de saída. |
| Stage | IWinMLStage |
Um passo no pipeline que detém as ligações posicionais de entrada e saída e o seu alvo de execução resolvido. |
| Tensor | IWinMLTensor |
Dados multidimensionais tipados ligados às entradas e saídas da fase. |
| Geração de texto / reconhecimento de voz | APIs de Geração de Texto e Reconhecimento de Fala para Windows ML | Fluxo de trabalho de nível superior composto sobre objetos Runtime propriedade do chamador, com sessões, fluxos e resultados tipados. |
Escolha um backend e um destino de execução
LoadModelFromFile seleciona o backend com base na extensão de ficheiro do artefacto do modelo.
A tua aplicação usa os mesmos objetos de Runtime — modelo, destino de execução, construtor de pipelines, estágios, bindings, e Run — independentemente do backend que carrega o ficheiro.
| Ficheiro de modelo | Backend | Aceleração de hardware |
|---|---|---|
.onnx, .ort |
Tempo de execução do ONNX | Fornecedores de execução (EPs) que o Windows instala e mantém atualizados através do catálogo de EPs do Windows ML |
.gguf |
llama.cpp | Um módulo de CPU local para a aplicação, além de um módulo CUDA opcional para GPUs NVIDIA que é implementado em conjunto com a sua aplicação. CPU e CUDA são os únicos backends de llama.cpp que o Windows ML valida para esta versão. |
Um destino de execução representa uma classe de hardware — CPU, GPU ou NPU — criada com IWinMLRuntime. Reutilizar um alvo para construir estágios e criar tensores: reutilizar um alvo expressa afinidade pelo mesmo alvo, enquanto usar alvos distintos torna explícitas as fronteiras de transferência entre alvos. Quando o método do construtor Build de pipeline é executado, o runtime coloca cada etapa no backend de execução para o seu destino e garante a compatibilidade entre o destino e o backend.
Para uma classe de hardware sem enumerar você mesmo os dispositivos, chame CreateExecutionTarget com a WINML_EXECUTION_TARGET_KIND e a WINML_EXECUTION_TARGET_PREFERENCE que classifiquem candidatos dessa classe, como uma GPU integrada versus uma discreta. Trate ERROR_NOT_FOUND e ERROR_NOT_SUPPORTED da mesma forma e recorra a outra 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 é equivalente a pedir o tipo CPU.
CreateExecutionTargetFromAdapter e CreateExecutionTargetFromD3D12 atribuem um alvo a um adaptador DXCore específico ou dispositivo D3D12 em vez de deixar o Runtime escolher um. Para modelos ONNX que dependem de um provedor de execução (EP) instalado, uma interface opcional de compatibilidade do ONNX Runtime permite-lhe fixar um provedor que já registou.
Cada backend resolve estes destinos de forma diferente — por exemplo, o backend llama.cpp usado pelos modelos .gguf requer pelo menos um descarregamento parcial para a GPU para respeitar um destino GPU, e não suporta destinos NPU nem fixação do fornecedor/provedor. Para a matriz completa de resoluções de destino por backend e para um guia de execução de um modelo GGUF, consulte Windows ML Runtime API concepts.