모델 변환 개요

TensorFlow Lite와 함께 사용하는 머신 러닝(ML) 모델은 원래 TensorFlow 핵심 라이브러리 및 도구를 사용하여 빌드 및 교육되었습니다. TensorFlow 코어로 모델을 구축한 후에는 TensorFlow Lite 모델이라는 더 작고 효율적인 ML 모델 형식으로 변환할 수 있습니다. 이 섹션에서는 TensorFlow 모델을 TensorFlow Lite 모델 형식으로 변환하기 위한 지침을 제공합니다.

변환 워크플로

TensorFlow 모델을 TensorFlow Lite 형식으로 변환하는 것은 ML 모델의 내용에 따라 몇 가지 경로를 취할 수 있습니다. 해당 프로세스의 첫 번째 단계로 모델을 평가하여 직접 변환할 수 있는지 확인해야 합니다. 이 평가는 모델의 콘텐츠가 사용하는 TensorFlow 작업을 기반으로 표준 TensorFlow Lite 런타임 환경에서 지원되는지 여부를 결정합니다. 모델이 지원되는 세트 이외의 작업을 사용하는 경우 모델을 리팩터링하거나 고급 변환 기술을 사용할 수 있습니다.

아래 다이어그램은 모델 변환의 상위 수준 단계를 보여줍니다.

TFLite 변환 워크플로

그림 1. TensorFlow Lite 변환 워크플로.

다음 섹션에서는 TensorFlow Lite와 함께 사용할 모델을 평가하고 변환하는 프로세스를 간략하게 설명합니다.

입력 모델 형식

다음 입력 모델 형식으로 변환기를 사용할 수 있습니다.

  • SavedModel ( 권장 ): 디스크에 파일 세트로 저장된 TensorFlow 모델입니다.
  • Keras 모델 : 높은 수준의 Keras API를 사용하여 만든 모델입니다.
  • Keras H5 형식 : Keras API에서 지원하는 SavedModel 형식에 대한 경량 대안입니다.
  • 구체적인 기능으로 만든 모델 : 저수준 TensorFlow API를 사용하여 만든 모델입니다.

Keras 및 구체적인 함수 모델을 모두 SavedModel로 저장하고 권장 경로를 사용하여 변환할 수 있습니다.

Jax 모델이 있는 경우 TFLiteConverter.experimental_from_jax API를 사용하여 TensorFlow Lite 형식으로 변환할 수 있습니다. 이 API는 실험 모드에서 변경될 수 있습니다.

전환 평가

모델을 평가하는 것은 변환을 시도하기 전에 중요한 단계입니다. 평가할 때 모델의 콘텐츠가 TensorFlow Lite 형식과 호환되는지 확인하려고 합니다. 또한 모델이 사용하는 데이터 크기, 하드웨어 처리 요구 사항, 모델의 전체 크기 및 복잡성 측면에서 모델이 모바일 및 에지 장치에 사용하기에 적합한지 확인해야 합니다.

많은 모델에서 변환기는 기본적으로 작동해야 합니다. 그러나 TensorFlow Lite 내장 연산자 라이브러리는 TensorFlow 핵심 연산자의 하위 집합을 지원하므로 일부 모델은 TensorFlow Lite로 변환하기 전에 추가 단계가 필요할 수 있습니다. 또한 TensorFlow Lite에서 지원하는 일부 작업에는 성능상의 이유로 사용 요구 사항이 제한되어 있습니다. 변환을 위해 모델을 리팩토링해야 하는지 확인하려면 연산자 호환성 가이드를 참조하세요.

모델 변환

TensorFlow Lite 변환기는 TensorFlow 모델을 사용하고 TensorFlow Lite 모델( .tflite 파일 확장자로 식별되는 최적화된 FlatBuffer 형식)을 생성합니다. 저장된 모델을 로드하거나 코드에서 생성한 모델을 직접 변환할 수 있습니다.

변환기는 모델의 변환을 사용자 지정하는 3가지 기본 플래그(또는 옵션)를 사용합니다.

  1. 호환성 플래그 를 사용하면 변환에서 사용자 지정 연산자를 허용할지 여부를 지정할 수 있습니다.
  2. 최적화 플래그 를 사용하면 변환 중에 적용할 최적화 유형을 지정할 수 있습니다. 가장 일반적으로 사용되는 최적화 기술은 훈련 후 정량화 입니다.
  3. 메타데이터 플래그 를 사용하면 변환된 모델에 메타데이터를 추가할 수 있으므로 장치에 모델을 배포할 때 플랫폼별 래퍼 코드를 더 쉽게 생성할 수 있습니다.

Python API 또는 명령줄 도구를 사용하여 모델을 변환할 수 있습니다. 모델에서 변환기를 실행하는 방법에 대한 단계별 지침은 TF 모델 변환 가이드를 참조하세요.

일반적으로 표준 TensorFlow Lite 런타임 환경 또는 TensorFlow Lite(베타)용 Google Play 서비스 런타임 환경 에 대한 모델을 변환합니다. 일부 고급 사용 사례에는 변환 프로세스의 추가 단계가 필요한 모델 런타임 환경의 사용자 지정이 필요합니다. 자세한 지침은 Android 개요의 고급 런타임 환경 섹션을 참조하세요.

고급 변환

모델에서 변환기를 실행하는 동안 오류가 발생 하면 연산자 호환성 문제가 있을 가능성이 큽니다. 모든 TensorFlow 작업이 TensorFlow Lite에서 지원되는 것은 아닙니다. 모델을 리팩토링하거나 수정된 ​​TensorFlow Lite 형식 모델과 해당 모델에 대한 사용자 지정 런타임 환경을 생성할 수 있는 고급 변환 옵션을 사용하여 이러한 문제를 해결할 수 있습니다.

  • TensorFlow 및 TensorFlow Lite 모델 호환성 고려 사항에 대한 자세한 내용은 모델 호환성 개요 를 참조하세요.
  • 모델 호환성 개요 아래의 항목에서는 Select operator guide와 같은 모델 리팩토링을 위한 고급 기술을 다룹니다.
  • 작업 및 제한 사항의 전체 목록은 TensorFlow Lite Ops 페이지 를 참조하십시오.

다음 단계

  • 모델 변환을 빠르게 시작 하려면 TF 모델 변환 가이드를 참조하십시오.
  • 훈련 후 정량화 와 같은 기술을 사용하여 변환된 모델을 최적화하는 방법에 대한 지침은 최적화 개요 를 참조하십시오.
  • 모델에 메타데이터를 추가하는 방법을 알아보려면 메타데이터 추가 개요 를 참조하세요. 메타데이터는 코드 생성기에서 활용할 수 있는 정보뿐만 아니라 모델에 대한 설명을 다른 용도로 제공합니다.