Ошибки при запуске Sagemaker Batch Transformation с моделью LDA - PullRequest
0 голосов
/ 02 апреля 2019

Я успешно обучил модель LDA с помощью sagemaker, я смог настроить API логического вывода, но у него есть ограничение на количество записей, которые я могу запросить за один раз.

Мне нужно получить прогнозы для большого файла, и я пытался использовать пакетное преобразование, однако я работаю против контрольно-пропускного пункта.

Моя дата ввода в типе содержимого application / x-recordio-protobuf, код следующий:

# Initialize the transformer object
transformer =sagemaker.transformer.Transformer(
    base_transform_job_name='Batch-Transform',
    model_name=model_name,
    instance_count=1,
    instance_type='ml.c4.xlarge',
    output_path=output_location,
    max_payload=20,
    strategy='MultiRecord'
    )
# Start a transform job
transformer.transform(input_location, content_type='application/x-recordio-protobuf',split_type="RecordIO")
# Then wait until the transform job has completed
transformer.wait()

# Fetch validation result 
s3_client.download_file(bucket, 'topic_model_batch_transform/output/batch_tansform_part0.pbr.out', 'batch_tansform-result')
with open('batch_tansform-result') as f:
    results = f.readlines()   
print("Sample transform result: {}".format(results[0]))

Я разбил входной файл на 10 файлов, каждый размером около 19 МБ. Сначала я пытаюсь запустить один фрагмент, поэтому всего 19 МБ. Я пытался изменить стратегию, пытаясь SingleRecord. Я также пробовал разные split_types, также пробовал None и "Line".

Я прочитал документацию, но не ясно, что еще мне следует попробовать, также сообщения об ошибках очень неясны.

2019-04-02T15:49:47.617:[sagemaker logs]: MaxConcurrentTransforms=1, MaxPayloadInMB=20, BatchStrategy=MULTI_RECORD
#011at java.lang.Thread.run(Thread.java:748)2019-04-02T15:49:48.035:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: Bad HTTP status returned from invoke: 413
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr:
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: Message:
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: <title>413 Request Entity Too Large</title>
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: <h1>Request Entity Too Large</h1>
2019-04-02T15:49:48.036:[sagemaker logs]: du-sagemaker/data/batch_transform/batch_tansform_part0.pbr: <p>The data value transmitted exceeds the capacity limit.</p>

Вышеприведенный код является последним, который я получил с вышеуказанной конфигурацией, перед этим я также получал код ошибки HTTP 400.

Любая помощь или указатели будут с благодарностью! Спасибо

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

Хотя платформа Batch Transform поддерживает гибкие ограничения полезной нагрузки (через MaxPayloadInMB), многие алгоритмы устанавливают более строгие внутренние ограничения. Это верно для встроенного алгоритма LDA SageMaker, который отклоняет «большие» запросы в соответствии с его внутренней конфигурацией.

Ошибка, которую вы видите в журнале, говорит именно об этом: клиент пакетного преобразования пытался отправить запрос размером до 20 МБ, но сервер алгоритма LDA отклонил запрос с кодом ошибки 413 (Request Entity Too Large).

При использовании контейнера со встроенным алгоритмом SageMaker или любого другого контейнера, который не принадлежит вам, мы рекомендуем оставить параметр MaxPayloadInMB неустановленным в вашем запросе CreateTransformJob. Это побудит платформу выбрать параметры выполнения алгоритма по умолчанию, которые вы увидите напечатанными в вашем журнале следующим образом:

[sagemaker logs]: MaxConcurrentTransforms=1, MaxPayloadInMB=${DEFAULT_MAX_PAYLOAD_IN_MB}, BatchStrategy=MultiRecord

Для получения более подробной информации о том, как разрешаются эти "параметры выполнения", см. Документально описанный "порядок приоритета" здесь .

Помимо управления размером полезной нагрузки, остальные варианты параметров задания преобразования (SplitType=RecordIO и BatchStrategy=MultiRecord) выглядят корректно для передачи данных RecordIO-Protobuf. * ​​1018 *

0 голосов
/ 30 апреля 2019

Мне удалось решить проблему, казалось, что максимальная загрузка, которую я использовал, была слишком высокой.Я установил MaxPayloadInMB=1 и теперь он работает как сон

...