ট্রেনার টিএফএক্স পাইপলাইন উপাদানটি একটি টেনসরফ্লো মডেলকে প্রশিক্ষণ দেয়।
প্রশিক্ষক এবং টেনসরফ্লো
প্রশিক্ষক প্রশিক্ষণ মডেলগুলির জন্য পাইথন টেনসরফ্লো এপিআইয়ের ব্যাপক ব্যবহার করে।
উপাদান
প্রশিক্ষক নেয়:
- প্রশিক্ষণ এবং eval জন্য ব্যবহৃত tf. উদাহরণ।
- একজন ব্যবহারকারী মডিউল ফাইল সরবরাহ করেছেন যা প্রশিক্ষকের যুক্তি সংজ্ঞায়িত করে।
- ট্রেন আরগস এবং ইওল আরগগুলির প্রোটবুফ সংজ্ঞা।
- (Ptionচ্ছিক) একটি স্কিমাজেন পাইপলাইন উপাদান দ্বারা নির্মিত ডেটা স্কিমা এবং বিকাশকারী দ্বারা বিকল্পভাবে পরিবর্তিত।
- (Ptionচ্ছিক) একটি প্রবাহ ট্রান্সফর্ম উপাদান দ্বারা উত্পাদিত ট্রান্সফর্ম গ্রাফ।
- (Alচ্ছিক) প্রাক-প্রশিক্ষিত মডেল যেমন ওয়ার্মস্টার্টের মতো পরিস্থিতিতে ব্যবহৃত হয়।
- (Alচ্ছিক) হাইপারপ্যারামিটারগুলি, যা ব্যবহারকারীর মডিউল ফাংশনে যাবে। টিউনারের সাথে সংহতকরণের বিশদ এখানে পাওয়া যাবে ।
ট্রেনার নির্গত: কমপক্ষে একটি মডেল অনুমান / পরিবেশনার জন্য (সাধারণত স্যাভডমডেলফর্ম্যাটতে) এবং allyচ্ছিকভাবে ইভালের জন্য অন্য একটি মডেল (সাধারণত একটি ইভালসেভডমডেল)।
আমরা মডেল পুনর্লিখনের গ্রন্থাগারের মাধ্যমে টিএফলাইটের মতো বিকল্প মডেল ফর্ম্যাটগুলির জন্য সমর্থন সরবরাহ করি। Estimator এবং কেরাস মডেল উভয়কে কীভাবে রূপান্তর করা যায় তার উদাহরণগুলির জন্য মডেল পুনর্লিখনের লাইব্রেরির লিঙ্কটি দেখুন।
অনুমানক ভিত্তিক প্রশিক্ষক
একটি ব্যবহার সম্পর্কে জানার জন্য মূল্নির্ধারক TFX এবং প্রশিক্ষকের সঙ্গে ভিত্তিক মডেল, দেখতে TFX জন্য tf.Estimator সঙ্গে ডিজাইনিং TensorFlow মডেলিং কোড ।
একটি প্রশিক্ষক উপাদান কনফিগার করা
সাধারন পাইপলাইন পাইথন ডিএসএল কোডটি দেখতে এমন দেখাচ্ছে:
from tfx.components import Trainer
...
trainer = Trainer(
module_file=module_file,
examples=transform.outputs['transformed_examples'],
schema=infer_schema.outputs['schema'],
base_model=latest_model_resolver.outputs['latest_model'],
transform_graph=transform.outputs['transform_graph'],
train_args=trainer_pb2.TrainArgs(num_steps=10000),
eval_args=trainer_pb2.EvalArgs(num_steps=5000))
ট্রেনার একটি প্রশিক্ষণ মডিউল module_file
, যা module_file
প্যারামিটারে নির্দিষ্ট করা হয়। একটি সাধারণ প্রশিক্ষণ মডিউলটি এর মতো দেখাচ্ছে:
# TFX will call this function
def trainer_fn(trainer_fn_args, schema):
"""Build the estimator using the high level API.
Args:
trainer_fn_args: Holds args used to train the model as name/value pairs.
schema: Holds the schema of the training examples.
Returns:
A dict of the following:
- estimator: The estimator that will be used for training and eval.
- train_spec: Spec for training.
- eval_spec: Spec for eval.
- eval_input_receiver_fn: Input function for eval.
"""
# Number of nodes in the first layer of the DNN
first_dnn_layer_size = 100
num_dnn_layers = 4
dnn_decay_factor = 0.7
train_batch_size = 40
eval_batch_size = 40
tf_transform_output = tft.TFTransformOutput(trainer_fn_args.transform_output)
train_input_fn = lambda: _input_fn( # pylint: disable=g-long-lambda
trainer_fn_args.train_files,
tf_transform_output,
batch_size=train_batch_size)
eval_input_fn = lambda: _input_fn( # pylint: disable=g-long-lambda
trainer_fn_args.eval_files,
tf_transform_output,
batch_size=eval_batch_size)
train_spec = tf.estimator.TrainSpec( # pylint: disable=g-long-lambda
train_input_fn,
max_steps=trainer_fn_args.train_steps)
serving_receiver_fn = lambda: _example_serving_receiver_fn( # pylint: disable=g-long-lambda
tf_transform_output, schema)
exporter = tf.estimator.FinalExporter('chicago-taxi', serving_receiver_fn)
eval_spec = tf.estimator.EvalSpec(
eval_input_fn,
steps=trainer_fn_args.eval_steps,
exporters=[exporter],
name='chicago-taxi-eval')
run_config = tf.estimator.RunConfig(
save_checkpoints_steps=999, keep_checkpoint_max=1)
run_config = run_config.replace(model_dir=trainer_fn_args.serving_model_dir)
warm_start_from = trainer_fn_args.base_model[
0] if trainer_fn_args.base_model else None
estimator = _build_estimator(
# Construct layers sizes with exponetial decay
hidden_units=[
max(2, int(first_dnn_layer_size * dnn_decay_factor**i))
for i in range(num_dnn_layers)
],
config=run_config,
warm_start_from=warm_start_from)
# Create an input receiver for TFMA processing
receiver_fn = lambda: _eval_input_receiver_fn( # pylint: disable=g-long-lambda
tf_transform_output, schema)
return {
'estimator': estimator,
'train_spec': train_spec,
'eval_spec': eval_spec,
'eval_input_receiver_fn': receiver_fn
}
জেনেরিক প্রশিক্ষক
জেনেরিক প্রশিক্ষক বিকাশকারীদের প্রশিক্ষকের উপাদান সহ যে কোনও টেনসরফ্লো মডেল এপিআই ব্যবহার করতে সক্ষম করে। টেনসরফ্লো এস্টিমেটারগুলি ছাড়াও, বিকাশকারীরা কেরাস মডেল বা কাস্টম প্রশিক্ষণের লুপ ব্যবহার করতে পারে। বিশদগুলির জন্য, দয়া করে জেনেরিক প্রশিক্ষকের জন্য আরএফসি দেখুন।
জেনেরিকএক্সেকিউটার ব্যবহারের জন্য প্রশিক্ষক উপাদানটি কনফিগার করা
জেনেরিক ট্রেনারের জন্য সাধারণ পাইপলাইন ডিএসএল কোডটি দেখতে এরকম হবে:
from tfx.components import Trainer
from tfx.dsl.components.base import executor_spec
from tfx.components.trainer.executor import GenericExecutor
...
trainer = Trainer(
module_file=module_file,
custom_executor_spec=executor_spec.ExecutorClassSpec(GenericExecutor),
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))
ট্রেনার একটি প্রশিক্ষণ মডিউল module_file
, যা module_file
প্যারামিটারে নির্দিষ্ট করা হয়। পরিবর্তে trainer_fn
, একটি run_fn
মডিউল ফাইলের মধ্যে প্রয়োজনীয় যদি GenericExecutor
উল্লেখ করা হয় custom_executor_spec
। trainer_fn
মডেলটি তৈরি করার জন্য দায়বদ্ধ ছিলেন। run_fn
ছাড়াও, run_fn
প্রশিক্ষণের অংশটি পরিচালনা করতে হবে এবং প্রশিক্ষিত মডেলকে এফএনআরগস দ্বারা প্রদত্ত পছন্দসই স্থানে আউটপুট তৈরি করতে হবে:
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, ...)
এখানে run_fn
সহ একটি উদাহরণ মডিউল ফাইল ।
নোট করুন যে ট্রান্সফর্ম উপাদানটি যদি পাইপলাইনে ব্যবহার না করা হয় তবে প্রশিক্ষক উদাহরণস্বরূপ থেকে সরাসরি উদাহরণগুলি গ্রহণ করবেন:
trainer = Trainer(
module_file=module_file,
custom_executor_spec=executor_spec.ExecutorClassSpec(GenericExecutor),
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))