Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
WinMLRunner é uma ferramenta para testar se um modelo é executado com êxito quando avaliado com as APIs de ML do Windows. Você também pode capturar o tempo de avaliação e o uso de memória na GPU e/ou CPU. Modelos em formato .onnx ou .pb podem ser avaliados onde as variáveis de entrada e saída são tensores ou imagens. Existem 2 maneiras de usar o WinMLRunner:
- Faça o download da ferramenta python de linha de comando.
- Use dentro do Painel do WinML. Para obter mais informações , consulte a documentação do WinML Dashboard
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. Certifique-se de substituir 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`\
Executando um bom modelo
Abaixo está um exemplo de execução bem-sucedida de um modelo. Observe como primeiro o modelo carrega e produz metadados do modelo. Em seguida, o modelo é executado na CPU e GPU separadamente, emitindo o sucesso da ligação, o sucesso da avaliação e a saída do modelo.
Executando um modelo inadequado
Abaixo está um exemplo de execução de um modelo com parâmetros incorretos. Observe a saída FAILED ao avaliar na GPU.
Seleção e otimização de dispositivos
Por padrão, o modelo é executado na CPU e GPU separadamente, mas você pode especificar um dispositivo com um sinalizador -CPU ou -GPU. Aqui está um exemplo de execução de um modelo 3 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 execução de todos os modelos na pasta de dados na CPU e GPU separadamente 3 vezes e captura de dados de desempenho:
WinMLRunner.exe -folder c:\data iterations 3 -perf
Medições de desempenho
As seguintes medições de desempenho serão enviadas para a linha de comando e para o arquivo .csv para cada operação de carga, associação e avaliação.
- Tempo de relógio de parede (ms): o tempo real decorrido entre o início e o fim de uma operação.
- Tempo da GPU (ms): tempo para que uma operação seja passada da CPU para a GPU e executada na GPU (nota: Load() não é executado na GPU).
- Tempo da CPU (ms): tempo para uma operação ser executada na CPU.
- Uso de memória dedicada e compartilhada (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 que o processo na CPU exigiu durante a avaliação. Memória dedicada (MB) - A quantidade de memória que foi usada na VRAM da GPU dedicada.
- Memória partilhada (MB): A quantidade de memória que foi usada na DRAM pela GPU.
Exemplo de resultado de desempenho.
Entradas de amostras de teste
Execute um modelo na CPU e GPU separadamente e ligando a entrada à CPU e à GPU separadamente (4 execuções no total):
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPU -CPUBoundInput -GPUBoundInput
Execute um modelo na CPU com a entrada vinculada à GPU e carregada como uma imagem RGB:
WinMLRunner.exe -model c:\data\SqueezeNet.onnx -CPU -GPUBoundInput -RGB
Capturando registos de rastreio
Se quiser capturar logs de rastreamento usando a ferramenta, você pode usar comandos logman em conjunto 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 aparecerá no mesmo diretório que o WinMLRunner.exe.
Lendo os logs de rastreamento
Usando o traceprt.exe, execute o seguinte comando 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 o 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 quiser para executar o modelo com diferentes configurações).
Carregamento dinâmico de DLL
Se você quiser executar o WinMLRunner com outra versão do WinML (por exemplo, comparando o desempenho com uma versão mais antiga ou testando uma versão mais recente), basta colocar os arquivos windows.ai.machinelearning.dll e directml.dll na mesma pasta que WinMLRunner.exe. WinMLRunner irá procurar estes ficheiros DLL primeiro e recorrer ao C:/Windows/System32 se não os encontrar.
Problemas conhecidos
- As entradas de sequência/mapa ainda não são suportadas (o modelo é simplesmente ignorado, por isso não bloqueia outros modelos numa pasta);
- Não podemos 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. Neste momento, usar o argumento -folder só funciona bem com dados irrelevantes;
- A geração de entrada de lixo como Gray ou YUV não é suportada atualmente. Idealmente, o pipeline de dados inúteis do WinMLRunner deve suportar todos os tipos de entradas que podemos dar ao WinML.