使用aws Sagemaker

时间:2018-04-24 13:33:48

标签: amazon-sagemaker

我正在尝试使用github示例在SageMaker中使用我自己的病态学习ML模型。

python代码如下:

# Define IAM role import boto3 
import re 
import os 
import numpy as np 
import pandas as pd 
from sagemaker import get_execution_role 
import sagemaker as sage from time 
import gmtime, strftime 
role = get_execution_role()

ess =  sage.Session()
account = sess.boto_session.client('sts').get_caller_identity()['Account']
region = sess.boto_session.region_name
image = '{}.dkr.ecr.{}.amazonaws.com/decision-trees-sample:latest'.format(account, region)


output_path="s3://output"

sess

tree = sage.estimator.Estimator(image,
                      role, 1, 'ml.c4.2xlarge',
                     output_path='s3-eu-west-1.amazonaws.com/output',
                    sagemaker_session=sess)

tree.fit("s3://output/iris.csv")

但是我收到了这个错误:

  

信息:sagemaker:用名称创建培训工作:   决策树样品-2018-04-24-13-13-38-281

     

----------------------------------------------- ---------------------------- ClientError Traceback(最近一次调用   最后)in()        14 sagemaker_session = sess)        15   ---> 16 tree.fit(“s3://inteldatastore-cyrine/iris.csv”)

     

〜/ anaconda3 / ENVS / python3 / LIB / python3.6 /站点包/ sagemaker / estimator.py   适合(自我,输入,等待,日志,job_name)       161 self.output_path ='s3:// {} /'.format(self.sagemaker_session.default_bucket())       162    - > 163 self.latest_training_job = _TrainingJob.start_new(self,inputs)       164如果等待:       165 self.latest_training_job.wait(logs = logs)

     

〜/ anaconda3 / ENVS / python3 / LIB / python3.6 /站点包/ sagemaker / estimator.py   在start_new中(cls,estimator,输入)       336 input_config = input_config,role = role,   JOB_NAME = estimator._current_job_name,       337 output_config = output_config,resource_config = resource_config,    - > 338个超参数=超参数,stop_condition = stop_condition)       339       340返回cls(estimator.sagemaker_session,estimator._current_job_name)

     

〜/ anaconda3 / ENVS / python3 / LIB / python3.6 /站点包/ sagemaker / session.py   在火车上(self,image,input_mode,input_config,role,job_name,   output_config,resource_config,hyperparameters,stop_condition)       242 LOGGER.info('创建名称为{}的培训 - 作业'.format(job_name))       243 LOGGER.debug('train request:{}'。format(json.dumps(train_request,indent = 4)))    - > 244 self.sagemaker_client.create_training_job(** train_request)       245       246 def create_model(self,name,role,primary_container):

     

〜/ anaconda3 / ENVS / python3 / LIB / python3.6 /站点包/ botocore / client.py   在_api_call(self,* args,** kwargs)       312“%s()只接受关键字参数。” %py_operation_name)       313#此范围内的“self”指的是BaseClient。    - > 314返回self._make_api_call(operation_name,kwargs)       315       316 _api_call。名称 = str(py_operation_name)

     

〜/ anaconda3 / ENVS / python3 / LIB / python3.6 /站点包/ botocore / client.py   在_make_api_call中(self,operation_name,api_params)       610 error_code = parsed_response.get(“Error”,{})。get(“Code”)       611 error_class = self.exceptions.from_code(error_code)    - > 612引发error_class(parsed_response,operation_name)       613否则:       614 return parsed_response

     

ClientError:调用时发生错误(AccessDeniedException)   CreateTrainingJob操作:用户:   arn:aws:sts :: 307504647302:assume-role / default / SageMaker is   未授权执行:sagemaker:资源上的CreateTrainingJob:   ARN:AWS:sagemaker:EU-西-1:307504647302:训练作业/判定树样品-2018-04-24-13-13-38-281

你能帮我解决这个问题吗?

谢谢

3 个答案:

答案 0 :(得分:0)

您似乎无权访问资源

arn:aws:sagemaker:eu-west-1:307504647302:training-job/decision-trees-sample-2018-04-24-13-13-38-281

您可以检查资源网址是否正确以及安全组中是否设置了正确的权限。

答案 1 :(得分:0)

当我开始使用SageMaker时,我遇到了类似的问题所以我开发了这个开源项目https://github.com/Kenza-AI/sagify(sagify),这是一个CLI工具,可以帮助您在SageMaker上训练和部署自己的机器学习/深度学习模型以一种非常简单的方式。无论我使用什么库(Keras,Tensorflow,scikit-learn,LightFM,spacy等),我都设法训练和部署我的所有ML模型。基本上,您可以用经典的pythonic方式指定所有依赖项,即在requiments.txt中,sagify将读取它们并将它们安装在Docker镜像上。然后,可以在SageMaker上执行此Docker镜像以进行培训和部署。

此外,我在sagify文档(https://kenza-ai.github.io/sagify/)中指定了关于如何设置您的AWS账户的一次性流程,以避免与权限相关的问题。

答案 2 :(得分:0)

也许您正在使用AWS Educate帐户。

目前,您无法使用SageMaker服务通过AWS Educate Starter帐户创建培训或建模作业。

目前,如果您想使用/部署带有SageMaker服务的培训工作,则可以使用自己的个人AWS帐户。

不过,您可以继续通过AWS Educate帐户通过SageMaker使用Jupyter笔记本电脑。