AWS Sagemaker не может соответствовать модели SKLearn: доступ запрещен при вызове операции CreateBucket - PullRequest
0 голосов
/ 15 января 2019

Я работаю на примере ноутбука AWS SageMaker, и когда я играю в «Логический вывод с помощью Scikit-learn и Linear Learner», у меня возникает проблема, когда речь идет о модели SKLearn.

Код в примере:

from sagemaker.sklearn.estimator import SKLearn

script_path = 'sklearn_abalone_featurizer.py'

sklearn_preprocessor = SKLearn(
    entry_point=script_path,
    role=role,
    train_instance_type="ml.c4.xlarge",
    sagemaker_session=sagemaker_session)

sklearn_preprocessor.fit({'train': train_input})

Когда я запускаю это, я получаю сообщение об ошибке:

ClientError: Произошла ошибка (AccessDenied) при вызове Операция CreateBucket: доступ запрещен

Итак, я изменил sklearn_preprocessor на:

sklearn_preprocessor = SKLearn(
    output_path='s3://{}/{}/model'.format(s3_bucket, prefix),
    entry_point=script_path,
    role=role,
    train_instance_type="ml.c4.xlarge",
    sagemaker_session=sagemaker_session)

Где s3_bucket - это имя моего сегмента, а префикс - путь к нему.

Но, тем не менее, SKLearn хочет создать сегмент, даже если он уже существует. Когда я подгоняю модель AWS, используя тот же output_path, он работает нормально. Есть ли способ решить эту проблему без изменения политики авторизации?

РЕДАКТИРОВАТЬ: я отредактировал роль экземпляра моего ноутбука, и обучение могло быть запущено, но оно все же создало корзину *** ", в котором он сохранил модель артефакта. Как я могу заставить его сохранить артефакт в данном ведре.

1 Ответ

0 голосов
/ 01 февраля 2019

Оценщик должен создавать сегменты, только если выходной_путь не указан:

https://github.com/aws/sagemaker-python-sdk/blob/ab1f7587bf1c35a54549cc676c273dea356301e4/src/sagemaker/estimator.py#L199

Я тоже не могу воспроизвести это. Я запустил размещенный на ноутбуке экземпляр Notebook в AWS SageMaker, скопированный поверх образца ноутбука, и сделал ту же модификацию:

   from sagemaker.sklearn.estimator import SKLearn

    script_path = 'sklearn_abalone_featurizer.py'

    sklearn_preprocessor = SKLearn(
        entry_point=script_path,
        output_path='s3://<my_bucket>/',
        role=role,
        train_instance_type="ml.c4.xlarge",
        sagemaker_session=sagemaker_session)

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

Иногда трудно отследить, какой код на самом деле выполняется в блокноте Jupyter. Перезапускали ли вы ячейку, которая создает объект SKLearn после его изменения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...