ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

مكون خط أنابيب TFX موالف

يضبط مكون الموالف المعلمات الفائقة للنموذج.

مكون الموالف ومكتبة KerasTuner

يستخدم مكون الموالف بشكل مكثف واجهة برمجة تطبيقات Python KerasTuner لضبط المعلمات الفائقة .

مكون

يأخذ الموالف:

  • tf أمثلة مستخدمة للتدريب والتقييم.
  • ملف الوحدة النمطية التي قدمها المستخدم (أو الوحدة النمطية fn) التي تحدد منطق الضبط ، بما في ذلك تعريف النموذج ، ومساحة البحث عن المعلمات الفائقة ، والهدف وما إلى ذلك.
  • تعريف Protobuf لـ Train args و EVAL args.
  • (اختياري) تعريف Protobuf لتوليف args.
  • (اختياري) رسم بياني للتحويل ينتج عن مكون تحويل علوي.
  • (اختياري) مخطط بيانات تم إنشاؤه بواسطة مكون خط أنابيب SchemaGen وتم تعديله اختياريًا بواسطة المطور.

باستخدام البيانات والنموذج والهدف المحدد ، يضبط Tuner المعلمات الفائقة ويصدر أفضل نتيجة.

تعليمات

مطلوب tuner_fn وظيفة وحدة المستخدم مع التوقيع التالي tuner_fn :

...
from kerastuner.engine import base_tuner

TunerFnResult = NamedTuple('TunerFnResult', [('tuner', base_tuner.BaseTuner),
                                             ('fit_kwargs', Dict[Text, Any])])

def tuner_fn(fn_args: FnArgs) -> TunerFnResult:
  """Build the tuner using the KerasTuner API.
  Args:
    fn_args: Holds args as name/value pairs.

      - working_dir: working dir for tuning.
      - train_files: List of file paths containing training tf.Example data.
      - eval_files: List of file paths containing eval tf.Example data.
      - train_steps: number of train steps.
      - eval_steps: number of eval steps.
      - schema_path: optional schema of the input data.
      - transform_graph_path: optional transform graph produced by TFT.
  Returns:
    A namedtuple contains the following:
      - tuner: A BaseTuner that will be used for tuning.
      - fit_kwargs: Args to pass to tuner's run_trial function for fitting the
                    model , e.g., the training and validation dataset. Required
                    args depend on the above tuner's implementation.
  """
  ...

في هذه الوظيفة ، يمكنك تحديد مساحات البحث في النموذج والمعلمة الفائقة ، واختيار الهدف والخوارزمية للضبط. يأخذ مكون الموالف رمز الوحدة هذا كإدخال ، ويضبط المعلمات الفائقة ، ويصدر أفضل نتيجة.

يمكن للمدرب استخدام المعلمات الفائقة لإخراج الموالف كمدخلات واستخدامها في كود وحدة المستخدم الخاصة به. يبدو تعريف خط الأنابيب كما يلي:

...
tuner = Tuner(
    module_file=module_file,  # Contains `tuner_fn`.
    examples=transform.outputs['transformed_examples'],
    transform_graph=transform.outputs['transform_graph'],
    train_args=trainer_pb2.TrainArgs(num_steps=20),
    eval_args=trainer_pb2.EvalArgs(num_steps=5))

trainer = Trainer(
    module_file=module_file,  # Contains `run_fn`.
    custom_executor_spec=executor_spec.ExecutorClassSpec(GenericExecutor),
    examples=transform.outputs['transformed_examples'],
    transform_graph=transform.outputs['transform_graph'],
    schema=schema_gen.outputs['schema'],
    # This will be passed to `run_fn`.
    hyperparameters=tuner.outputs['best_hyperparameters'],
    train_args=trainer_pb2.TrainArgs(num_steps=100),
    eval_args=trainer_pb2.EvalArgs(num_steps=5))
...

قد لا ترغب في ضبط المعلمات التشعبية في كل مرة تقوم فيها بإعادة تدريب النموذج الخاص بك. بمجرد استخدام Tuner لتحديد مجموعة جيدة من المعلمات الفائقة ، يمكنك إزالة Tuner من خط الأنابيب الخاص بك واستخدام ImporterNode لاستيراد عنصر Tuner من دورة تدريبية سابقة للتغذية إلى Trainer.

