AWS Sagemaker - в пути к данным обнаружен скрытый файл! Удалите это перед тренировкой.

Я пытаюсь обучить модель с помощью Amazon Sagemaker (xgboost: eu-west-1 ':' 685385470294.dkr.ecr.eu-west-1.amazonaws.com/xgboost:latest '). Но вскоре после начала обучения я всегда получаю одно и то же сообщение об ошибке:

«ClientError: в пути к данным найден скрытый файл! Удалите его перед обучением».

Консоль 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. Два файла csv - это все, что есть. В частности, нет пустого «каталога», который мог бы означать «скрытый файл».


person nabla    schedule 11.07.2018    source источник


Ответы (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"
        }
person ishaaq    schedule 12.07.2018

Я думаю, что видел это раньше ... Не могли бы вы проверить места обучения и проверки S3? Там не должно быть ничего, кроме файлов обучения и проверки.

person Julien Simon    schedule 12.07.2018
comment
У меня также был пустой каталог (не то, чтобы такая вещь, как каталог для S3), который мог быть скрытым файлом. Но это было не так. Я добавил снимок экрана панели управления S3, показывающий содержимое пути к данным. Два файла данных - это все, что есть. Я по-прежнему получаю то же сообщение об ошибке. - person nabla; 12.07.2018

У меня была такая же проблема, но не было скрытого файла.

Я использовал каскад тренировок. PCA, а затем я использовал результат PCA в XGBoost. Я использовал формат recordio-protobuf для PCA и выбрал расширение файла rio. Первое обучение (PCA) прошло успешно, второе (XGBoost) не удалось. После удаления файла train.rio вторая тренировка прошла успешно. Затем я решил переименовать файл train.rio в train.bin, и теперь все работает нормально.

Как по мне, это немного странное поведение. Файл с расширением rio - это * Скрытый файл ** ...

person Yurii    schedule 09.01.2019