LiteRT CompiledModel Kotlin API

LiteRT CompiledModel API는 Kotlin에서 사용할 수 있으며, Android 개발자에게 고급 API를 통해 원활한 가속기 우선 환경을 제공합니다. 예시는 이미지 분할 Kotlin 앱을 참고하세요.

다음 가이드에서는 CompiledModel Kotlin API의 기본 CPU 추론을 보여줍니다. 고급 가속 기능은 GPU 가속NPU 가속 가이드를 참고하세요.

Maven 패키지 추가

Android 프로젝트에 LiteRT Maven 패키지를 추가합니다.

dependencies {
  ...
  implementation `com.google.ai.edge.litert:litert:2.1.0`
}

기본 추론

CompiledModel 만들기

모델과 원하는 하드웨어 가속으로 런타임을 초기화합니다.

val  model =
  CompiledModel.create(
    context.assets,
    "mymodel.tflite",
    CompiledModel.Options(Accelerator.CPU),
    env,
  )

입력 및 출력 버퍼 만들기

추론을 위해 모델에 공급할 입력 데이터와 추론을 실행한 후 모델이 생성하는 출력 데이터를 저장하는 데 필요한 데이터 구조 (버퍼)를 만듭니다.

val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()

CPU 메모리를 사용하는 경우 첫 번째 입력 버퍼에 직접 데이터를 써서 입력을 채웁니다.

inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })

모델 호출

입력 및 출력 버퍼를 제공하고 모델을 실행합니다.

model.run(inputBuffers, outputBuffers)

출력 가져오기

메모리에서 모델 출력을 직접 읽어 출력을 가져옵니다.

val outputFloatArray = outputBuffers[0].readFloat()

TensorBuffer 사용

LiteRT는 텐서 버퍼 API (TensorBuffer)를 사용하여 CompiledModel로 들어오고 나가는 데이터 흐름을 처리하여 I/O 버퍼 상호 운용성을 기본적으로 지원합니다. 텐서 버퍼 API는 버퍼를 쓰고(Write<T>()) 읽고 (Read<T>()) 잠그는 기능을 제공합니다.

Tensor Buffer API가 구현되는 방식을 더 자세히 알아보려면 TensorBuffer.kt의 소스 코드를 참고하세요.