Składnik potoku Trainer TFX szkoli model TensorFlow.
Trener i TensorFlow
Trainer umożliwia szerokie wykorzystanie pytona TensorFlow API dla modeli szkoleniowych.
Składnik
Trener bierze:
- tf.Przykłady wykorzystywane do szkolenia i oceny.
- Dostarczony przez użytkownika plik modułu, który definiuje logikę trenera.
- Protobuf definicja args kolejowych i eval args.
- (Opcjonalnie) Schemat danych utworzony przez składnik potoku SchemaGen i opcjonalnie zmieniony przez programistę.
- (Opcjonalnie) wykres transformacji utworzony przez składnik Transformacji poprzedzający.
- (Opcjonalnie) wstępnie wytrenowane modele używane w scenariuszach, takich jak warmstart.
- (Opcjonalnie) hiperparametry, które zostaną przekazane do funkcji modułu użytkownika. Szczegółowe informacje na temat integracji z tunera można znaleźć tutaj .
Trainer emituje: co najmniej jeden model do wnioskowania/serwowania (zazwyczaj w SavedModelFormat) i opcjonalnie inny model do eval (zazwyczaj EvalSavedModel).
Zapewniamy wsparcie dla alternatywnych formatów modeli takich jak TFLite przez model przepisanie biblioteki . Zobacz link do Biblioteki przepisywania modeli, aby zapoznać się z przykładami konwersji modeli Estimator i Keras.
Trener ogólny
Trener ogólny umożliwia programistom korzystanie z dowolnego interfejsu API modelu TensorFlow z komponentem Trainer. Oprócz narzędzi TensorFlow Estimators programiści mogą używać modeli Keras lub niestandardowych pętli szkoleniowych. Szczegółowe informacje można znaleźć w dokumencie RFC dla rodzajowego trener .
Konfiguracja komponentu trenera
Typowy kod DSL potoku dla ogólnego Trainera wyglądałby tak:
from tfx.components import Trainer
...
trainer = Trainer(
module_file=module_file,
examples=transform.outputs['transformed_examples'],
transform_graph=transform.outputs['transform_graph'],
train_args=trainer_pb2.TrainArgs(num_steps=10000),
eval_args=trainer_pb2.EvalArgs(num_steps=5000))
Trener wywołuje moduł szkoleniowy, który jest określony w module_file
parametru. Zamiast trainer_fn
, A run_fn
jest wymagane w pliku modułu jeśli GenericExecutor
jest określona w custom_executor_spec
. trainer_fn
był odpowiedzialny za stworzenie modelu. Poza tym, run_fn
również musi obsługiwać część szkoleniową i wyjście wprawne modelu do żądanej lokalizacji podanej przez FnArgs :
from tfx.components.trainer.fn_args_utils import FnArgs
def run_fn(fn_args: FnArgs) -> None:
"""Build the TF model and train it."""
model = _build_keras_model()
model.fit(...)
# Save model to fn_args.serving_model_dir.
model.save(fn_args.serving_model_dir, ...)
Oto przykładowy plik modułu z run_fn
.
Zwróć uwagę, że jeśli składnik Transform nie jest używany w potoku, trener powinien wziąć przykłady bezpośrednio z ExampleGen:
trainer = Trainer(
module_file=module_file,
examples=example_gen.outputs['examples'],
schema=infer_schema.outputs['schema'],
train_args=trainer_pb2.TrainArgs(num_steps=10000),
eval_args=trainer_pb2.EvalArgs(num_steps=5000))
Więcej szczegółów można znaleźć w dokumentacji API Trainer .