TensorFlow 핵심 연산자
다음은 TensorFlow 핵심 작업의 전체 목록입니다. TensorFlow Ops 선택 기능이 있는 LiteRT 런타임에서 지원됩니다.
raw_ops.TokenizerFromLogits
TensorFlow Text 및 SentencePiece 연산자
다음 TensorFlow 텍스트 및 SentencePiece 연산자가 지원됨 변환에 Python API를 사용하고 이 라이브러리를 가져오는 경우
TF.Text 연산자:
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를 직접 만든 경우
연산자를 사용하는 경우
필수 연산자를 포함하는 모델을 LiteRT로
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
작업을 추가하려는 경우
이렇게 업데이트할 수 있는 곳 3곳
commit
(1) 연산자 커널 소스 코드를 portable_extended_ops_group2
에 추가합니다.
BUILD 규칙
filegroup(
name = "portable_extended_ops_group2",
srcs = [
...
+ "string_to_number_op.cc",
...
],
)
다음에서 관련 연산자 커널 소스 파일을 찾으려면
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
TensorFlow Core
TF 선택을 통해 허용되려면 연산자 이름을 나열해야 합니다.
옵션을 선택합니다.
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 LiteRT runtime with the Select TensorFlow Ops feature.
...
+* `raw_ops.StringToNumber`
...
위의 목록은 알파벳순으로 정렬되므로 넣는 것이 좋습니다.