XGBoost的Amazon Sagemaker ResourceLimitExceeded Error(免费层)



我正在尝试在免费层AWS Sagemaker中创建XGBoost模型。我得到一个错误:

"ResourceLimitExceeded:调用CreateEndpoint操作时发生错误(ResourceLimitExceeded(:帐户级别服务限制'ml.m5.xlarge for endpoint usage'为0个实例,当前使用率为0个,请求增量为1个实例。">.

我应该使用哪种正确的train_instance_type?

这是我的代码:

# import libraries
import boto3, re, sys, math, json, os, sagemaker, urllib.request
from sagemaker import get_execution_role
import numpy as np                                
import pandas as pd                               
import matplotlib.pyplot as plt                   
from IPython.display import Image                 
from IPython.display import display               
from time import gmtime, strftime                 
from sagemaker.predictor import csv_serializer   
# Define IAM role
role = get_execution_role()
prefix = 'sagemaker/DEMO-xgboost-dm'
containers = {'us-west-2': '433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest',
'us-east-1': '811284229777.dkr.ecr.us-east-1.amazonaws.com/xgboost:latest',
'us-east-2': '825641698319.dkr.ecr.us-east-2.amazonaws.com/xgboost:latest',
'eu-west-1': '685385470294.dkr.ecr.eu-west-1.amazonaws.com/xgboost:latest'} # each region has its XGBoost container
my_region = boto3.session.Session().region_name # set the region of the instance
# Create an instance of the XGBoost model (an estimator), and define the model’s hyperparameters.
# Note: train_instance_type='ml.m5.large' has 0 free credits! Use one of https://aws.amazon.com/sagemaker/pricing/ 
sess = sagemaker.Session()
xgb = sagemaker.estimator.Estimator(containers[my_region],role, train_instance_count=1, train_instance_type='ml.m5.xlarge',output_path='s3://{}/{}/output'.format('my_s3_bucket', prefix),sagemaker_session=sess)
xgb.set_hyperparameters(max_depth=1,eta=0.2,gamma=4,min_child_weight=6,subsample=0.8,silent=0,objective='binary:logistic',num_round=100)
# Train the model using gradient optimization on a ml.m4.xlarge instance
# After a few minutes, you should start to see the training logs being generated.
xgb.fit({'train': s3_input_train})

在这一步,我看到的是:

2019-10-22 06:32:51 Starting - Starting the training job...
2019-10-22 06:33:00 Starting - Launching requested ML instances......
2019-10-22 06:33:54 Starting - Preparing the instances for training...
2019-10-22 06:34:41 Downloading - Downloading input data...
2019-10-22 06:35:22 Training - Training image download completed. Training in progress..Arguments: train
[2019-10-22:06:35:22:INFO] Running standalone xgboost training.
[2019-10-22:06:35:22:INFO] Path /opt/ml/input/data/validation does not exist!
[2019-10-22:06:35:22:INFO] File size need to be processed in the node: 3.38mb. Available memory size in the node: 8089.9mb
[2019-10-22:06:35:22:INFO] Determined delimiter of CSV input is ','
[06:35:22] S3DistributionType set as FullyReplicated
[06:35:22] 28831x59 matrix with 1701029 entries loaded from /opt/ml/input/data/train?format=csv&label_column=0&delimiter=,
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[0]#011train-error:0.102182
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[1]#011train-error:0.102182
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[2]#011train-error:0.102182
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[3]#011train-error:0.102182
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[4]#011train-error:0.102182
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[5]#011train-error:0.102182
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[6]#011train-error:0.102182
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[7]#011train-error:0.10839
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[8]#011train-error:0.102737
[06:35:22] src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 2 extra nodes, 0 pruned nodes, max_depth=1
[9]#011train-error:0.107697

然后当我部署这个:

