Вы можете передавать гиперпараметры не в методе подгонки, а сразу после шага при создании оценщика. Пример в документации будет выглядеть следующим образом:
sklearn_estimator = SKLearn('sklearn-train.py',
train_instance_type='ml.m4.xlarge',
framework_version='0.20.0',
hyperparameters = {'epochs': 20, 'batch-size': 64, 'learning-
rate': 0.1})
sklearn_estimator.fit({'train': 's3://my-data-bucket/path/to/my/training/data',
'test': 's3://my-data-bucket/path/to/my/test/data'})
Вот как вы переносите свои параметры (из вашей записной книжки) в учебный скрипт для доступа через parser.add_argument. Если у вас есть только один скрипт, вы можете обрабатывать свои логики c внутри скрипта. Но это не добавляет пользовательских параметров в метод .fit файла sagemaker.tuner.HyperparameterTuner.
Я использую следующую последовательность для оптимизации параметров в сценарии, а затем применяю лучший параметр (используя также только один обучающий сценарий). ). Может быть, вы примените это к вашему делу. Вы должны иметь возможность сохранять промежуточные модели с помощью joblib.dump в вашем скрипте:
param_grid = [{'vect__ngram_range': [(1, 1)],
'vect__stop_words': [stop, None],
'clf__penalty': ['l1', 'l2'],
'clf__C': [1.0, 10.0, 100.0]},
{'vect__ngram_range': [(1, 1)],
'vect__stop_words': [stop, None],
'vect__use_idf':[False],
'vect__norm':[None],
'clf__penalty': ['l1', 'l2'],
'clf__C': [1.0, 10.0, 100.0]},
]
lr_tfidf = Pipeline([('vect', tfidf),
('clf', LogisticRegression(random_state=0))])
gs_lr_tfidf = GridSearchCV(lr_tfidf, param_grid,
scoring='accuracy',
cv=5,
verbose=1,
n_jobs=-1)
gs_lr_tfidf.fit(X_train, y_train)