Android용 LiteRT

LiteRT를 사용하면 Android 앱에서 TensorFlow, PyTorch, JAX 모델을 실행할 수 있습니다. LiteRT 시스템은 하드웨어 가속 옵션을 비롯하여 Android에서 모델을 빠르고 효율적으로 실행하기 위한 사전 빌드된 맞춤설정 가능한 실행 환경을 제공합니다.

예를 들어 LiteRT를 사용하는 Android 애플리케이션은 LiteRT 샘플 저장소를 참고하세요.

머신러닝 모델

LiteRT는 더 작고 휴대 가능하며 더 효율적인 머신러닝 모델 형식으로 변환된 TensorFlow, PyTorch, JAX 모델을 사용합니다. Android에서 LiteRT와 함께 사전 빌드된 모델을 사용하거나 자체 모델을 빌드하여 LiteRT 형식으로 변환할 수 있습니다.

이 페이지에서는 이미 빌드된 머신러닝 모델을 사용하는 방법을 설명하며 모델 빌드, 학습, 테스트, 변환에 대해서는 다루지 않습니다. 모델 페이지에서 LiteRT용 머신러닝 모델 선택, 수정, 빌드, 변환에 대해 자세히 알아보세요.

Android에서 모델 실행

Android 앱 내에서 실행되는 LiteRT 모델은 데이터를 수신하고, 데이터를 처리하고, 모델의 로직에 따라 예측을 생성합니다. LiteRT 모델을 실행하려면 특수 런타임 환경이 필요하며 모델에 전달되는 데이터는 텐서라는 특정 데이터 형식이어야 합니다. 모델이 데이터를 처리할 때(추론 실행이라고 함) 예측 결과를 새 텐서로 생성하고 Android 앱에 전달하여 앱이 사용자에게 결과를 표시하거나 추가 비즈니스 로직을 실행하는 등의 작업을 할 수 있도록 합니다.

Android 앱의 LiteRT 모델에 관한 기능 실행 흐름

그림 1. Android 앱의 LiteRT 모델에 관한 기능 실행 흐름

기능 설계 수준에서 Android 앱이 LiteRT 모델을 실행하려면 다음 요소가 필요합니다.

  • 모델 실행을 위한 LiteRT 런타임 환경
  • 데이터를 텐서로 변환하는 모델 입력 핸들러
  • 출력 결과 텐서를 수신하고 이를 예측 결과로 해석하는 모델 출력 핸들러

다음 섹션에서는 LiteRT 라이브러리와 도구가 이러한 기능 요소를 제공하는 방법을 설명합니다.

LiteRT로 앱 빌드

이 섹션에서는 Android 앱에서 LiteRT를 구현하는 데 권장되는 가장 일반적인 경로를 설명합니다. 런타임 환경개발 라이브러리 섹션에 가장 주의를 기울여야 합니다. 맞춤 모델을 개발한 경우 고급 개발 경로 섹션을 검토하세요.

런타임 환경 옵션

Android 앱에서 모델을 실행하기 위해 런타임 환경을 사용 설정하는 방법에는 여러 가지가 있습니다. 다음은 권장되는 옵션입니다.

일반적으로 Google Play 서비스에서 제공하는 런타임 환경을 사용해야 합니다. 동적으로 로드되므로 표준 환경보다 공간 효율이 높고 앱 크기가 더 작기 때문입니다. 또한 Google Play 서비스는 LiteRT 런타임의 최신 안정화 버전을 자동으로 사용하기 때문에 시간이 지남에 따라 추가 기능과 향상된 성능을 제공합니다. Google Play 서비스가 포함되지 않은 기기에서 앱을 제공하거나 ML 런타임 환경을 면밀하게 관리해야 하는 경우 표준 LiteRT 런타임을 사용해야 합니다. 이 옵션은 앱에 추가 코드를 번들로 묶어 앱의 다운로드 크기가 증가하는 대신 앱의 ML 런타임을 더 효과적으로 제어할 수 있도록 합니다.

앱 개발 환경에 LiteRT 개발 라이브러리를 추가하여 Android 앱에서 이러한 런타임 환경에 액세스합니다. 앱에서 표준 런타임 환경을 사용하는 방법에 관한 자세한 내용은 다음 섹션을 참고하세요.

라이브러리

Google Play 서비스를 사용하여 Interpreter API에 액세스할 수 있습니다. Android 앱에서 LiteRT 코어지원 라이브러리를 사용할 수 있습니다. LiteRT 라이브러리 및 런타임 환경 사용에 관한 프로그래밍 세부정보는 Android용 개발 도구를 참고하세요.

모델 가져오기

Android 앱에서 모델을 실행하려면 LiteRT 형식의 모델이 필요합니다. 사전 빌드된 모델을 사용하거나 모델을 빌드한 후 Lite 형식으로 변환할 수 있습니다. Android 앱의 모델을 가져오는 방법에 관한 자세한 내용은 LiteRT 모델 페이지를 참고하세요.

입력 데이터 처리

