Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Tuner TFX Pipeline Bileşeni

Tuner bileşeni, modelin hiperparametrelerini ayarlar.

Tuner Bileşeni ve KerasTuner Kitaplığı

Tuner bileşeni, hiperparametreleri ayarlamak için Python KerasTuner API'sinden kapsamlı bir şekilde yararlanır.

Bileşen

Tuner şunları alır:

  • tf.Eğitim ve değerlendirme için kullanılan örnekler.
  • Model tanımı, hiperparametre arama alanı, hedef vb. Dahil olmak üzere ayarlama mantığını tanımlayan, kullanıcı tarafından sağlanan bir modül dosyası (veya modül fn).
  • Tren parametrelerinin protobuf tanımı ve argümanlarının değerlendirilmesi.
  • (İsteğe bağlı) Ayar değiştirgelerinin Protobuf tanımı.
  • (İsteğe bağlı) yukarı akış Transform bileşeni tarafından üretilen dönüşüm grafiği.
  • (İsteğe bağlı) Bir SchemaGen ardışık düzen bileşeni tarafından oluşturulan ve isteğe bağlı olarak geliştirici tarafından değiştirilen bir veri şeması.

Verilen veriler, model ve hedefle, Tuner hiperparametreleri ayarlar ve en iyi sonucu verir.

Talimatlar

Tuner için aşağıdaki imzaya sahip bir kullanıcı modülü işlevi tuner_fn gereklidir:

...
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.
  """
  ...

Bu işlevde, hem modeli hem de hiperparametre arama alanlarını tanımlar ve ayarlama için hedefi ve algoritmayı seçersiniz. Tuner bileşeni bu modül kodunu girdi olarak alır, hiper parametreleri ayarlar ve en iyi sonucu verir.

Eğitmen, Tuner'ın çıkış hiperparametrelerini girdi olarak alabilir ve bunları kullanıcı modülü kodunda kullanabilir. İşlem hattı tanımı şuna benzer:

...
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))
...

Modelinizi her yeniden eğittiğinizde hiperparametreleri ayarlamak istemeyebilirsiniz. İyi bir hiperparametre seti belirlemek için Tuner'ı kullandıktan sonra, Tuner'ı ardışık düzeninizden kaldırabilir ve ImporterNode kullanarak Trainer'a beslemek için önceki bir eğitim çalışmasından Tuner yapısını içe aktarabilirsiniz.

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'da (GCP) Ayarlama

Google Cloud Platform (GCP) üzerinde çalışırken, Ayarlayıcı bileşeni iki hizmetten yararlanabilir:

Hiperparametre ayarının arka ucu olarak AI Platform Vizier

AI Platform Vizier , Google Vizier teknolojisine dayalı kara kutu optimizasyonu gerçekleştiren, yönetilen bir hizmettir.

CloudTuner , çalışmanın arka ucu olarak AI Platform Vizier hizmetiyle konuşan bir KerasTuner uygulamasıdır. CloudTuner bir alt sınıfı olduğu kerastuner.Tuner , bir damla-in yerine kullanılabilir tuner_fn modülü ve TFX Radyo bileşeninin bir parçası olarak çalıştırmak.

Aşağıda, CloudTuner nasıl kullanılacağını gösteren bir kod parçacığı bulunmaktadır. CloudTuner yapılandırmasının project_id ve region gibi CloudTuner özgü öğeler gerektirdiğine dikkat edin.

...
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 Eğitimi dağıtılmış çalışan sürüsünde paralel ayarlama

Tuner bileşeninin temel uygulaması olarak KerasTuner çerçevesi, paralel olarak hiperparametre araması yürütme yeteneğine sahiptir. Stock Tuner bileşeni birden fazla arama çalışanını paralel olarak yürütme becerisine sahip olmasa da, Google Cloud AI Platform uzantı Ayarlayıcı bileşenini kullanarak, dağıtılmış bir çalışan sürüsü olarak bir AI Platform Eğitim İşini kullanarak paralel ayarlamayı çalıştırma yeteneği sağlar yönetici. TuneArgs , bu bileşene verilen yapılandırmadır. Bu, stock Tuner bileşeninin yerine takılır.

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': ...,
                ...
            }
    })
...

Uzantı Ayarlayıcı bileşeninin davranışı ve çıktısı, stok Ayarlayıcı bileşeniyle aynıdır, tek fark, birden çok hiperparametre aramasının farklı çalışan makinelerde paralel olarak yürütülmesi ve sonuç olarak num_trials daha hızlı tamamlanacaktır. Bu, özellikle RandomSearch gibi arama algoritması utanç verici bir şekilde paralelleştirilebilir olduğunda RandomSearch . Bununla birlikte, arama algoritması, AI Platform Vizier'da uygulanan Google Vizier algoritması gibi önceki denemelerin sonuçlarından elde edilen bilgileri kullanırsa, aşırı derecede paralel bir arama, aramanın etkinliğini olumsuz etkileyecektir.

E2E Örneği

GCP Örneğinde E2E CloudTuner

KerasTuner öğreticisi

CloudTuner eğiticisi

Teklif