Aceleração de hardware com o LiteRT Next

A aceleração de hardware é o uso de hardware de computador especializado para melhorar a velocidade de execução e a eficiência de um modelo de IA. Para o LiteRT, isso envolve principalmente o uso de unidades de processamento gráfico (GPU) ou unidades de processamento neural (NPU) para inferência de IA, bem como instruções de vetor de unidades de processamento central (CPUs) de uso geral.

O LiteRT oferece suporte à aceleração de hardware pelo uso de delegados TFLite, que assumem partes do gráfico do LiteRT substituindo as próprias operações no gráfico. O LiteRT Next melhora esse processo ao processar a aceleração de hardware em duas etapas:

  1. Compilação:preparar um modelo para ser executado com um hardware específico.
  2. Dispatch:execute operações selecionadas no hardware relevante.

A fase de compilação modifica um modelo LiteRT com uma nova interface que oferece mais flexibilidade usando plug-ins do compilador. A compilação do modelo ocorre antes do tempo (AOT), antes que o gráfico seja executado, e ajusta um gráfico específico para ser executado no dispositivo.

Tipos de aceleradores

O LiteRT oferece três tipos de aceleradores: NPU, GPU e CPU.

  • A aceleração da NPU oferece suporte a hardware especializado unificado por trás de uma única interface. O suporte para NPU está disponível em um programa de acesso antecipado.
  • A aceleração da GPU oferece suporte a dispositivos com WebGL e OpenCL.
  • A aceleração de CPU oferece suporte a vários processadores usando a biblioteca XNNPack. Esse é o nível padrão de aceleração e está sempre disponível.

Esses aceleradores podem ser combinados para obter o melhor desempenho possível quando algumas operações complexas não estão disponíveis em um determinado hardware. Quando os aceleradores competem por uma operação, o LiteRT usa a seguinte ordem de precedência: NPU, GPU, CPU.

Aceleração de GPU

Com a aceleração de GPU do LiteRT Next, é possível criar buffers de entrada e saída compatíveis com GPU, conseguir zero cópia com seus dados na memória da GPU e executar tarefas de forma assíncrona para maximizar o paralelismo. O LiteRT Next usa um delegado de GPU novo e melhorado, não oferecido pelo LiteRT.

A execução de modelos na GPU com o LiteRT requer criação de delegação explícita, chamadas de função e modificações de gráfico. Com o LiteRT Next, basta especificar o acelerador:

// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
    CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));

Para mais informações sobre a aceleração de GPU, consulte Aceleração de GPU com aceleração do LiteRT.

Aceleração de NPU

O LiteRT Next oferece uma interface unificada para aproveitar as SPUs sem forçar você a navegar individualmente por compiladores, ambientes de execução ou dependências de bibliotecas específicos do fornecedor. O uso do LiteRT Next para aceleração de NPU evita muitas complicações específicas do fornecedor e do dispositivo, aumenta o desempenho para inferência de modelos grandes e em tempo real e minimiza cópias de memória com uso de buffer de hardware sem cópia.

O uso de NPUs com o LiteRT envolve converter e compilar um modelo com a Play for On-device AI (PODAI) e implantar o modelo com o Play AI Pack e o Feature Module.