amazon-web-services - 如何使用批量转换作业将更大的 .csv 文件传递给 amazon sagemaker 进行预测
问题描述
我创建了一个自定义模型并将其部署在 sagemaker 上。我正在使用批量转换作业调用端点。如果输入文件很小,即 csv 文件中的行数较少,它就可以工作。如果我上传一个包含大约 200000 行的文件,我会在 cloudwatch 日志中收到此错误。
2018-11-21 09:11:52.666476: W external/org_tensorflow/tensorflow/core/framework/allocator.cc:113]
Allocation of 2878368000 exceeds 10% of system memory.
2018-11-21 09:11:53.166493: W external/org_tensorflow/tensorflow/core/framework/allocator.cc:113]
Allocation of 2878368000 exceeds 10% of system memory.
[2018-11-21 09:12:02,544] ERROR in serving: <_Rendezvous of RPC that
terminated with:
#011status = StatusCode.DEADLINE_EXCEEDED
#011details = "Deadline Exceeded"
#011debug_error_string = "
{
"created": "@1542791522.543282048",
"description": "Error received from peer",
"file": "src/core/lib/surface/call.cc",
"file_line": 1017,
"grpc_message": "Deadline Exceeded",
"grpc_status": 4
}
"
任何想法可能会出错。这是我用来创建转换作业的转换函数。
transformer =sagemaker.transformer.Transformer(
base_transform_job_name='Batch-Transform',
model_name='sagemaker-tensorflow-2018-11-21-07-58-15-887',
instance_count=1,
instance_type='ml.m4.xlarge',
output_path='s3://2-n2m-sagemaker-json-output/out_files/'
)
input_location = 's3://1-n2m-n2g-csv-input/smal_sagemaker_sample.csv'
transformer.transform(input_location, content_type='text/csv', split_type='Line')
.csv 文件包含 2 列客户的名字和姓氏,然后我在 sagemaker 本身中使用 input_fn() 对其进行预处理。
解决方案
该错误似乎来自 GRPC 客户端在服务器能够响应之前关闭连接。(在https://github.com/aws/sagemaker-tensorflow-container/issues/46上似乎存在对 sagemaker tensorflow 容器的现有功能请求,以使此超时可配置)
您可以使用 sagemaker Transformer 尝试一些事情来限制每个单独请求的大小,使其适合超时:
- 将 a 设置
max_payload
为较小的值,例如 2-3 MB(默认为 6 MB) - 如果您的实例指标表明它有可用的计算/内存资源,请尝试
max_concurrent_transforms
> 1 以使用多个工作人员 - 将您的 csv 文件拆分为多个输入文件。使用更大的数据集,您还可以增加实例数以扇出处理
推荐阅读
- java - 如何在单击导航抽屉中的项目时使用单个活动导航到不同的数据库?
- javascript - 在 AngularJS 中使用 Promise
- excel - 比较两列excel的值
- jenkins-pipeline - Jenkins,如何将变量内容添加到文件中
- ruby - 如何获得挂起 Ruby 进程的回溯?
- python - 根据连续值之间的差异将列表拆分为子列表
- xmlgregoriancalendar - 如何从 XMLGregorianCalendar 时间减去 10 分钟?
- r - GBM 模型:为什么验证精度在 h2o R 中的网格搜索上会波动
- python - TypeError:不能将序列乘以“float”numpy 类型的非整数
- java - 使用 lstat() 和 stat() 调用的嵌入式 Tomcat Web 查询和 strace