L'accelerazione hardware è l'utilizzo di hardware specializzato per migliorare la velocità e l'efficienza di esecuzione di un modello di AI. Per LiteRT, ciò comporta principalmente l'utilizzo di unità di elaborazione grafica (GPU) o unità di elaborazione neurale (NPU) per l'inferenza dell'AI, nonché istruzioni vettoriali per unità di elaborazione centrale (CPU) per uso generico.
L'API Compiled Model di LiteRT gestisce l'accelerazione in due passaggi:
- Compilazione:prepara un modello da eseguire con un hardware specifico.
- Invio:esegui le operazioni selezionate sull'hardware pertinente.
La fase di compilazione modifica un modello LiteRT con una nuova interfaccia che offre maggiore flessibilità tramite i plug-in del compilatore. La compilazione del modello avviene in anticipo (AOT), prima dell'esecuzione del grafico, e adatta un grafico specifico da eseguire sul dispositivo.
Tipi di acceleratori
LiteRT fornisce tre tipi di acceleratori: NPU, GPU e CPU.
- NPU: interfaccia unificata per Qualcomm AI Engine Direct e MediaTek NeuroPilot oggi.
- GPU:backend OpenCL più backend WebGPU e Metal che utilizzano l'API Compiled Model.
- CPU:l'esecuzione ottimizzata per XNNPACK è l'impostazione predefinita ed è sempre disponibile.
Questi acceleratori possono essere combinati per ottenere le migliori prestazioni possibili quando alcune operazioni complesse non sono disponibili su un determinato hardware. Quando gli acceleratori competono per un'operazione, LiteRT utilizza il seguente ordine di precedenza: NPU, GPU, CPU.
Accelerazione GPU
Con l'accelerazione GPU LiteRT, puoi creare buffer di input e output compatibili con la GPU, ottenere la copia zero con i tuoi dati nella memoria GPU ed eseguire le attività in modo asincrono per massimizzare il parallelismo. Non è necessario alcun plumbing del delegato. Basta specificare l'acceleratore in fase di compilazione:
// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));
Per saperne di più sull'accelerazione GPU, consulta Accelerazione GPU con LiteRT.
Accelerazione NPU
LiteRT fornisce un'interfaccia unificata per sfruttare le NPU senza costringerti a navigare individualmente tra compilatori, runtime o dipendenze di librerie specifici del fornitore. Supporta le NPU Qualcomm e MediaTek per i percorsi di compilazione AOT e on-device.
L'utilizzo di NPU con LiteRT in genere comporta la conversione e la compilazione di un modello con Play for On-device AI (PODAI) e il deployment del modello con Play AI Pack e il modulo delle funzionalità.