hparams_importer = ImporterNode(
    instance_name='import_hparams',
    # This can be Tuner's output file or manually edited file. The file contains
    # text format of hyperparameters (kerastuner.HyperParameters.get_config())
    source_uri='path/to/best_hyperparameters.txt',
    artifact_type=HyperParameters)

trainer = Trainer(
    ...
    # An alternative is directly use the tuned hyperparameters in Trainer's user
    # module code and set hyperparameters to None here.
    hyperparameters = hparams_importer.outputs['result'])

الضبط على Google Cloud Platform (GCP)

عند التشغيل على Google Cloud Platform (GCP) ، يمكن لمكون Tuner الاستفادة من خدمتين:

AI Platform Vizier بمثابة الواجهة الخلفية لضبط المعلمات الفائقة

منصة AI Platform Vizier هي خدمة مُدارة تقوم بتحسين الصندوق الأسود ، بناءً على تقنية Google Vizier .

CloudTuner هو تنفيذ KerasTuner التي تتحدث لخدمة AI منصة الوزير بوصفها الخلفية الدراسة. نظرًا لأن kerastuner.Tuner هو فئة فرعية من kerastuner.Tuner ، يمكن استخدامه كبديل في الوحدة النمطية tuner_fn ، ويتم تنفيذه كجزء من مكون TFX Tuner.

يوجد أدناه مقتطف الشفرة الذي يوضح كيفية استخدام CloudTuner . لاحظ أن تكوين CloudTuner يتطلب عناصر خاصة بـ GCP ، مثل project_id region .

...
from tensorflow_cloud import CloudTuner

...
def tuner_fn(fn_args: FnArgs) -> TunerFnResult:
  """An implementation of tuner_fn that instantiates CloudTuner."""

  ...
  tuner = CloudTuner(
      _build_model,
      hyperparameters=...,
      ...
      project_id=...,       # GCP Project ID
      region=...,           # GCP Region where Vizier service is run.
  )

  ...
  return TuneFnResult(
      tuner=tuner,
      fit_kwargs={...}
  )

الضبط الموازي على قطيع العمال الموزعين لتدريب Cloud AI Platform

إن إطار عمل KerasTuner باعتباره التطبيق الأساسي لمكون الموالف لديه القدرة على إجراء بحث عن المعلمات الفائقة بالتوازي. على الرغم من أن مكون موالف المخزون ليس لديه القدرة على تنفيذ أكثر من عامل بحث واحد بالتوازي ، باستخدام مكون Google Cloud AI Platform Tuner ، فإنه يوفر القدرة على تشغيل الضبط المتوازي ، باستخدام وظيفة تدريب منصة الذكاء الاصطناعي كقطيع عامل موزع مدير. TuneArgs هو التكوين المعطى لهذا المكون. هذا هو استبدال مؤقت لمكون موالف المخزون.

from tfx.extensions.google_cloud_ai_platform.tuner.component import Tuner
from tfx.extensions.google_cloud_ai_platform.trainer import executor as ai_platform_trainer_executor

...
tuner = Tuner(
    ...   # Same kwargs as the above stock Tuner component.
    tune_args=tuner_pb2.TuneArgs(num_parallel_trials=3),  # 3-worker parallel
    custom_config={
        # Configures Cloud AI Platform-specific configs . For for details, see
        # https://cloud.google.com/ai-platform/training/docs/reference/rest/v1/projects.jobs#traininginput.
        ai_platform_trainer_executor.TRAINING_ARGS_KEY:
            {
                'project': ...,
                'region': ...,
                # Configuration of machines for each master/worker in the flock.
                'masterConfig': ...,
                'workerConfig': ...,
                ...
            }
    })
...

سلوك وإخراج مكون موالف الامتداد هو نفسه مكون موالف المخزون ، باستثناء أنه يتم تنفيذ العديد من عمليات البحث عن num_trials بالتوازي على أجهزة عاملة مختلفة ، ونتيجة لذلك ، سيتم إكمال عدد num_trials بشكل أسرع. هذا فعال بشكل خاص عندما تكون خوارزمية البحث متوازية بشكل محرج ، مثل RandomSearch . ومع ذلك ، إذا كانت خوارزمية البحث تستخدم معلومات من نتائج التجارب السابقة ، مثل خوارزمية Google Vizier المطبقة في AI Platform Vizier ، فإن البحث الموازي المفرط سيؤثر سلبًا على فعالية البحث.

مثال E2E

E2E CloudTuner على مثال GCP

البرنامج التعليمي KerasTuner

برنامج CloudTuner التعليمي

اقتراح