首页 > 解决方案 > 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 '}} 在任何给定的模式下都无效

我回去训练,因为这似乎是需要的。但我做错了什么?

标签: boto3amazon-sagemaker

解决方案


发现了问题。CompressionType 被称为“Gzip”,但我在导出时将实际文件更改为不压缩。一旦我将其更改为“无”,培训就顺利进行。


推荐阅读