# Deploy the model on a server and create an endpoint that you can access
xgb_predictor = xgb.deploy(initial_instance_count=1,instance_type='ml.m5.xlarge')
---------------------------------------------------------------------------
ResourceLimitExceeded                     Traceback (most recent call last)
<ipython-input-38-6d149f3edc98> in <module>()
1 # Deploy the model on a server and create an endpoint that you can access
----> 2 xgb_predictor = xgb.deploy(initial_instance_count=1,instance_type='ml.m5.xlarge')
~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/estimator.py in deploy(self, initial_instance_count, instance_type, accelerator_type, endpoint_name, use_compiled_model, update_endpoint, wait, model_name, kms_key, **kwargs)
559             tags=self.tags,
560             wait=wait,
--> 561             kms_key=kms_key,
562         )
563 
~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/model.py in deploy(self, initial_instance_count, instance_type, accelerator_type, endpoint_name, update_endpoint, tags, kms_key, wait)
464         else:
465             self.sagemaker_session.endpoint_from_production_variants(
--> 466                 self.endpoint_name, [production_variant], tags, kms_key, wait
467             )
468 
~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/session.py in endpoint_from_production_variants(self, name, production_variants, tags, kms_key, wait)
1361 
1362             self.sagemaker_client.create_endpoint_config(**config_options)
-> 1363         return self.create_endpoint(endpoint_name=name, config_name=name, tags=tags, wait=wait)
1364 
1365     def expand_role(self, role):
~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/session.py in create_endpoint(self, endpoint_name, config_name, tags, wait)
975 
976         self.sagemaker_client.create_endpoint(
--> 977             EndpointName=endpoint_name, EndpointConfigName=config_name, Tags=tags
978         )
979         if wait:
~/anaconda3/envs/python3/lib/python3.6/site-packages/botocore/client.py in _api_call(self, *args, **kwargs)
355                     "%s() only accepts keyword arguments." % py_operation_name)
356             # The "self" in this scope is referring to the BaseClient.
--> 357             return self._make_api_call(operation_name, kwargs)
358 
359         _api_call.__name__ = str(py_operation_name)
~/anaconda3/envs/python3/lib/python3.6/site-packages/botocore/client.py in _make_api_call(self, operation_name, api_params)
659             error_code = parsed_response.get("Error", {}).get("Code")
660             error_class = self.exceptions.from_code(error_code)
--> 661             raise error_class(parsed_response, operation_name)
662         else:
663             return parsed_response
ResourceLimitExceeded: An error occurred (ResourceLimitExceeded) when calling the CreateEndpoint operation: The account-level service limit 'ml.m5.xlarge for endpoint usage' is 0 Instances, with current utilization of 0 Instances and a request delta of 1 Instances. Please contact AWS support to request an increase for this limit.

编辑:正在尝试ml.m4.xlarge实例:

当我使用ml.m4.xlarge时,我会收到相同的消息"ResourceLimitExceeded:调用CreateEndpoint操作时发生错误(ResourceLimitExceeded(:帐户级别服务限制'ml.m4.xlarge for endpoint usage'为0个实例,当前使用率为0个,请求增量为1个实例。请联系AWS支持部门请求增加此限制。">

请求增加ml.m5.xlarge 限额的步骤

  1. 访问aws控制台https://console.aws.amazon.com/
  2. 点击右上角的支架
  3. 单击"创建案例"(橙色按钮(
  4. 选择"增加服务限制"单选按钮
  5. 对于限制类型,搜索并选择SageMaker笔记本实例
  6. 选择与amazon控制台右上角显示的区域相同的区域
  7. 写一个简短的用例描述
  8. 选择ml[x].[x](在您的情况下,ml.m5.xlarge(作为"限制">
  9. 新限制值1

此手动支持票证可能需要48小时才能恢复。(对我来说,一天后我收到了支持团队的回复,实例限制改为1(

根据此AWS页面,您在前两个月每月可获得50小时的m4.xlarg培训,在前两周每月可获得125小时的m4.xslarg托管。因此,如果你在头两个月内,ml.m4.xlarge应该会起作用。

至于服务限制本身,根据这篇文章新创建的帐户将SageMaker中的所有实例类型(t2介质除外(限制为0,而不是默认限制

因此,您需要联系AWS支持,并要求提高您的限额。此外,如果您自己不是管理员,这可能会受到帐户管理员的限制。因此,在这种情况下,这应该是您的第一个停靠港。

根据您提供的输出,模型训练成功。失败的是deploy步骤,它将您的模型作为可查询端点托管。推理的限制与训练的限制是分开的。根据此页面,SageMaker目前提供

推理上每月125小时的m4.xlarge或m5.xlarge实例

如果您在激活的前两个月内。

您可以使用服务配额控制台或API检查当前SageMaker限制。如果您当前没有为端点资源分配任何上述实例类型,您也可以通过服务配额请求增加限额。更多详细信息请点击此处。

最新更新