AWS Sagemaker - "Hidden file found in the data path! Remove that before training."
AWS Sagemaker - "Hidden file found in the data path! Remove that before training."
我正在尝试使用 Amazon Sagemaker (xgboost: eu-west-1': '685385470294.dkr.ecr.eu-west-1.amazonaws.com/xgboost:latest') 训练模型。但是我总是在开始训练工作后不久收到相同的错误消息:
"ClientError: Hidden file found in the data path! Remove that before
training."
S3控制台显示输出路径为空(我也尝试新建目录无果)。未为存储桶启用版本控制。
令人惊讶的是,google在此错误消息下找不到任何内容。
我已将输入和输出配置如下:
"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 文件就是全部。特别是,没有空 "directory" 这可能是 "hidden file" 的意思。
我想我以前见过这个...你能检查一下 S3 训练和验证位置吗?除了训练和验证文件,那里不应该有任何东西。
好的,您在 S3Uri
中设置的前缀在这里很重要。根据您的屏幕截图,我认为您的存储桶看起来像这样(树形):
s3://bucket
└── LABEL-inputdata
├── train.csv
└── validation.csv
根据您上面的 InputDataConfig
,SageMaker 必须将其下载到文件系统上的文件夹,以便 xgboost
训练算法到 运行。它根据频道名称和您提供的 S3Uri
前缀执行此操作。前缀被截断以确定要下载到的 folder/file 的名称。因此,在您的示例中,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"
}
我遇到了同样的问题,但没有隐藏文件。
我使用了级联训练。 PCA,然后我在 XGBoost 中使用了 PCA 的结果。
我为 PCA 使用了 recordio-protobuf 格式并选择了文件扩展名 rio。第一次训练 (PCA) 顺利通过,第二次 (XGBoost) 失败。
删除文件 train.rio 后,第二次训练顺利通过。
然后我决定将文件 train.rio 重命名为 train.bin 现在一切正常。
这对我来说有点奇怪。扩展名为 rio 的文件是 *隐藏文件**...
我正在尝试使用 Amazon Sagemaker (xgboost: eu-west-1': '685385470294.dkr.ecr.eu-west-1.amazonaws.com/xgboost:latest') 训练模型。但是我总是在开始训练工作后不久收到相同的错误消息:
"ClientError: Hidden file found in the data path! Remove that before training."
S3控制台显示输出路径为空(我也尝试新建目录无果)。未为存储桶启用版本控制。
令人惊讶的是,google在此错误消息下找不到任何内容。
我已将输入和输出配置如下:
"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 文件就是全部。特别是,没有空 "directory" 这可能是 "hidden file" 的意思。
我想我以前见过这个...你能检查一下 S3 训练和验证位置吗?除了训练和验证文件,那里不应该有任何东西。
好的,您在 S3Uri
中设置的前缀在这里很重要。根据您的屏幕截图,我认为您的存储桶看起来像这样(树形):
s3://bucket
└── LABEL-inputdata
├── train.csv
└── validation.csv
根据您上面的 InputDataConfig
,SageMaker 必须将其下载到文件系统上的文件夹,以便 xgboost
训练算法到 运行。它根据频道名称和您提供的 S3Uri
前缀执行此操作。前缀被截断以确定要下载到的 folder/file 的名称。因此,在您的示例中,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"
}
我遇到了同样的问题,但没有隐藏文件。
我使用了级联训练。 PCA,然后我在 XGBoost 中使用了 PCA 的结果。 我为 PCA 使用了 recordio-protobuf 格式并选择了文件扩展名 rio。第一次训练 (PCA) 顺利通过,第二次 (XGBoost) 失败。 删除文件 train.rio 后,第二次训练顺利通过。 然后我决定将文件 train.rio 重命名为 train.bin 现在一切正常。
这对我来说有点奇怪。扩展名为 rio 的文件是 *隐藏文件**...