我正在尝试使用Amazon Sagemaker(xgboost:eu-west-1':'685385470294.dkr.ecr.eu-west-1.amazonaws.com/xgboost:latest')训练模型。但是在开始培训工作后不久,我总是收到相同的错误消息:
“ ClientError:在数据路径中找到隐藏文件!请在删除该文件之前 培训。”
S3控制台显示输出路径为空(我也尝试创建新目录无济于事)。未为存储桶启用版本控制。
令人惊讶的是,谷歌在此错误消息下找不到任何内容。
我将输入和输出配置如下:
"InputDataConfig": [
{
"ChannelName": "train",
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://{}/{}-inputdata/train".format(s3_utils.bucket, LABEL)
}
},
"ContentType": "csv",
"CompressionType": "None"
},
{
"ChannelName": "validation",
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://{}/{}-inputdata/validation".format(s3_utils.bucket, LABEL)
}
},
"ContentType": "csv",
"CompressionType": "None"
}
],
"OutputDataConfig": {
"S3OutputPath": "s3://{}/{}-xgboost-output".format(s3_utils.bucket, LABEL) },
字段
"RoleArn": role,
角色来自哪里
from sagemaker import get_execution_role
role = get_execution_role()
是
arn:aws:iam::<ACCOUNT>:role/service-role/AmazonSageMaker-ExecutionRole-<HIDDEN>
以下是显示数据路径的屏幕截图: S3 dashboard view of data-path。这两个csv文件全部存在。特别是,没有空的“目录”可能就是“隐藏文件”的含义。
答案 0 :(得分:3)
好的,您在S3Uri
中设置的前缀在这里很重要。根据您的屏幕截图,我认为您的存储桶看起来像这样(树形):
s3://bucket
└── LABEL-inputdata
├── train.csv
└── validation.csv
基于上面的InputDataConfig
,SageMaker必须将其下载到文件系统上的文件夹中,以便运行xgboost
训练算法。这样做是基于频道名称和您提供的S3Uri
前缀。前缀被截断以确定要下载到的文件夹/文件的名称。因此,在您的示例中,train
频道的下载地址为:
/opt/ml/input/data/train/.csv
最后,xgboost
实现将.csv
文件视为隐藏文件并抱怨该文件。
要使其正常工作,您可以像这样在s3中重新排列数据...
s3:bucket
└── LABEL-inputdata
├── train
│ └── data.csv
└── validation
└── data.csv
..并将您的输入数据配置更改为:
"InputDataConfig": [
{
"ChannelName": "train",
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://{}/{}-inputdata/train/".format(s3_utils.bucket, LABEL)
}
},
"ContentType": "csv",
"CompressionType": "None"
},
{
"ChannelName": "validation",
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://{}/{}-inputdata/validation/".format(s3_utils.bucket, LABEL)
}
},
"ContentType": "csv",
"CompressionType": "None"
}
答案 1 :(得分:0)
我想我已经看过这一本书了……您能检查一下S3培训和验证位置吗?除了培训和有效文件之外,什么都没有。
答案 2 :(得分:0)
我遇到了同样的问题,并且没有隐藏文件。
我使用了一系列的培训。 PCA,然后在XGBoost中使用PCA的结果。 我为PCA使用了 recordio-protobuf 格式,并选择了文件扩展名 rio 。第一次训练(PCA)顺利通过,第二次(XGBoost)失败。 删除文件 train.rio 后,第二次培训顺利通过。 然后,我决定将文件 train.rio 重命名为 train.bin ,现在一切正常。
对我来说这有点奇怪。扩展名为 rio 的文件是*隐藏文件** ...