AWS sagemaker invokeEndpoint 模型内部错误
AWS sagemaker invokeEndpoint model internal error
我正在尝试使用 .NET 向 sagemaker 上的模型发送请求。我使用的代码是:
var data = File.ReadAllBytes(@"C:\path\file.csv");
var credentials = new Amazon.Runtime.BasicAWSCredentials("","");
var awsClient = new AmazonSageMakerRuntimeClient(credentials, RegionEndpoint.EUCentral1);
var request = new Amazon.SageMakerRuntime.Model.InvokeEndpointRequest
{
EndpointName = "EndpointName",
ContentType = "text/csv",
Body = new MemoryStream(data),
};
var response = awsClient.InvokeEndpoint(request);
var predictions = Encoding.UTF8.GetString(response.Body.ToArray());
我遇到的错误 awsClient.InvokeEndpoint(request)
是:
Amazon.SageMakerRuntime.Model.ModelErrorException: 'The service
returned an error with Error Code ModelError and HTTP Body:
{"ErrorCode":"INTERNAL_FAILURE_FROM_MODEL","LogStreamArn":"arn:aws:logs:eu-central-1:xxxxxxxx:log-group:/aws/sagemaker/Endpoints/myEndpoint","Message":"Received
server error (500) from model with message \"\". See
"https:// url_to_logs_on_amazon"
in account xxxxxxxxxxx for more
information.","OriginalMessage":"","OriginalStatusCode":500}'
错误消息提示的 url 根本没有帮助。
我认为这是数据格式问题,但我找不到解决方案。
有没有人以前遇到过这种行为?
疑似数据格式问题。在我的例子中,我所要做的就是将数据作为 json 序列化字符串数组发送并使用 ContentType = application/json
因为端点上的 python 函数 运行 负责发送预测器的数据只接受 json 字符串。
解决此问题的另一种方法是修改负责输入处理的 python 函数以接受所有内容类型并以预测器能够理解的方式修改数据。
我的案例的工作代码示例:
var data = new string[] { "this movie was extremely good .", "the plot was very boring ." };
var serializedData = JsonConvert.SerializeObject(data);
var credentials = new Amazon.Runtime.BasicAWSCredentials("","");
var awsClient = new AmazonSageMakerRuntimeClient(credentials, RegionEndpoint.EUCentral1);
var request = new Amazon.SageMakerRuntime.Model.InvokeEndpointRequest
{
EndpointName = "endpoint",
ContentType = "application/json",
Body = new MemoryStream(Encoding.ASCII.GetBytes(serializedData)),
};
var response = awsClient.InvokeEndpoint(request);
var predictions = Encoding.UTF8.GetString(response.Body.ToArray());
我正在尝试使用 .NET 向 sagemaker 上的模型发送请求。我使用的代码是:
var data = File.ReadAllBytes(@"C:\path\file.csv");
var credentials = new Amazon.Runtime.BasicAWSCredentials("","");
var awsClient = new AmazonSageMakerRuntimeClient(credentials, RegionEndpoint.EUCentral1);
var request = new Amazon.SageMakerRuntime.Model.InvokeEndpointRequest
{
EndpointName = "EndpointName",
ContentType = "text/csv",
Body = new MemoryStream(data),
};
var response = awsClient.InvokeEndpoint(request);
var predictions = Encoding.UTF8.GetString(response.Body.ToArray());
我遇到的错误 awsClient.InvokeEndpoint(request)
是:
Amazon.SageMakerRuntime.Model.ModelErrorException: 'The service returned an error with Error Code ModelError and HTTP Body: {"ErrorCode":"INTERNAL_FAILURE_FROM_MODEL","LogStreamArn":"arn:aws:logs:eu-central-1:xxxxxxxx:log-group:/aws/sagemaker/Endpoints/myEndpoint","Message":"Received server error (500) from model with message \"\". See "https:// url_to_logs_on_amazon" in account xxxxxxxxxxx for more information.","OriginalMessage":"","OriginalStatusCode":500}'
错误消息提示的 url 根本没有帮助。
我认为这是数据格式问题,但我找不到解决方案。
有没有人以前遇到过这种行为?
疑似数据格式问题。在我的例子中,我所要做的就是将数据作为 json 序列化字符串数组发送并使用 ContentType = application/json
因为端点上的 python 函数 运行 负责发送预测器的数据只接受 json 字符串。
解决此问题的另一种方法是修改负责输入处理的 python 函数以接受所有内容类型并以预测器能够理解的方式修改数据。
我的案例的工作代码示例:
var data = new string[] { "this movie was extremely good .", "the plot was very boring ." };
var serializedData = JsonConvert.SerializeObject(data);
var credentials = new Amazon.Runtime.BasicAWSCredentials("","");
var awsClient = new AmazonSageMakerRuntimeClient(credentials, RegionEndpoint.EUCentral1);
var request = new Amazon.SageMakerRuntime.Model.InvokeEndpointRequest
{
EndpointName = "endpoint",
ContentType = "application/json",
Body = new MemoryStream(Encoding.ASCII.GetBytes(serializedData)),
};
var response = awsClient.InvokeEndpoint(request);
var predictions = Encoding.UTF8.GetString(response.Body.ToArray());