tf.Transform
0.30
릴리스부터 기본 동작은 TF 2.x 동작이 명시적으로 비활성화되지 않는 한 TF 2.x SavedModel을 내보내는 것입니다. 이 페이지에서는 tf.Transform
사용하여 변환 그래프를 TensorFlow 2.x SavedModel로 내보내는 방법에 대한 가이드를 제공합니다.
TF 2.x를 사용한 tf.Transform의 새로운 기능
preprocessing_fn
내에서 Keras 모델 로드
아래 예와 같이 tft.make_and_track_object
API를 사용하여 Keras 모델을 로드하세요.
def preprocessing_fn(inputs):
keras_model = tft.make_and_track_object(lambda: tf.keras.models.load_model(...), name='_unique_name')
...
return {'keras_model_output': keras_model(inputs[...])}
TF 2.x tf.hub 모듈 사용
TF 2.x 허브 모듈은 preprocessing_fn
추적되어 TF 2.x SavedModel로 내보낼 때만 tf.Transform
에서 작동합니다(이것은 tensorflow_transform 0.30
부터 시작하는 기본 동작입니다). 아래 예와 같이 tft.make_and_track_object
API를 사용하여 tf.hub
모듈을 로드하세요.
def preprocessing_fn(inputs):
hub_module = tft.make_and_track_object(lambda: hub.load(...))
...
return {'hub_module_output': hub_module(inputs[...])}
잠재적인 마이그레이션 문제
기존 tf.Transform
파이프라인을 TF 1.x에서 TF 2.x로 마이그레이션하는 경우 다음 문제가 발생할 수 있습니다.
RuntimeError: preprocessing_fn
의 분석기 순서가 비결정적인 것 같습니다.
TF 2.x에서는 사용자가 제공한 preprocessing_fn
여러 번 추적됩니다. TFT 분석기가 발견되는 순서가 각 트레이스마다 변경되면 이 오류가 발생합니다. 이는 TFT 분석기가 호출되는 순서대로 비결정성을 제거하여 해결할 수 있습니다.
transform_raw_features
의 출력에 예상되는 기능이 포함되어 있지 않습니다.
예외 예:
KeyError: \<feature key>
또는
\<feature key> not found in features dictionary.
TFTransformOutput.transform_raw_features
drop_unused_features
매개변수를 무시하고 True인 것처럼 동작합니다. 검색하려는 키가 존재하는지 확인하려면 이 API에서 출력 사전의 사용법을 업데이트하세요.
tf.estimator.BaselineClassifier는 테이블이 초기화되지 않음 오류를 확인합니다.
예외 예시:
tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.
Estimator 기반 실행기를 통한 Trainer 지원은 최선의 노력을 다합니다. 다른 추정기가 작동하는 동안 BaselineClassifier의 테이블 초기화에 문제가 있는 것을 확인했습니다. tf.Transform
에서 TF 2.x를 비활성화하세요 .
알려진 문제/아직 지원되지 않는 기능
TFRecord 형식의 어휘 출력은 아직 지원되지 않습니다.
tfrecord_gzip
아직 tft.vocabulary
(및 기타 어휘 API)의 file_format
매개변수에 대한 유효한 값으로 지원되지 않습니다.
레거시 tf.Transform 동작 유지
tf.Transform
파이프라인이 TF 2.x로 실행되지 않아야 하는 경우 다음 방법 중 하나로 레거시 동작을 유지할 수 있습니다.
-
tf.compat.v1.disable_v2_behavior()
호출하여tf.Transform
에서 TF2를 비활성화합니다. -
tf.Transform
독립 실행형 라이브러리로 사용하거나 TFX의 Transform 구성 요소에 사용하는 경우force_tf_compat_v1=True
tft_beam.Context
에 전달합니다.
tf.Transform
0.30
릴리스부터 기본 동작은 TF 2.x 동작이 명시적으로 비활성화되지 않는 한 TF 2.x SavedModel을 내보내는 것입니다. 이 페이지에서는 tf.Transform
사용하여 변환 그래프를 TensorFlow 2.x SavedModel로 내보내는 방법에 대한 가이드를 제공합니다.
TF 2.x를 사용한 tf.Transform의 새로운 기능
preprocessing_fn
내에서 Keras 모델 로드
아래 예와 같이 tft.make_and_track_object
API를 사용하여 Keras 모델을 로드하세요.
def preprocessing_fn(inputs):
keras_model = tft.make_and_track_object(lambda: tf.keras.models.load_model(...), name='_unique_name')
...
return {'keras_model_output': keras_model(inputs[...])}
TF 2.x tf.hub 모듈 사용
TF 2.x 허브 모듈은 preprocessing_fn
추적되어 TF 2.x SavedModel로 내보낼 때만 tf.Transform
에서 작동합니다(이것은 tensorflow_transform 0.30
부터 시작하는 기본 동작입니다). 아래 예와 같이 tft.make_and_track_object
API를 사용하여 tf.hub
모듈을 로드하세요.
def preprocessing_fn(inputs):
hub_module = tft.make_and_track_object(lambda: hub.load(...))
...
return {'hub_module_output': hub_module(inputs[...])}
잠재적인 마이그레이션 문제
기존 tf.Transform
파이프라인을 TF 1.x에서 TF 2.x로 마이그레이션하는 경우 다음 문제가 발생할 수 있습니다.
RuntimeError: preprocessing_fn
의 분석기 순서가 비결정적인 것 같습니다.
TF 2.x에서는 사용자가 제공한 preprocessing_fn
여러 번 추적됩니다. TFT 분석기가 발견되는 순서가 각 트레이스마다 변경되면 이 오류가 발생합니다. 이는 TFT 분석기가 호출되는 순서대로 비결정성을 제거하여 해결할 수 있습니다.
transform_raw_features
의 출력에 예상되는 기능이 포함되어 있지 않습니다.
예외 예:
KeyError: \<feature key>
또는
\<feature key> not found in features dictionary.
TFTransformOutput.transform_raw_features
drop_unused_features
매개변수를 무시하고 True인 것처럼 동작합니다. 검색하려는 키가 존재하는지 확인하려면 이 API에서 출력 사전의 사용법을 업데이트하세요.
tf.estimator.BaselineClassifier는 테이블이 초기화되지 않음 오류를 확인합니다.
예외 예시:
tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.
Estimator 기반 실행기를 통한 Trainer 지원은 최선의 노력을 다합니다. 다른 추정기가 작동하는 동안 BaselineClassifier의 테이블 초기화에 문제가 있는 것을 확인했습니다. tf.Transform
에서 TF 2.x를 비활성화하세요 .
알려진 문제/아직 지원되지 않는 기능
TFRecord 형식의 어휘 출력은 아직 지원되지 않습니다.
tfrecord_gzip
아직 tft.vocabulary
(및 기타 어휘 API)의 file_format
매개변수에 대한 유효한 값으로 지원되지 않습니다.
레거시 tf.Transform 동작 유지
tf.Transform
파이프라인이 TF 2.x로 실행되지 않아야 하는 경우 다음 방법 중 하나로 레거시 동작을 유지할 수 있습니다.
-
tf.compat.v1.disable_v2_behavior()
호출하여tf.Transform
에서 TF2를 비활성화합니다. -
tf.Transform
독립 실행형 라이브러리로 사용하거나 TFX의 Transform 구성 요소에 사용하는 경우force_tf_compat_v1=True
tft_beam.Context
에 전달합니다.