Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O WinMLRunner é uma ferramenta para testar se um modelo é executado com êxito quando avaliado com as APIs do Windows ML. Você também pode capturar o tempo de avaliação e o uso da memória na GPU e/ou na CPU. Modelos no formato .onnx ou .pb podem ser avaliados em que as variáveis de entrada e saída são tensores ou imagens. Há duas maneiras de usar o WinMLRunner:
- Baixe a ferramenta python de linha de comando.
- Usar no WinML Dashboard. Para obter mais informações, consulte a documentação do Painel do WinML
Executar um modelo
Primeiro, abra a ferramenta python baixada. Navegue até a pasta que contém WinMLRunner.exee execute o executável, conforme mostrado abaixo. Substitua o local de instalação pelo que corresponde ao seu:
.\WinMLRunner.exe -model SqueezeNet.onnx
Você também pode executar uma pasta de modelos, com um comando como o seguinte.
WinMLRunner.exe -folder c:\data -perf -iterations 3 -CPU`\
Executar um modelo com sucesso
Veja abaixo um exemplo de como executar um modelo com êxito. Observe como primeiro o modelo carrega e gera metadados do modelo. Em seguida, o modelo é executado na CPU e na GPU separadamente, gerando o sucesso da associação, o sucesso da avaliação e a saída do modelo.
Executar um modelo sem sucesso
Veja abaixo um exemplo de como executar um modelo com parâmetros incorretos. Observe a saída COM FALHA ao avaliar na GPU.
Seleção e otimização do dispositivo
Por padrão, o modelo é executado na CPU e na GPU separadamente, mas você pode especificar um dispositivo com um sinalizador -CPU ou -GPU. Aqui está um exemplo de como executar um modelo três vezes usando apenas a CPU:
WinMLRunner.exe -model c:\data\concat.onnx -iterations 3 -CPU
Registrar dados de desempenho
Use o sinalizador -perf para capturar dados de desempenho. Aqui está um exemplo de como executar todos os modelos na pasta de dados na CPU e GPU separadamente três vezes e capturar dados de desempenho:
WinMLRunner.exe -folder c:\data iterations 3 -perf
Medidas de desempenho
As seguintes métricas de desempenho serão enviadas para a linha de comando e para o arquivo .csv para cada operação de carga, vinculação e avaliação.
- Tempo do relógio de parede (ms): o tempo real decorrido entre o início e o fim de uma operação.
- Tempo de GPU (ms): tempo para uma operação ser passada da CPU para a GPU e executar na GPU (observação: Load() não é executado na GPU).
- Hora da CPU (ms): hora de uma operação ser executada na CPU.
- Uso dedicado e compartilhado de memória (MB): Uso médio de kernel e memória no nível do usuário (em MB) durante a avaliação na CPU ou GPU.
- Memória do conjunto de trabalho (MB): A quantidade de memória DRAM necessária durante a avaliação do processo na CPU. Memória dedicada (MB) – a quantidade de memória que foi usada na VRAM da GPU dedicada.
- Memória Compartilhada (MB): A quantidade de memória que foi usada no DRAM pela GPU.
Exemplo de saída de desempenho:
Testar as entradas de exemplo
Execute-se um modelo na CPU e GPU separadamente, vinculando a entrada à CPU e à GPU separadamente (4 execuções totais):
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPU -CPUBoundInput -GPUBoundInput
Execute um modelo na CPU com a entrada associada à GPU e carregada como uma imagem RGB:
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPUBoundInput -RGB
Capturar os logs de rastreamento
Para capturar os logs de rastreamento usando a ferramenta, use os comandos logman junto com o sinalizador de depuração:
logman start winml -ets -o winmllog.etl -nb 128 640 -bs 128logman update trace winml -p {BCAD6AEE-C08D-4F66-828C-4C43461A033D} 0xffffffffffffffff 0xff -ets WinMLRunner.exe -model C:\Repos\Windows-Machine-Learning\SharedContent\models\SqueezeNet.onnx -debuglogman stop winml -ets
O arquivo winmllog.etl será exibido no mesmo diretório que o WinMLRunner.exe.
Lendo os logs de rastreamento
Usando o traceprt.exe, execute o comando a seguir na linha de comando.
tracerpt.exe winmllog.etl -o logdump.csv -of CSV
Em seguida, abra o logdump.csv arquivo.
Como alternativa, você pode usar o Analisador de Desempenho do Windows (do Visual Studio). Inicie o Analisador de Desempenho do Windows e abra winmllog.etl.
Observe que -CPU, -GPU, -GPUHighPerformance, -GPUMinPower -BGR, -RGB, -tensor, -CPUBoundInput, -GPUBoundInput não são mutuamente exclusivos (ou seja, você pode combinar quantos desejar executar o modelo com configurações diferentes).
Carregamento de DLL dinâmico
Se você quiser executar o WinMLRunner com outra versão do WinML (por exemplo, comparar o desempenho com uma versão mais antiga ou testar uma versão mais recente), basta colocar os arquivos windows.ai.machinelearning.dll e directml.dll na mesma pasta que WinMLRunner.exe. O WinMLRunner procurará por essas DLLs primeiro e retornará ao C:/Windows/System32 se não as encontrar.
Problemas conhecidos
- As entradas de sequência/mapa ainda não têm suporte (o modelo é apenas ignorado, portanto, ele não bloqueia outros modelos em uma pasta);
- Não é possível executar de forma confiável vários modelos com o argumento -folder com dados reais. Como só podemos especificar 1 entrada, o tamanho da entrada seria incompatível com a maioria dos modelos. No momento, o argumento -folder só funciona bem com os dados de lixo;
- Atualmente, não há suporte para a geração de entrada de lixo como GRAY ou YUV. Idealmente, o pipeline de dados de lixo do WinMLRunner deve dar suporte a todos os tipos de entradas dadas ao winml.