Esta página contém respostas às perguntas mais populares da comunidade sobre o Windows ML.
Como sei se o modelo ONNX que tenho será executado com o Windows ML?
A maneira mais fácil de verificar se seu modelo será executado com o Windows ML é usando a ferramenta WinML Model Runner. Como alternativa, você pode verificar versões ONNX e compilações do Windows para obter mais informações sobre todas as versões ONNX suportadas para uma determinada versão do Windows.
Como faço para converter um modelo de um formato diferente para ONNX?
Você pode usar WinMLTools para converter modelos de vários formatos diferentes, como Apple CoreML e scikit-learn, para ONNX.
Estou recebendo erros ao tentar exportar e/ou converter meu modelo para ONNX que dizem que meu modelo tem "operadores não suportados". O que devo fazer?
Alguns operadores na estrutura de treinamento nativo podem não ser suportados atualmente por uma versão ONNX. Primeiro, recomendamos que verifique as versões ONNX suportadas para o seude compilação do Windows de destino e tente converter o seu modelo para a versão máxima suportada. As versões posteriores do ONNX incluem suporte para um conjunto maior de operadores em comparação com as versões anteriores.
Se você continuar a ter problemas, recomendamos trabalhar com sua equipe de ciência de dados para tentar evitar os operadores sem suporte. Uma das abordagens que recomendamos é alterar a arquitetura do modelo na estrutura de origem e tentar converter/exportar o modelo para a versão ONNX de destino. Observe que você ainda não precisa treinar novamente o modelo — você pode tentar converter a arquitetura e, se for bem-sucedido, pode passar para o retreinamento completo do modelo.
Por que não consigo carregar um modelo?
Há várias razões pelas quais você pode ter problemas para carregar um modelo, mas uma das mais comuns ao desenvolver na UWP é devido a restrições de acesso a arquivos. Por padrão, os aplicativos UWP só podem acessar determinadas partes do sistema de arquivos e exigem permissão do usuário ou recursos extras para acessar outros locais. Consulte de permissões de acesso a arquivos para obter mais informações.
Qual versão do WinMLTools devo usar?
Recomendamos sempre que você baixe e instale a versão mais recente do pacote de winmltools. Isso garantirá que você possa criar modelos ONNX destinados às versões mais recentes do Windows.
Posso usar onnxmltools em vez de winmltools?
Sim, você pode, mas você precisará se certificar de instalar a versão correta do onnxmltools para direcionar o ONNX v1.2.2, que é a versão mínima do ONNX suportada pelo Windows ML. Se você não tiver certeza de qual versão instalar, recomendamos instalar a versão mais recente do winmltools em vez disso. Isso garantirá que você será capaz de direcionar a versão ONNX suportada pelo Windows.
Qual versão do Visual Studio devo usar para obter geração automática de código (mlgen)?
A versão mínima recomendada do Visual Studio com suporte para mlgen é 15.8.7. No Windows 10, versão 1903 e posterior, mlgen não está mais incluído no SDK, então você precisará baixar e instalar a extensão. Há um para Visual Studio 2017 e um para Visual Studio 2019.
Recebo uma mensagem de erro ao tentar executar mlgen e nenhum código é gerado. O que poderia estar acontecendo?
Os dois erros mais comuns ao tentar executar mlgen são:
- atributo obrigatório 'consumed_inputs' está faltando: Se você se deparar com essa mensagem de erro, então muito provavelmente você está tentando executar um modelo ONNX v1.2 com uma versão do Windows 10 SDK mais antiga que 17763; recomendamos que você verifique a versão do SDK e atualize-a para a versão 17763 ou posterior.
- Erro de tipo: Tipo (map(string,tensor(float))) de saída arg (perda) de nó (ZipMap) não corresponde ao tipo esperado...: Se você se deparar com esse erro, então provavelmente seu modelo ONNX é uma versão mais antiga do que a aceita pelo WinML começando com a compilação 17763. Recomendamos que você atualize seu pacote de conversor para a versão mais recente disponível e reconverta seu modelo para a versão 1.2 do ONNX.
Em que o WinML é executado por padrão?
Se você não especificar um dispositivo para ser executado com LearningModelDeviceKind, ou se usar LearningModelDeviceKind.Default , o sistema decidirá qual dispositivo avaliará o modelo. Esta é geralmente a CPU. Para fazer com que o WinML seja executado na GPU, especifique um dos seguintes valores ao criar o LearningModelDevice:
- LearningModelDeviceKind.DirectX
- LearningModelDeviceKind.DirectXHighPerformance
- LearningModelDeviceKind.DirectXMinPower
Observação
Use os seguintes recursos para obter ajuda com o Windows ML:
- Para fazer ou responder a perguntas técnicas sobre o Windows ML, use a tag windows-machine-learning em Stack Overflow.
- Para relatar um bug, registre um problema em nosso GitHub.