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의 소스 코드를 참고하세요.