LiteRT Next를 사용한 하드웨어 가속

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

LiteRT는 그래프에서 자체 작업을 대체하여 LiteRT 그래프의 일부를 대신하는 TFLite 대리자를 사용하여 하드웨어 가속을 지원했습니다. LiteRT Next는 다음 두 단계를 통해 하드웨어 가속을 처리하여 이 프로세스를 개선합니다.

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

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

가속기 유형

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

  • NPU 가속은 단일 인터페이스 뒤에 통합된 특수 하드웨어를 지원합니다. NPU 지원은 사전 체험판 프로그램을 통해 제공됩니다.
  • GPU 가속은 WebGL 및 OpenCL 지원 기기를 지원합니다.
  • CPU 가속은 XNNPack 라이브러리를 사용하여 다양한 프로세서를 지원합니다. 이는 기본 가속 수준이며 항상 사용할 수 있습니다.

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

GPU 가속

LiteRT Next의 GPU 가속을 사용하면 GPU 친화적인 입력 및 출력 버퍼를 만들고, GPU 메모리의 데이터로 제로 복사를 실행하고, 작업을 비동기식으로 실행하여 동시 실행을 극대화할 수 있습니다. LiteRT Next는 LiteRT에서 제공하지 않는 새롭고 개선된 GPU 대리자를 사용합니다.

LiteRT를 사용하여 GPU에서 모델을 실행하려면 명시적 대리자 생성, 함수 호출, 그래프 수정이 필요합니다. LiteRT Next를 사용하면 가속기를 지정하기만 하면 됩니다.

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

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

NPU 가속

LiteRT Next는 공급업체별 컴파일러, 런타임 또는 라이브러리 종속 항목을 개별적으로 탐색하지 않고도 NPU를 활용할 수 있는 통합 인터페이스를 제공합니다. NPU 가속을 위해 LiteRT Next를 사용하면 여러 공급업체별 및 기기별 문제점을 방지하고, 실시간 및 대규모 모델 추론의 성능을 높이며, 제로 복사 하드웨어 버퍼 사용으로 메모리 사본을 최소화할 수 있습니다.

LiteRT와 함께 NPU를 사용하려면 기기 내 AI용 Play (PODAI)로 모델을 변환 및 컴파일하고 Play AI 팩 및 기능 모듈로 모델을 배포해야 합니다.