Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Integrado

Otimizando AI para aplicativos incorporados


Em meu blog anterior, falei sobre como a demanda por interfaces baseadas em IA tornou-se quase inevitável - e que adicionar uma interface baseada em IA como face-id para autorizar o acesso a uma máquina pode à primeira vista parecer um grande salto, não tem ser tão difícil quanto você pode pensar. Há uma grande variedade de plataformas de IA disponíveis, muitas opções de treinamento e até mesmo aplicativos de código aberto, como aquele exemplo de identificação de rosto. Você pode começar a testar rapidamente com um protótipo que pode ser executado em seu PC.


(Fonte:CEVA)

Restrições

Mover uma rede treinada para seu aplicativo incorporado pode parecer outro grande obstáculo. Redes treinadas em PC ou nuvem não otimizam muito para uso de memória ou energia. Eles podem usar ponto flutuante ou palavras duplas para cálculos de rede e se apoiarão fortemente em acessos de memória fora do chip enquanto processam janelas deslizantes sobre uma imagem. Isso não é uma preocupação para um protótipo executado em um PC de alto desempenho conectado à tomada, mas você precisa ser muito mais econômico em seu aplicativo final, sem comprometer o desempenho.

O essencial da otimização

Uma etapa fundamental na otimização é chamada de quantização. Trocar pesos de ponto flutuante para ponto fixo e reduzir o tamanho de ponto fixo, digamos de ponto flutuante de 32 bits para inteiros de 8 bits, afeta o tamanho não apenas dos pesos, mas também dos valores de computação intermediários. Isso por si só pode reduzir significativamente o consumo de memória, com pouco impacto perceptível na qualidade do reconhecimento na maioria dos casos.

Uma segunda manipulação é explorar a dispersão dos pesos com impacto mínimo de precisão. Esta prática aproveitará as vantagens dos pesos que estão próximos de zero e os arredondará para zero, ao mesmo tempo que mantém um controle do impacto da precisão. Pesos são usados ​​na multiplicação de somas parciais, um exercício inútil quando um dos fatores é zero, portanto, não há necessidade de realizar a operação.

Em implementações práticas, as imagens são processadas de forma incremental, portanto, os pesos devem ser atualizados conforme a janela de cálculo se move pela imagem. Isso pode gerar muitas atualizações e muito tráfego. Forçando uma grande porcentagem dos pesos a ser zero, a matriz de pesos pode ser compactada, tornando possível armazenar toda ou grande parte da matriz na SRAM no chip, para descompactar sob demanda. Isso, por sua vez, minimiza a necessidade de ir para a memória principal e, portanto, aumenta o desempenho e reduz a energia. Também reduz o tráfego no chip acidental ao carregar pesos. Menos contenção de tráfego significa maior rendimento.

Mais um fator deve ser considerado. Como a maioria dos aplicativos complexos, as redes neurais dependem de bibliotecas sofisticadas. Você precisará usar uma biblioteca projetada para uso em ambientes de microcontrolador e compilador para a plataforma de sua escolha. Um bom ponto de partida pode ser uma biblioteca de código aberto, como TensorFlow Lite, mas para a utilização total do microcontrolador, será necessária uma solução personalizada e dedicada.

Claro, saber o que você tem que fazer não torna isso fácil. Agora você precisa encontrar uma plataforma que simplifique essas operações e forneça bibliotecas otimizadas para hardware.

Como posso tornar este fluxo fácil de usar?

O que você quer é um fluxo onde você pode pegar a rede que você treinou em sua plataforma específica, TensorFlow, por exemplo, e compilá-lo diretamente em sua solução incorporada, sem nenhuma intervenção a não ser discando alguns requisitos básicos. Claro, você também deseja a opção de ser capaz de otimizar ainda mais a mão, talvez definindo diferentes níveis de quantização em planos diferentes. Talvez experimentando limites de peso versus tamanhos de memória no chip. E você quer bibliotecas otimizadas para o hardware e hardware otimizado para as bibliotecas.

Plataformas comprovadas de AI, como CDNN da CEVA, são projetadas para fornecer esse tipo de fluxo. O CDNN oferece um conjunto de ferramentas de processador offline para quantização e geração de tarefas de tempo de execução, bem como bibliotecas de tempo de execução sob medida para CEVA DSP e aceleradores de hardware de usuários do cliente. A solução da CEVA é compatível com todos os formatos de modelo de IA populares, incluindo TensorFlow Lite, ONNX, Caffe e outros.



Conteúdos Relacionados:

Para obter mais informações sobre o Embedded, assine o boletim informativo semanal por e-mail da Embedded.



Integrado

  1. VersaLogic lança computadores de classe de servidor para aplicativos incorporados
  2. Infineon lança série de potência embarcada TLE985x para aplicações automotivas
  3. Sundance:Módulo de processador embutido VCS-1 para aplicações de robótica de precisão
  4. PPA para aplicativos de E-Mobility
  5. 4 dicas para otimizar seu jato de água
  6. Aplicações ideais para atuadores pneumáticos
  7. 4 tipos de ferramentas para aplicações de mineração
  8. Aplicações típicas para freios de pinça
  9. Aplicativos militares para ligas de bronze
  10. Aplicativos para Alumínio Bronze C63200