python-3.x - “NoneType”对象没有属性“boto_region_name”
问题描述
我已经被这个问题缠住了一段时间,似乎无法理解这个问题来自哪里。我正在 Sagemaker 上部署模型,但在这行代码中出现错误:
sm_model.deploy(initial_instance_count=1, instance_type='ml.m4.2xlarge', endpoint_name=endpoint_name)
Jupyter Notebook 输出以下错误。注意:第 269 行不是我笔记本中的代码,它只是我通过上面的 model.deploy 命令获得的参考。
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
267 return self.image
268
--> 269 region_name = self.sagemaker_session.boto_region_name
270 return create_image_uri(
271 region_name,
AttributeError: 'NoneType' object has no attribute 'boto_region_name'
编辑:这只是我用来创建此管道的示例数据集。这是在 sagemaker 笔记本实例上。我在下面添加整个代码以进行澄清。
from sagemaker.model import Model
from sagemaker.pipeline import PipelineModel
import boto3
from time import gmtime, strftime
import boto3
import s3fs
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline
sns.set()
import boto3
import sagemaker
from sagemaker import get_execution_role
# Using Amazon S3
s3 = boto3.client('s3')
sage = boto3.client('sagemaker')
session = boto3.session.Session()
sagemaker_session = sagemaker.Session()
# Get a SageMaker-compatible role used by this Notebook Instance.
role = get_execution_role()
#Upload file using AWS session
# S3 prefix
prefix = 'Scikit-keras-NLP-pipeline-Boston-Housing-example-June08-test1'
train_input = sagemaker_session.upload_data(
path='housing.csv',
bucket=bucket,
key_prefix='{}/{}'.format(prefix, 'train'))
from sagemaker.sklearn.estimator import SKLearn
output_dir = 's3://sagemaker-us-east-1-819182027957/Scikit-keras-NLP-pipeline-Boston-Housing-example-July08-test1/train'
model_dir = 's3://sagemaker-us-east-1-819182027957/Scikit-keras-NLP-pipeline-Boston-Housing-example-June08-test1/train'
script_path = 'Boston.py'
sklearn_preprocessor = SKLearn(
entry_point=script_path,
role=role,
train_instance_type="ml.c4.xlarge",
sagemaker_session=sagemaker_session,
output_path=output_dir)
sklearn_preprocessor.fit({'train': train_input,'model-dir':model_dir,'output-data-dir':output_dir})
from sagemaker.tensorflow.serving import Model
sagemaker_estimator = Model(model_data = 's3://' + sagemaker_session.default_bucket() + '/Scikit-keras-NLP-pipeline-Boston-Housing-example-June08-test1/train/Bostonmodel.tar.gz',
role = role)
#####
scikit_learn_inference_model = sklearn_preprocessor.create_model()
#sagemaker_model = sagemaker_estimator.create_model() # Does Not have create_model method
sagemaker_model = sagemaker_estimator
model_name = 'Boston-inf-pipeline-July08-model'
endpoint_name = 'Boston-inf-pipeline-July08-endpoint'
#Build Inference Pipeline
sm_model = PipelineModel(
name=model_name,
role=role,
models=[
scikit_learn_inference_model,
sagemaker_model],
sagemaker_session=sagemaker_session)
sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
解决方案
The error is caused by your sagemaker.tensorflow.serving.Model
not having a sagemaker.session.Session
associated with it.
Add sagemaker_session=sagemaker_session
to your Model instantiation:
from sagemaker.tensorflow.serving import Model
sagemaker_model = Model(model_data='s3://' + sagemaker_session.default_bucket() + '/Scikit-keras-NLP-pipeline-Boston-Housing-example-June08-test1/train/Bostonmodel.tar.gz',
role=role,
sagemaker_session=sagemaker_session)
推荐阅读
- html - 如何仅使用引导工具将一个网格转换为另一个网格?
- python - 如何在命令行/解释器上运行简单的 python 脚本?
- javascript - 如何处理异步/等待中的 404 错误?
- excel - 每次找到电子邮件地址时 Excel 都会动态转置
- javascript - TS/JS 如何找到对象嵌套属性的索引?
- java - 如何实现策略设计模式
- javascript - 可缩放的旭日形图在 React JS 中一次仅显示层次结构的两层
- python - 将枕头灰度图像转换为十六进制值?
- macos - Bit-Bucket 服务器的只读权限
- php - 无法在 WordPress WP_Query 中显示自定义分类