boto3 - AWS Sagemaker - 训练通道为空或小批量太大
问题描述
我正在尝试在 Sagemaker 中训练线性学习器模型。我的训练集是 422 行,在 AWS S3 上分为 4 个文件。我设置的小批量大小是 50。
我不断在 Sagemaker 中收到此错误。
客户错误:未处理任何训练数据。要么是训练通道是空的,要么是小批量太大。验证训练数据是否包含非空文件,并且小批量大小小于每个训练主机的记录数。
我正在使用这个 InputDataConfig
InputDataConfig=[
{
'ChannelName': 'train',
'DataSource': {
'S3DataSource': {
'S3DataType': 'S3Prefix',
'S3Uri': 's3://MY_S3_BUCKET/REST_OF_PREFIX/exported/',
'S3DataDistributionType': 'FullyReplicated'
}
},
'ContentType': 'text/csv',
'CompressionType': 'Gzip'
}
],
我不确定我在这里做错了什么。我尝试将记录数增加到 5547495,分成 6 个文件。同样的错误。这让我觉得不知何故配置本身缺少一些东西。因此,它似乎认为培训频道不存在。我尝试将“train”更改为“training”,因为这就是错误消息的意思。但后来我得到了
客户错误:无法初始化算法。无法验证输入数据配置。(由 ValidationError 引起)
引起:{u'training': {u'TrainingInputMode': u'Pipe', u'ContentType': u'text/csv', u'RecordWrapperType': u'None', u'S3DistributionType': u'FullyReplicated '}} 在任何给定的模式下都无效
我回去训练,因为这似乎是需要的。但我做错了什么?
解决方案
发现了问题。CompressionType 被称为“Gzip”,但我在导出时将实际文件更改为不压缩。一旦我将其更改为“无”,培训就顺利进行。
推荐阅读
- bash - 在期望脚本中交互不起作用
- java - 跨度的 Selenium WebDriver 测试
- apache-spark - 防止 Spark 在流/流连接中存储状态
- position - 远期大头头寸和空头头寸
- python - PyQt 中的 QComboBox 在编辑完成时是否有信号?
- r - 过滤器的否定在R中没有按预期工作
- node.js - 单个文档计费写入计数上的多个 Firestore 字段值增量
- python - Sklearn:是否可以在 OneHotEncoder 中为未知类别指定 null 或 NaN 值?
- reactjs - 打字稿抱怨 React useState setter `Argument of type 'Dispatch
>' 不可分配给参数 - xml - Azure 数据工厂:如何使用 for 循环将许多 XML 文件从 blob 存储复制到另一个 XML blob 存储?