LiteRT 및 TensorFlow 연산자 호환성

모델에 사용하는 머신러닝 (ML) 연산자는 데이터를 변환하여 TensorFlow 모델에서 LiteRT 형식으로 LiteRT 변환기 공통적으로 사용되는 제한된 수의 TensorFlow 작업을 지원합니다. 모든 모델을 직접 변환할 수 있는 것은 아닙니다. 변환기 도구를 사용하면 추가 연산자를 포함할 수 있지만 모델의 경우 LiteRT 런타임도 수정해야 함 모델 실행에 사용하는 환경이며, 이로 인해 표준 런타임 배포 옵션을 사용할 수 있습니다. Google Play 서비스:

LiteRT 컨버터는 Transformer 모델의 최적화 옵션을 적용하여 직접 지원되는 연산자입니다. 예를 들어 머신러닝 모델의 ML 연산자에 따라 변환해야 하는 경우 변환기는 방지 또는 융합 이를 LiteRT 상대 연산자에 매핑해야 합니다.

지원되는 작업에도 특정 사용 패턴이 예상되는 경우가 있습니다. 될 수 있습니다. TensorFlow 빌드 방법을 이해하는 가장 좋은 방법 인코더-디코더 모델을 LiteRT는 연산이 변환되는 방식과 이 과정에서 부과된 한계도 함께 고려해야 합니다.

지원되는 연산자

LiteRT 기본 제공 연산자는 연산자의 하위 집합입니다. TensorFlow Core 라이브러리의 일부입니다 TensorFlow 모델은 복합 연산자 형태로 커스텀 연산자도 포함합니다. 또는 사용자가 정의한 새 연산자를 사용할 수 있습니다. 아래 다이어그램은 있습니다.

TensorFlow 연산자

이 범위의 ML 모델 연산자에는 다음 3가지 유형이 있습니다. 지원되는 모델은 다음과 같습니다.

  1. LiteRT 내장 연산자만 있는 모델입니다. (권장)
  2. 기본 제공 연산자를 사용한 모델 및 TensorFlow 선택 핵심 연산자입니다.
  3. 기본 제공 연산자, TensorFlow 코어 연산자 또는/또는 맞춤 연산자를 사용합니다.

모델에 기본적으로 지원되는 작업만 포함된 경우 LiteRT는 변환을 위한 추가 플래그가 필요하지 않습니다. 이 이 모델 유형은 원활하게 변환되므로 이 방법을 사용하는 것이 좋습니다. 기본 LiteRT 런타임을 사용하여 최적화하고 실행하는 것이 더 간단합니다. 또한 모델에 대한 다음과 같은 추가 배포 옵션도 있습니다. Google Play 서비스: 먼저 LiteRT 변환기 가이드 자세한 내용은 LiteRT Ops 페이지에서 기본 제공 연산자 목록입니다.

핵심 라이브러리에서 일부 TensorFlow 작업을 포함해야 하는 경우 전환 시 이를 지정하고 런타임에 이를 포함해야 합니다. 작업을 수행할 수 있습니다 TensorFlow 연산자 선택 주제를 참조하세요. 자세히 알아보세요.

가능하면 맞춤 연산자를 포함하는 마지막 옵션은 변환 모델입니다. 맞춤 연산자 두 연산자 중 하나를 조합하여 TensorFlow 핵심 연산자 여러 개를 사용하거나 완전히 새로운 연산자를 정의할 수 있습니다. 커스텀 연산자가 변환되면 전체 연산자의 크기를 늘릴 수 있습니다. 외부에서 종속 항목을 발생시켜 모델을 빌드할 수 있습니다. 커스텀 작업(모바일 또는 기기 배포를 위해 특별히 만들어지지 않은 경우) 배포 시 성능이 저하되거나 리소스가 제한된 장치가 더 크다는 것을 압니다. 마지막으로, TensorFlow 핵심 연산자, 커스텀 연산자, 다음이 필요합니다. 모델 런타임 환경을 표준 런타임 서비스(예: Google Play 서비스로 이동합니다.

지원되는 유형

대부분의 LiteRT 작업은 부동 소수점 (float32)과 양자화된 (uint8, int8) 추론을 지원하지만, 아직 많은 작업이 다른 유형에는 없음 예를 들면 tf.float16 및 문자열 등이 있습니다.

다른 버전의 작업을 사용하는 것 외에 다른 차이점은 어떻게 변환되는지 알 수 있습니다. 양자화 변환에는 텐서의 동적 범위 정보가 필요합니다. 이 '모조 양자화' 필요 모델 학습 도중 범위 정보를 가져와 보정 데이터 세트를 통해 또는 '즉시' 수행 사용할 수 있습니다. 자세한 내용은 양자화를 참조하세요.

간편한 전환, 지속적 접기 및 융합

많은 TensorFlow 작업을 LiteRT로 처리 가능 직접적인 상응 대상은 없습니다 이는 포드를 실행할 수 있는 그래프 (tf.identity)에서 간단히 삭제되고 텐서로 대체됨 (tf.placeholder) 더 복잡한 작업으로 통합 (tf.nn.bias_add)됩니다. 지원되는 작업 중 일부를 이러한 작업 중 하나를 통해 삭제할 수도 있습니다. 프로세스입니다

다음은 일반적으로 삭제되는 TensorFlow 작업의 일부 목록입니다. 다음과 같습니다.

  • tf.add
  • tf.debugging.check_numerics
  • tf.constant
  • tf.div
  • tf.divide
  • tf.fake_quant_with_min_max_args
  • tf.fake_quant_with_min_max_vars
  • tf.identity
  • tf.maximum
  • tf.minimum
  • tf.multiply
  • tf.no_op
  • tf.placeholder
  • tf.placeholder_with_default
  • tf.realdiv
  • tf.reduce_max
  • tf.reduce_min
  • tf.reduce_sum
  • tf.rsqrt
  • tf.shape
  • tf.sqrt
  • tf.square
  • tf.subtract
  • tf.tile
  • tf.nn.batch_norm_with_global_normalization
  • tf.nn.bias_add
  • tf.nn.fused_batch_norm
  • tf.nn.relu
  • tf.nn.relu6
를 통해 개인정보처리방침을 정의할 수 있습니다.

실험 작업

다음 LiteRT 작업이 있지만 커스텀 작업이 준비되지 않았습니다. 있습니다.

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF