IA na Edge
A inteligência artificial (IA) está se tornando rapidamente uma parte integrante de como trabalhamos e vivemos. No entanto, grande parte dessa inteligência ainda está vinculada à nuvem, acessada por meio de APIs e interfaces web. Esse modelo nem sempre se adapta às necessidades atuais. As empresas estão cada vez mais interessadas em trazer a IA para mais perto de onde ela é realmente utilizada – em dispositivos como wearables, câmeras inteligentes e outros sistemas de borda de baixo consumo. Executar a IA localmente pode reduzir a latência, melhorar a privacidade e desbloquear novas capacidades em tempo real, mas também introduz um novo desafio: como executar modelos complexos de forma eficiente em hardware restrito com memória, processamento e potência limitados?
A PyTorch se tornou o principal framework para treinamento e inferência de modelos de IA na nuvem. O ExecuTorch estende esse ecossistema para trazer a inferência de IA local para a borda. Ele pega um modelo PyTorch, exporta-o para um formato leve e o executa por meio de um tempo de execução projetado especificamente para inferência de borda. Se você já estiver familiarizado com a PyTorch, o apelo é claro: você permanece no mesmo ecossistema, enquanto ganha um caminho de implantação mais adequado para dispositivos reais. Para tornar isso prático, a Arm criou um conjunto de laboratórios práticos Jupyter que percorrem o processo de implantação – desde a inferência de CPU em um Raspberry Pi até a aceleração de hardware em Ethos-U NPUs.
Se você já estiver familiarizado com a execução da PyTorch em dispositivos de borda, como o Raspberry Pi 5, exploramos isso em nosso curso “Otimizando IA Gerativa na Arm”. Embora isso funcione bem, o Pi se encaixa na categoria de computadores de placa única (SBCs), com recursos significativamente maiores do que muitos sistemas incorporados ou de IoT de produção. Para alvos mais restritos – como microcontroladores Cortex-M – a execução da PyTorch não é viável devido ao seu tamanho e dependências. O ExecuTorch resolve isso e permite a implantação eficiente de modelos PyTorch em dispositivos de borda. Isso é alcançado por meio da exportação de um modelo para um artefato .pte mínimo que contém tanto os pesos do modelo quanto um gráfico de computação estático.
Essa etapa de exportação é seguida pela redução, onde o gráfico do modelo é transformado em uma forma compatível com o backend. É aqui que começa a otimização consciente de hardware. O artefato resultante é extremamente portátil e pode ser executado em uma variedade de dispositivos. Além da portabilidade do .pte, há outros benefícios. Mesmo em dispositivos como o Raspberry Pi, que podem executar modelos PyTorch sem precisar do ExecuTorch, melhorias de desempenho podem ser encontradas por meio do uso do ExecuTorch. No entanto, o desempenho depende fortemente de como o modelo é executado. O ExecuTorch alcança desempenho delegando partes do modelo para backends otimizados.
Nos laboratórios, comparamos a inferência de um modelo de transformador OPT-125M em um Raspberry Pi 5. O gráfico abaixo mostra uma redução significativa de latência ao usar o ExecuTorch com o XNNPACK. É importante notar que a delegação de backend não ocorre por padrão. Executar o ExecuTorch sem o XNNPACK geralmente resultará em uma latência mais alta em comparação com a PyTorch (que tem suas próprias otimizações KleidiAI), embora você ainda se beneficie de uma redução da pegada de tempo de execução e melhor portabilidade.
Para ir além, podemos direcionar a aceleração de hardware usando Ethos-U NPUs, geralmente emparelhados com CPUs Cortex-A ou Cortex-M. Nesse ponto, a execução se torna heterogênea. Em vez de executar o modelo inteiro em um processador, o ExecuTorch divide o gráfico: o Ethos-U opera em modelos de números inteiros quantizados (geralmente INT8), então os modelos devem ser quantizados antes da delegação. O ExecuTorch fornece o framework de implantação, mas a seleção de backend determina como o hardware é utilizado de forma eficaz.
Em resumo, o ExecuTorch é uma ferramenta poderosa para implantação de modelos de IA em dispositivos de borda. Com a capacidade de delegar partes do modelo para backends otimizados, como o XNNPACK, e a capacidade de direcionar a aceleração de hardware com Ethos-U NPUs, o ExecuTorch oferece uma solução completa para a implantação de modelos de IA em dispositivos de borda. Com a ajuda dos laboratórios práticos Jupyter, os desenvolvedores podem aprender a usar o ExecuTorch de forma eficaz e a aproveitar ao máximo o potencial dos dispositivos de borda.
Além disso, o ExecuTorch também fornece uma série de benefícios adicionais, como a capacidade de reduzir a latência e melhorar a privacidade, tornando-o uma ferramenta ideal para aplicações que exigem processamento de IA em tempo real. Com a crescente demanda por dispositivos de borda inteligentes e conectados, o ExecuTorch se destaca como uma solução chave para permitir a implantação eficiente de modelos de IA em uma variedade de dispositivos.
Em conclusão, o ExecuTorch é uma ferramenta fundamental para qualquer desenvolvedor que deseje implantar modelos de IA em dispositivos de borda. Com sua capacidade de delegar partes do modelo para backends otimizados e direcionar a aceleração de hardware com Ethos-U NPUs, o ExecuTorch oferece uma solução completa e eficaz para a implantação de modelos de IA em dispositivos de borda. Além disso, os laboratórios práticos Jupyter fornecidos pela Arm oferecem uma ótima oportunidade para os desenvolvedores aprenderem a usar o ExecuTorch de forma eficaz e a aproveitar ao máximo o potencial dos dispositivos