Guia do usuário do Windows no Snapdragon (5)
4 SDK de processamento neural Qualcomm® para inteligência artificial
O SDK de processamento neural Qualcomm® para IA simplifica o processo para os desenvolvedores executarem redes neurais otimizadas em dispositivos Snapdragon sem a necessidade de uma conexão em nuvem. O SDK de processamento neural da Qualcomm aproveita o suporte direto do Qualcomm® AI Engine para cada back-end de acelerador.
Como parte do Qualcomm® Artificial Intelligence Stack, o SDK facilita a integração de redes neurais em dispositivos. Ele oferece suporte a vários modelos de rede neural treinados em PyTorch , ONNX ou TensorFlow / TensorFlow Lite e pode ser executado em processadores Qualcomm® Snapdragon CPU ou DSP. O SDK inclui ferramentas para conversão e execução de modelos, APIs para posicionamento central e suporte para redes neurais convolucionais e operadores personalizados. Ao aliviar a carga de execução de redes neurais em dispositivos Qualcomm® Snapdragon, o SDK de processamento neural Qualcomm® permite que os desenvolvedores se concentrem na criação de experiências de usuário novas e inovadoras.
Principais recursos
Este SDK é uma solução para desenvolvedores que desejam realizar inferência de IA/ML diretamente em dispositivos de borda. Ao aproveitar o poder computacional da plataforma móvel Qualcomm® Snapdragon, o SDK de processamento neural Qualcomm® permite o processamento no dispositivo, proporcionando os seguintes benefícios principais:
- Latência reduzida : com o processamento no dispositivo, o tempo e a latência associados ao envio de dados para a nuvem e ao recebimento de resultados são eliminados, tornando-o ideal para aplicações em tempo real.
- Privacidade aprimorada : ao manter a computação local, os dados do usuário permanecem no dispositivo e não são transferidos para a nuvem, proporcionando um nível mais alto de privacidade e segurança.
- Economia de custos : o processamento no dispositivo elimina a necessidade de conectividade em nuvem, o que pode reduzir o custo de implantação de aplicativos de IA/ML, especialmente em áreas onde a conectividade em nuvem é limitada ou cara.
- Maior confiabilidade : ao reduzir a dependência da nuvem, o processamento no dispositivo oferece uma solução mais confiável, pois é menos suscetível a interrupções de rede ou problemas de conectividade.
- Desempenho de inferência otimizado : o SDK ajuda os desenvolvedores a otimizar o desempenho de cargas de trabalho de IA/ML em plataformas Qualcomm Snapdragon ao:
- Computação Heterogênea : O SDK aproveita o poderoso poder de computação da plataforma Snapdragon, incluindo CPU e DSP, para fornecer desempenho ideal para cargas de trabalho de inteligência artificial/aprendizado de máquina.
- Conversão de modelo otimizada : os desenvolvedores podem converter modelos de aprendizagem profunda treinados em estruturas populares como PyTorch , ONNX , TensorFlow e TensorFlow Lite em formatos otimizados para plataformas Qualcomm® Snapdragon. Isso ajuda a melhorar o desempenho e a eficiência do modelo durante a inferência.
- Calibração de baixa precisão : O SDK suporta inferência de baixa precisão, o que reduz o número de bits usados para representar parâmetros do modelo durante a inferência. Isso melhora o desempenho enquanto mantém a alta precisão, dando aos desenvolvedores a flexibilidade de equilibrar precisão e desempenho conforme necessário.
- Suporte ao operador personalizado : O SDK fornece uma API para implementar camadas personalizadas, permitindo que os desenvolvedores estendam a funcionalidade de seus modelos para atender às necessidades específicas de seus aplicativos.
- Execução eficiente : o SDK fornece APIs direcionadas aos núcleos Qualcomm® Snapdragon que melhor correspondem à experiência do usuário desejada, permitindo que os desenvolvedores obtenham desempenho ideal para suas cargas de trabalho de IA/ML.
Desenvolva aplicativos de IA usando o SDK de processamento neural da Qualcomm®
Para criar e executar aplicativos de IA para Windows no Snapdragon (WoS) ou Linux, use o SDK de processamento neural da Qualcomm® para gerar um Deep Learning Container (DLC).
Configurando o SDK de processamento neural
O SDK de processamento neural da Qualcomm precisa ser instalado na máquina host (máquina x86 de 64 bits).
Crie aplicativos de inteligência artificial
Crie aplicativos para plataformas Windows ou Linux.
Execute o aplicativo do Windows no dispositivo de destino
4.1 Desenvolver aplicativos de inteligência artificial usando o Qualcomm® Neural Processing SDK
Para criar e executar aplicativos de IA para Windows no Snapdragon (WoS) ou Linux, use o SDK de processamento neural da Qualcomm® para gerar um Deep Learning Container (DLC).
recomendar | recurso |
---|---|
Consulte a documentação do SDK do Qualcomm® Neural Processing Engine para saber como converter modelos ONNX, PyTorch, TensorFlow e TensorFlow Lite em arquivos DLC, quantizar DLC em ponto fixo de 8 ou 16 bits para execução em DSP Qualcomm® Hexagon™, analisar desempenho e Integrar redes em aplicativos. | SDK do mecanismo de processamento neural Qualcomm® Manual de referência do SDK do mecanismo de processamento neural Qualcomm® |
4.1.1 Requisitos da estação de trabalho
- Estação de trabalho Linux x86_64 para preparação, geração e quantificação de DLC
- Ubuntu 20.04
- Pitão 3.8
- Uma das seguintes estruturas
4.1.2 Requisitos do dispositivo para oferecer suporte ao SDK de processamento neural Qualcomm®
- O dispositivo Windows ARM64 cria o aplicativo e executa o binário do modelo compilado
- Janelas 11
- Visual Studio 2022 17.6.4
- SDK do Windows 11 (10.0.22621.0)
- Suporte MSBuild para conjunto de ferramentas LLVM (clang-cl)
- Compilador C++ Clang para Windows (15.0.1)
- MSVC v143 – Ferramentas de compilação VS 2022 C++ ARM64/ARM64EC – (mais recente)
- Ferramentas C++ CMake para Windows
4.2 Configurar SDK de processamento neural
O SDK de processamento neural da Qualcomm precisa ser instalado na máquina host (máquina x86 de 64 bits). Antes de gerar o DLC, configure o SDK de processamento neural da Qualcomm®
em uma máquina Linux Ubuntu 20.04 .
- Habilite o subsistema Windows para Linux no Painel de controle do Windows.
a. No Painel de Controle , procure Ativar ou desativar recursos do Windows .
b. Na caixa de diálogo Recursos do Windows, selecione Subsistema Windows para Linux . Clique em OK .
c. Clique em Reiniciar agora para reiniciar o computador. - Escolha uma das seguintes opções para instalar WSL ou Linux Ubuntu 20.04.6 nativo em um dispositivo x86_64. Isso permite que o SDK seja usado com a estrutura ONNX.
- Na Microsoft Store, clique em Obter para instalar o Ubuntu 20.04 WSL.
- Clique em Abrir e crie um ID e uma senha quando solicitado.
- Na Microsoft Store, clique em Obter para instalar o Ubuntu 20.04 WSL.
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: %UserName%
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
Windows Subsystem for Linux is now available in the Microsoft Store!
You can upgrade by running 'wsl.exe --update' or by visiting https://aka.ms/wslstorepage
Installing WSL from the Microsoft Store will give you the latest WSL updates, faster.
For more information please visit https://aka.ms/wslstoreinfo
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)
- Instale a versão mais recente do Qualcomm® Neural Processing SDK do Qualcomm® Package Manager .
NOTA Você será solicitado a instalar o Qualcomm® Package Manager 3
se ele ainda não estiver instalado .
O SDK de processamento neural será instalado na pasta C:\Qualcomm\AIStack\SNPE<build_version>. Onde <build_version> corresponde à versão de lançamento específica do SDK de processamento neural. Por exemplo, C:\Qualcomm\AIStack\SNPE\2.13.0.230730.
Nota
O caminho de instalação será diferente para cada versão do SDK. Os caminhos acima e as imagens abaixo são apenas para referência e não representam a versão do SDK instalada em sua máquina.
- Copie o SDK instalado para a pasta \wsl no dispositivo host X86_64.
Observe que
os binários x86_64-linux-clang são destinados ao uso com dispositivos host WSL ou X86_64 para Linux. Não funciona com WSL em dispositivos ARM64.
Se você encontrar problemas de permissão do snpe-sdk, use o seguinte comando para conceder permissões:
sudo chown -R $USER:$USER snpe-sdk && sudo chmod -R 777 snpe-sdk
a. Conclua as configurações das dependências do SDK, use: Qualcomm Neural Processing Engine SDK .
b. Para o restante deste guia, é importante instalar as dependências do SDK, a estrutura DNN e outros requisitos, conforme descrito na documentação do SDK acima.
-
Valide o conjunto de ferramentas SNPE no host x86_64 usando modelos de ML para preparação, transformação e quantificação de modelos.
O SDK de processamento neural Qualcomm® AI não agrupa nenhum arquivo de modelo, mas inclui scripts para baixar e converter determinados modelos para o formato Qualcomm Deep Learning Container (.dlc).a. Prepare o modelo pré-treinado e os arquivos de entrada. (Testado usando o modelo Resnet50 Onnx.)
wget --no-check-certificate -c https://github.com/onnx/models/raw/main/vision/classification/resnet/model/resnet50-v1-7.onnx python3 ~/snpe-sdk/examples/Models/inception_v3/scripts/create_inceptionv3_raws.py -i ~/snpe-sdk/examples/Models/inception_v3/data -d . -s 224 python3 ~/snpe-sdk/examples/Models/inception_v3/scripts/create_file_list.py -e "*.raw"
b. Execute o seguinte comando para converter o exemplo Resnet50 pré-treinado para o formato DLC:
snpe-onnx-to-dlc -i resnet50-v1-7.onnx --input_dim data 1,3,224,224
Por exemplo, uma mensagem semelhante à seguinte será exibida.
ce@dev:~$ snpe-onnx-to-dlc -i resnet50-v1-7.onnx --input_dim data 1,3,224,224 WARNING: The argument 'input_shapes' is deprecated. Please use 'overwrite_input_shapes' and/or 'test_input_shapes' instead. An error will be raised in the future. 2023-04-25 00:29:48,893 - 214 - INFO - Successfully simplified the onnx model in child process 2023-04-25 00:31:56,557 - 214 - INFO - Successfully receive the simplified onnx model in main process 2023-04-25 00:34:07,156 - 219 - WARNING - WARNING_GEMM: GEMM operation is not supported in the general case, attempting to interpret as FC 2023-04-25 00:34:07,696 - 214 - INFO - INFO_INITIALIZATION_SUCCESS: 2023-04-25 00:34:08,464 - 214 - INFO - INFO_CONVERSION_SUCCESS: Conversion completed successfully 2023-04-25 00:34:09,320 - 214 - INFO - INFO_WRITE_SUCCESS:
c. Quantize gráficos DSP/HTP e adicione-os ao DLC para DSP em tempo de execução. O valor SoC padrão é SM8550. Use --htp_socs para corresponder à versão do SoC HTP no dispositivo de destino
snpe-dlc-quantize --input_dlc=resnet50-v1-7.dlc --input_list=file_list.txt --enable_htp --htp_socs=sm8350 --silent
Por exemplo, uma mensagem semelhante à seguinte será exibida.
[WARN] verbose coredump is not supported [ERROR] Failed to enable verbose core dump. [INFO] DebugLog shutting down. 1.3ms [ INFO ] Initializing logging in the backend. Callback: [0xc42410], Log Level: [3] 1.9ms [ INFO ] No BackendExtensions lib provided;initializing NetRunBackend Interface 472.7ms [ INFO ] cleaning up resources for input tensors 473.2ms [ INFO ] cleaning up resources for output tensors 677.5ms [ INFO ] cleaning up resources for input tensors 678.2ms [ INFO ] cleaning up resources for output tensors 877.9ms [ INFO ] cleaning up resources for input tensors 878.6ms [ INFO ] cleaning up resources for output tensors 1075.2ms [ INFO ] cleaning up resources for input tensors 1075.9ms [ INFO ] cleaning up resources for output tensors [WARN] verbose coredump is not supported [ERROR] Failed to enable verbose core dump. [INFO] DebugLog shutting down.
d. Gere o arquivo de saída (OP_NAME.raw) em ./output/Result_0/ quando a CPU estiver em execução.
snpe-net-run --container resnet50-v1-7_quantized.dlc --input_list file_list.txt
Por exemplo, uma mensagem semelhante à seguinte será exibida.
------------------------------------------------------------------------------- Model String: N/A SNPE v2.12.1.230626174329_59328 ------------------------------------------------------------------------------- Processing DNN input(s): /home/%UserName%/model/chairs.raw Processing DNN input(s): /home/%UserName%/model/notice_sign.raw Processing DNN input(s): /home/%UserName%/model/plastic_cup.raw Processing DNN input(s): /home/%UserName%/model/trash_bin.raw Successfully executed!