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®

Insira a descrição da imagem aqui

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

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

Insira a descrição da imagem aqui

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 .

  1. 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 .
    Insira a descrição da imagem aqui
    c. Clique em Reiniciar agora para reiniciar o computador.
  2. 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.
      Insira a descrição da imagem aqui
    • Clique em Abrir e crie um ID e uma senha quando solicitado.
      Insira a descrição da imagem aqui

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)
  1. 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.

Insira a descrição da imagem aqui

  1. Copie o SDK instalado para a pasta \wsl no dispositivo host X86_64.
    Insira a descrição da imagem aqui

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.

Insira a descrição da imagem aqui

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.

  1. 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!
    
    

Acho que você gosta

Origin blog.csdn.net/weixin_38498942/article/details/132838036
Recomendado
Clasificación