请求帮助解决以下错误。
调用 InvokeEndpoint 时发生错误 (ModelError)
操作:从模型收到客户端错误 (415) 和消息
“不支持内容类型应用程序/八位字节流。支持
内容类型是文本/csv、文本/libsvm”
这是相关代码 -
from sagemaker import image_uris
from sagemaker.estimator import Estimator
xgboost_hyperparameters = {
"max_depth":"5",
"eta":"0.2",
"gamma":"4",
"min_child_weight":"6",
"subsample":"0.7",
"num_round":"50"
}
xgboost_image = image_uris.retrieve("xgboost", boto3.Session().region_name, version="1")
estimator = Estimator(image_uri = xgboost_image,
hyperparameters = xgboost_hyperparameters,
role = role,
instance_count=1,
instance_type='ml.m5.2xlarge',
output_path= output_loc,
volume_size=5 )
from sagemaker.serializers import CSVSerializer
from sagemaker.deserializers import CSVDeserializer
train_input = sagemaker.inputs.TrainingInput(s3_data = train_loc, content_type='text/csv',s3_data_type = 'S3Prefix')
valid_input = sagemaker.inputs.TrainingInput(s3_data = validation_loc, content_type='text/csv',s3_data_type = 'S3Prefix')
estimator.CONTENT_TYPE = 'text/csv'
estimator.serializer = CSVSerializer()
estimator.deserializer = None
estimator.fit({'train':train_input, 'validation': valid_input})
# deploy model with data config
from sagemaker.model_monitor import DataCaptureConfig
from time import gmtime, strftime
s3_capture_upload_path = 's3://{}/{}/monitoring/datacapture'.format(bucket, prefix)
model_name = 'project3--model-' + strftime("%Y-%m-%d-%H-%M-%S", gmtime())
endpoint_name = 'project3-endpoint'
data_capture_configuration = DataCaptureConfig(
enable_capture = True,
sampling_percentage=100,
destination_s3_uri=s3_capture_upload_path )
deploy = estimator.deploy(initial_instance_count = 1,
instance_type = 'ml.m4.xlarge' ,
data_capture_config=data_capture_configuration,
model_name=model_name,
endpoint_name = endpoint_name
)
然后我面临以下错误预测器
from sagemaker.predictor import Predictor
predictor = Predictor(endpoint_name=endpoint_name)
with open('test.csv', 'r') as f:
for row in f:
print(row)
payload = row.rstrip('\n')
response = predictor.predict(data=payload[2:])
sleep(0.5)
print('done!')
我查看了这些链接但没有找到答案
- https://github.com/aws-samples/reinvent2019-aim362-sagemaker-debugger-model-monitor/blob/master/02_deploy_and_monitor/deploy_and_monitor.ipynb https://github.com/aws-samples/reinvent2019-aim362-sagemaker-debugger-model-monitor/blob/master/02_deploy_and_monitor/deploy_and_monitor.ipynb
- 如何在 Python 中的 Sagemaker 的 XGBoost 训练作业中指定 content_type? https://stackoverflow.com/questions/57908395/how-can-i-specify-content-type-in-a-training-job-of-xgboost-from-sagemaker-in-py
- https://github.com/aws/amazon-sagemaker-examples/issues/729 https://github.com/aws/amazon-sagemaker-examples/issues/729