Tuner TFX Boru Hattı Bileşeni

Ayarlayıcı bileşeni, model için hiperparametreleri ayarlar.

Tuner Bileşeni ve KerasTuner Kitaplığı

Tuner bileşeni Python geniş kullanımı yapar KerasTuner ayar hyperparameters API.

Bileşen

Tuner alır:

  • tf.Eğitim ve değerlendirme için kullanılan örnekler.
  • Model tanımı, hiperparametre arama alanı, amaç vb. dahil olmak üzere ayarlama mantığını tanımlayan, kullanıcı tarafından sağlanan bir modül dosyası (veya modül fn).
  • Protobuf tren args ve eval args tanımı.
  • (İsteğe bağlı) Protobuf ayarlama args tanımı.
  • (İsteğe bağlı) bir yukarı akış Dönüşüm bileşeni tarafından üretilen dönüşüm grafiği.
  • (İsteğe bağlı) Bir SchemaGen işlem hattı bileşeni tarafından oluşturulan ve isteğe bağlı olarak geliştirici tarafından değiştirilen bir veri şeması.

Verilen veri, model ve amaç ile Tuner, hiperparametreleri ayarlar ve en iyi sonucu verir.

Talimatlar

Bir kullanıcı modülü işlevi tuner_fn aşağıdaki imzasıyla Tuner için gereklidir:

...
from keras_tuner.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 fonksiyonda, hem modeli hem de hiperparametre arama uzaylarını tanımlarsınız ve ayar için amaç ve algoritmayı seçersiniz. Tuner bileşeni bu modül kodunu girdi olarak alır, hiperparametreleri ayarlar ve en iyi sonucu verir.

Trainer, Tuner'ın çıkış hiperparametrelerini girdi olarak alabilir ve bunları kendi kullanıcı modülü kodunda kullanabilir. Boru hattı tanımı şöyle görünür:

...
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`.
    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. Eğer hyperparameters iyi bir dizi belirlemek için Tuner kullandık sonra, boru hattı ve kullanım gelen Tuner kaldırabilir ImporterNode Trainer'e beslemesine çalıştırmak önceki eğitimden Tuner obje ithal etmek.

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 (keras_tuner.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'da (GCP) çalışırken, Ayarlayıcı bileşeni iki hizmetten yararlanabilir:

Hiper parametre ayarının arka ucu olarak AI Platform Vizier

AI Platformu Vezir dayalı kara kutu optimizasyonunu gerçekleştirir yönetilen bir hizmettir tarihinde Vezir teknolojisi.

CloudTuner bir uygulamasıdır KerasTuner çalışma arka uç olarak AI Platformu Vezir hizmetine konuşur. CloudTuner bir alt sınıfı olduğu keras_tuner.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 gösterileri nasıl kullanmak için bir kod parçacığı olduğunu CloudTuner . Yapılandırma o Bildirim CloudTuner gibi GSO özgü öğeleri gerektirir project_id ve 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 Training'de paralel ayarlama dağıtılmış çalışan sürüsü

Tuner bileşeninin altında yatan uygulama olarak KerasTuner çerçevesi, paralel olarak hiperparametre araması yapma yeteneğine sahiptir. Stok Tuner bileşeni kullanılarak, paralel olarak birden fazla arama işçi çalıştırabilme yeteneğine sahip olmasa da , Google Cloud AI Platformu uzatma Tuner bileşeni , buna dağıtılmış işçi sürüsü gibi bir AI Platformu Eğitim İş kullanılarak paralel ayarlama çalıştırma olanağı sağlar yönetici. TuneArgs bu bileşene verilen yapılandırmasıdır. Bu, stok Tuner bileşeninin doğrudan değiştirilmesidir.

tuner = google_cloud_ai_platform.Tuner(
    ...   # Same kwargs as the above stock Tuner component.
    tune_args=proto.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.
        TUNING_ARGS_KEY:
            {
                'project': ...,
                'region': ...,
                # Configuration of machines for each master/worker in the flock.
                'masterConfig': ...,
                'workerConfig': ...,
                ...
            }
    })
...

Davranış ve uzatma Tuner parçanın çıktı birden hyperparameter aramalar farklı işçi makinelerde paralel olarak yürütülür dışında stok Tuner bileşeni olarak aynıdır ve bunun sonucunda num_trials daha hızlı tamamlanacaktır. Araştırma algoritması gibi, utanç verici, paralel olduğunda, bu özellikle etkilidir RandomSearch . Ancak, arama algoritması, AI Platform Vizier'de uygulanan Google Vizier algoritmasının yaptığı gibi, önceki denemelerin sonuçlarından elde edilen bilgileri kullanırsa, aşırı derecede paralel bir arama, aramanın etkinliğini olumsuz etkiler.

E2E Örneği

GCP Örneği üzerinde E2E CloudTuner

KerasTuner öğreticisi

CloudTuner öğreticisi

Teklif

Daha fazla detay mevcuttur Tuner API başvurusu .