LiteRT를 사용한 하드웨어 가속

하드웨어 가속은 특수 컴퓨터 하드웨어를 사용하여 AI 모델의 실행 속도와 효율성을 개선하는 것입니다. LiteRT의 경우 주로 AI 추론을 위해 그래픽 처리 장치 (GPU) 또는 신경망 처리 장치 (NPU)를 사용하고 범용 중앙 처리 장치 (CPU) 벡터 명령어를 사용합니다.

LiteRT 컴파일된 모델 API는 다음 두 단계로 가속을 처리합니다.

  1. 컴파일: 특정 하드웨어에서 실행할 모델을 준비합니다.
  2. 디스패치: 관련 하드웨어에서 선택한 작업을 실행합니다.

컴파일 단계에서는 컴파일러 플러그인을 통해 더 많은 유연성을 제공하는 새 인터페이스로 LiteRT 모델을 수정합니다. 모델 컴파일은 그래프가 실행되기 전 미리(AOT) 발생하며 기기에서 실행되도록 특정 그래프를 맞춤설정합니다.

가속기 유형

LiteRT는 NPU, GPU, CPU의 세 가지 유형의 가속기를 제공합니다.

  • NPU: 현재 Qualcomm AI Engine Direct 및 MediaTek NeuroPilot의 통합 인터페이스입니다.
  • GPU: 컴파일된 모델 API를 사용하는 OpenCL 백엔드와 WebGPU 및 Metal 백엔드
  • CPU: XNNPACK 최적화 실행이 기본값이며 항상 사용할 수 있습니다.

이러한 가속기는 특정 하드웨어에서 일부 복잡한 작업을 사용할 수 없는 경우 가능한 최고의 성능을 얻기 위해 결합될 수 있습니다. 가속기가 작업을 두고 경쟁하는 경우 LiteRT는 NPU, GPU, CPU 순으로 우선순위를 사용합니다.

GPU 가속

LiteRT GPU 가속을 사용하면 GPU 친화적인 입력 및 출력 버퍼를 만들고, GPU 메모리의 데이터로 제로 카피를 달성하고, 작업을 비동기식으로 실행하여 병렬 처리를 극대화할 수 있습니다. 위임 플러밍이 필요하지 않습니다. 컴파일 시간에 가속기를 지정하기만 하면 됩니다.

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

GPU 가속에 관한 자세한 내용은 LiteRT를 사용한 GPU 가속을 참고하세요.

NPU 가속

LiteRT는 공급업체별 컴파일러, 런타임 또는 라이브러리 종속 항목을 개별적으로 탐색하지 않고도 NPU를 활용할 수 있는 통합 인터페이스를 제공합니다. AOT 및 기기 내 컴파일 경로 모두에 Qualcomm 및 MediaTek NPU를 지원합니다.

LiteRT로 NPU를 사용하는 경우 일반적으로 Play 온디바이스 AI (PODAI)로 모델을 변환하고 컴파일한 후 Play AI Pack 및 기능 모듈로 모델을 배포합니다.