7.11. NPUs

O H7 e o RT1062 executam inferência num CPU Cortex-M através do TFLM e do CMSIS-NN. O AE3 e o N6 adicionam um NPU dedicado no mesmo chip – um pipeline de tensores em silício fixo que executa os operadores pesados sem ocupar o CPU. Os dois NPUs na gama da OpenMV vêm de fornecedores diferentes e as suas cadeias de ferramentas são diferentes, mas a câmara expõe ambos através da mesma API ml.Model. O que difere é o ficheiro em disco e o runtime que o percorre.

7.11.1. AE3 – Arm Ethos-U55

O AE3 integra um NPU Arm Ethos-U55 no mesmo chip que o núcleo de aplicação Cortex-M55. O Vela é o compilador offline que prepara um modelo para ele: o Vela recebe um .tflite padrão e emite um .tflite de saída cujos subgrafos elegíveis para NPU foram convertidos num operador Ethos-U personalizado que contém os comandos de bytes que o NPU executa. Em tempo de inferência, o TFLM percorre o ficheiro normalmente; o operador Ethos-U despacha os seus comandos de bytes através do driver Ethos-U, e qualquer operador que o Vela não tenha convertido faz fallback para o CMSIS-NN no M55.

7.11.2. N6 – ST Neural-ART

O N6 integra o NPU Neural-ART da ST e executa o STAI – o runtime da ST para ele – em substituição do TFLM. O STEdgeAI é o compilador offline: recebe um modelo e emite um blob de rede relocável organizado para o hardware Neural-ART. O STAI carrega o blob a partir do ROMFS e percorre-o diretamente no NPU. A cobertura de operadores é a que o STEdgeAI suporta para o componente.

7.11.3. Mesmo script, câmara diferente

Ambos os NPUs expõem os mesmos tensores de entrada e saída com os mesmos parâmetros de quantização que um modelo executado em CPU teria. Um script escrito para uma câmara funciona noutra carregando um ficheiro de modelo preparado para o NPU dessa câmara. Os limiares de deteção, o tratamento do ROI e a ligação do pós-processador – as decisões ao nível do script – não mudam.