Создание модели для использования в конвейере из задания настройки гиперпараметра - PullRequest
1 голос
/ 25 мая 2019

Я пытаюсь реализовать лучший оценщик из задания настройки гиперпараметра в объект конвейера для развертывания конечной точки.

Я прочитал документы, чтобы включить результаты конвейерной работы в конвейер, но у меня возникли проблемы при создании объекта класса Model ().

# This is the hyperparameter tuning job
tuner.fit({'train': s3_train, 'validation': s3_val}, 
include_cls_metadata=False)


#With a standard Model (Not from the tuner) the process was as follows:
scikit_learn_inferencee_model_name = sklearn_preprocessor.create_model()
xgb_model_name = Model(model_data=xgb_model.model_data, image=xgb_image)


model_name = 'xgb-inference-pipeline-' + timestamp_prefix
endpoint_name = 'xgb-inference-pipeline-ep-' + timestamp_prefix
sm_model = PipelineModel(
    name=model_name, 
    role=role, 
    models=[
        scikit_learn_inferencee_model_name, 
        xgb_model_name])

sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', 
endpoint_name=endpoint_name)

Я хотел бы иметь возможность аккуратно создать экземпляр объекта модели, используя мои результаты задания по настройке, и передать его в объект PipelineModel. Любое руководство приветствуется.

1 Ответ

0 голосов
/ 26 мая 2019

Я думаю, вы на правильном пути.Вы получаете какую-либо ошибку?См. Этот блокнот для создания экземпляра модели из тюнера и использования в конвейере вывода.

Редактирование предыдущего ответа на основе комментария.Чтобы создать модель из лучшего учебного задания по настройке гиперпараметра, вы можете использовать приведенный ниже фрагмент

from sagemaker.tuner import HyperparameterTuner
from sagemaker.estimator import Estimator
from sagemaker.model import Model

# Attach to an existing hyperparameter tuning job.
xgb_tuning_job_name = 'my_xgb_hpo_tuning_job_name'
xgb_tuner = HyperparameterTuner.attach(xgb_tuning_job_name)

# Get the best XGBoost training job name from the HPO job
xgb_best_training_job = xgb_tuner.best_training_job()
print(xgb_best_training_job)

# Attach estimator to the best training job name
xgb_best_estimator = Estimator.attach(xgb_best_training_job)

# Create model to be passed to the inference pipeline
xgb_model = Model(model_data=xgb_best_estimator.model_data,
                  role=sagemaker.get_execution_role(),
                  image=xgb_best_estimator.image_name)
...