ML 커뮤니티 데이는 11월 9일입니다! TensorFlow, JAX에서 업데이트를 우리와 함께, 더 자세히 알아보기

지원되는 Select TensorFlow 연산자

TensorFlow 핵심 연산자

다음은 TensorFlow Ops 선택 기능과 함께 TensorFlow Lite 런타임에서 지원하는 TensorFlow 핵심 작업의 전체 목록입니다.

TensorFlow Text 및 SentencePiece 연산자

다음 TensorFlow 텍스트SentencePiece 당신이 변환을위한 파이썬 API를 사용하는 라이브러리를 가져 오는 경우 사업자가 지원됩니다.

TF.텍스트 연산자:

  • CaseFoldUTF8
  • ConstrainedSequence
  • MaxSpanningTree
  • NormalizeUTF8
  • NormalizeUTF8WithOffsetsMap
  • RegexSplitWithOffsets
  • RougeL
  • SentenceFragments
  • SentencepieceOp
  • SentencepieceTokenizeOp
  • SentencepieceTokenizeWithOffsetsOp
  • SentencepieceDetokenizeOp
  • SentencepieceVocabSizeOp
  • SplitMergeTokenizeWithOffsets
  • UnicodeScriptTokenizeWithOffsets
  • WhitespaceTokenizeWithOffsets
  • WordpieceTokenizeWithOffsets

SentencePiece 연산자:

  • SentencepieceGetPieceSize
  • SentencepiecePieceToId
  • SentencepieceIdToPiece
  • SentencepieceEncodeDense
  • SentencepieceEncodeSparse
  • SentencepieceDecode

다음 스니펫은 위의 연산자를 사용하여 모델을 변환하는 방법을 보여줍니다.

import tensorflow as tf
# These imports are required to load operators' definition.
import tensorflow_text as tf_text
import sentencepiece as spm

converter = tf.lite.TFLiteConverter.from_keras_model(your_model)
converter.target_spec.supported_ops = [
  tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS
]
model_data = converter.convert()

런타임 측면에서는 TensorFlow Text 또는 SentencePiece 라이브러리를 최종 앱 또는 바이너리에 연결해야 합니다.

사용자 정의 연산자

당신이 경우 자신의 TensorFlow 연산자를 생성 , 당신은 또한에 필요한 사업자 나열하여 TensorFlow 라이트로 포함 된 모델을 변환 할 수 있습니다 experimental_select_user_tf_ops 다음과 같은 :

import tensorflow as tf

ops_module = tf.load_op_library('./your_ops_library.so')

converter = tf.lite.TFLiteConverter.from_saved_model(your_model)
converter.target_spec.supported_ops = [
  tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS
]
converter.target_spec.experimental_select_user_tf_ops = [
    'your_op_name1',
    'your_op_name2'
]
model_data = converter.convert()

런타임 측면에서는 운영자 라이브러리를 최종 앱 또는 바이너리에 연결해야 합니다.

TensorFlow 핵심 연산자를 허용 목록에 추가합니다.

당신이 TensorFlow 코어 운영자가 위의 허용에없는 경우 명중하면 목록을 , 당신의 기능 요청을보고 할 수 있습니다 여기에 TensorFlow 코어 운영자의 이름, 허용 목록에 나열되지 않습니다.

소스 코드에서 고유한 pull 요청을 만들 수도 있습니다. 당신은 추가하려는 경우 예를 들어, raw_ops.StringToNumber 허용 목록에 영업 이익이 같은 업데이트에 세 곳이 있습니다 커밋 .

(1)로 운영자 커널 소스 코드를 추가 portable_extended_ops_group2 BUILD 규칙.

filegroup(
    name = "portable_extended_ops_group2",
    srcs = [
        ...

+       "string_to_number_op.cc",

        ...
    ],
)

에서 relvant 운영자 커널 소스 파일을 찾기 위해 tensorflow/core/kernels 디렉토리를, 당신은 운영자의 이름으로 다음과 같은 커널 선언을 포함하는 소스 코드의 위치를 검색 할 수 있습니다 :

REGISTER_KERNEL_BUILDER(Name("StringToNumber")                 \
                            .Device(DEVICE_CPU)                \
                            .TypeConstraint<type>("out_type"), \
                        StringToNumberOp<type>)

세 이하 모든 헤더 파일이있는 경우 tensorflow/core/kernels 운영자 커널 소스 코드에서 필요한 디렉토리를, 당신은에 헤더 파일을 추가 할 필요가 portable_extended_ops_headers (가) 다음과 같이 빌드 규칙 :

filegroup(
    name = "portable_extended_ops_headers",
    srcs = [
        ...

+       "string_util.h",

        ...
    ],
)

(2) 허용 목록에 운영자 이름을 추가합니다.

허용 된 목록에 정의되어 tensorflow/lite/delegates/flex/allowlisted_flex_ops.cc . TF 선택 옵션을 통해 허용하려면 TensorFlow 핵심 연산자 이름을 나열해야 합니다.

static const std::set<std::string>* allowlisted_flex_ops =
    new std::set<std::string>({
        ...

+       "StringToNumber",

        ...
    });

위의 목록은 가나다 순으로 정렬되어 있으므로 이름이 올바른 위치에 있는지 확인합니다.

(3) 이 가이드 페이지에 운영자 이름을 추가합니다.

다른 개발자에게 운영자 포함을 보여주기 위해 이 가이드 페이지도 업데이트되어야 합니다. 이 페이지는에 위치 tensorflow/lite/g3doc/guide/op_select_allowlist.md .

## TensorFlow core operators

The following is an exhaustive list of TensorFlow core operations that are
supported by TensorFlow Lite runtime with the Select TensorFlow Ops feature.

...
+*   `raw_ops.StringToNumber`
...

위의 목록은 가나다 순으로 정렬되어 있으므로 이름이 올바른 위치에 있는지 확인합니다.