ML 모델에 전달하는 모든 데이터는 특정 데이터 구조(흔히 텐서의 형상이라고 함)를 가진 텐서여야 합니다. 모델로 데이터를 처리하려면 앱 코드가 데이터를 이미지, 텍스트, 오디오 데이터와 같은 기본 형식에서 모델에 필요한 모양의 텐서로 변환해야 합니다.

추론 실행

모델을 통해 데이터를 처리하여 예측 결과를 생성하는 것을 추론 실행이라고 합니다. Android 앱에서 추론을 실행하려면 LiteRT 런타임 환경, 모델, 입력 데이터가 필요합니다.

모델이 특정 기기에서 추론을 생성할 수 있는 속도는 처리되는 데이터의 크기, 모델의 복잡성, 사용 가능한 컴퓨팅 리소스(예: 메모리, CPU) 또는 가속기라고 하는 특수 프로세서에 따라 다릅니다. 머신러닝 모델은 대리인이라는 LiteRT 하드웨어 드라이버를 사용하여 그래픽 처리 장치 (GPU) 및 텐서 처리 장치 (TPU)와 같은 이러한 특수 프로세서에서 더 빠르게 실행할 수 있습니다. 모델 처리의 대리자 및 하드웨어 가속에 관한 자세한 내용은 하드웨어 가속 개요를 참고하세요.

출력 결과 처리

모델은 예측 결과를 텐서로 생성하며, Android 앱에서 작업을 실행하거나 사용자에게 결과를 표시하여 이를 처리해야 합니다. 모델 출력 결과는 이미지 분류의 단일 결과 (0 = 개, 1 = 고양이, 2 = 새)에 해당하는 숫자처럼 간단할 수도 있고, 예측 신뢰도 등급이 0과 1 사이인 이미지의 여러 분류된 객체에 대한 여러 경계 상자와 같이 훨씬 더 복잡한 결과일 수도 있습니다.

고급 개발 경로

보다 정교하고 맞춤설정된 LiteRT 모델을 사용하는 경우 위에 설명된 것보다 고급 개발 접근 방식을 사용해야 할 수 있습니다. 다음 섹션에서는 Android 앱에서 LiteRT용 모델을 실행하고 개발하는 고급 기법을 설명합니다.

고급 런타임 환경

LiteRT용 표준 런타임 및 Google Play 서비스 런타임 환경 외에도 Android 앱에서 사용할 수 있는 추가 런타임 환경이 있습니다. 이러한 환경은 LiteRT용 표준 런타임 환경에서 지원되지 않는 ML 작업을 사용하는 머신러닝 모델이 있는 경우에 가장 많이 사용됩니다.

LiteRT Flex 런타임을 사용하면 모델에 필요한 특정 연산자를 포함할 수 있습니다. 모델을 실행하기 위한 고급 옵션으로 Android용 LiteRT를 빌드하여 TensorFlow 머신러닝 모델을 실행하는 데 필요한 연산자와 기타 기능을 포함할 수 있습니다. 자세한 내용은 Android용 LiteRT 빌드를 참고하세요.

C 및 C++ API

LiteRT는 C 및 C++를 사용하여 모델을 실행하기 위한 API도 제공합니다. 앱에서 Android NDK를 사용하는 경우 이 API를 사용하는 것이 좋습니다. 여러 플랫폼 간에 코드를 공유하려는 경우에도 이 API를 사용하는 것이 좋습니다. 이 개발 옵션에 관한 자세한 내용은 개발 도구 페이지를 참고하세요.

서버 기반 모델 실행

일반적으로 Android 기기에서 앱의 모델을 실행하여 사용자에게 지연 시간 단축과 향상된 데이터 개인 정보 보호를 제공해야 합니다. 하지만 기기가 아닌 클라우드 서버에서 모델을 실행하는 것이 더 나은 해결책인 경우도 있습니다. 예를 들어 사용자의 Android 기기에 맞는 크기로 쉽게 압축되지 않거나 이러한 기기에서 적절한 성능으로 실행할 수 없는 대형 모델이 있는 경우 또한 다양한 기기에서 일관된 모델 성능이 최우선 과제인 경우 이 접근 방식이 선호되는 솔루션일 수 있습니다.

Google Cloud는 AI 모델을 실행하기 위한 전체 서비스 모음을 제공합니다. 자세한 내용은 Google Cloud의 AI 및 머신러닝 제품 페이지를 참고하세요.

맞춤 모델 개발 및 최적화

고급 개발 경로에는 맞춤 머신러닝 모델을 개발하고 Android 기기에서 사용할 수 있도록 이러한 모델을 최적화하는 작업이 포함될 수 있습니다. 맞춤 모델을 빌드할 계획이라면 메모리 및 처리 비용을 줄이기 위해 모델에 정규화 기법을 적용하는 것이 좋습니다. LiteRT와 함께 사용할 고성능 모델을 빌드하는 방법에 관한 자세한 내용은 모델 섹션의 성능 권장사항을 참고하세요.