SageMaker Управляемый точечный тренинг с алгоритмом обнаружения объектов - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь обучить модель обнаружения объекта, начиная с существующей модели, используя новую функцию обучения управляемых точек. Параметры, использованные при создании моего оценщика, следующие:

od_model = sagemaker.estimator.Estimator(get_image_uri(sagemaker.Session().boto_region_name, 'object-detection', repo_version="latest"),
                                         Config['role'],
                                         train_instance_count = 1,
                                         train_instance_type = 'ml.p3.16xlarge',
                                         train_volume_size = 50,
                                         train_max_run = (48 * 60 * 60),
                                         train_use_spot_instances = True,
                                         train_max_wait = (72 * 60 * 60),
                                         input_mode = 'File',
                                         checkpoint_s3_uri = Config['train_checkpoint_uri'],
                                         output_path = Config['s3_output_location'],
                                         sagemaker_session = sagemaker.Session()
                                         )

(Ссылки наConfig в приведенной выше структуре данных конфигурации я использую для извлечения / централизации некоторых параметров)

Когда я запускаю выше, я получаю следующее исключение:

botocore.exceptions.ClientError: Произошла ошибка (ValidationException) при вызове операции CreateTrainingJob: MaxWaitTimeInSeconds выше 3600 не поддерживается для данного алгоритма.

Если я изменяю train_max_wait на 3600, вместо этого я получаю это исключение:

botocore.exceptions.ClientError: Произошла ошибка (ValidationException) при вызове операции CreateTrainingJob: недопустимый MaxWaitTimeInSeconds. Он должен присутствовать и быть больше или равен MaxRuntimeInSeconds

Однако изменение max_run_time на 3600 или меньше не сработает для меня, так как я ожидаю, что тренировка этой модели займет несколько дней (большой набор данных), фактически одна эпоха занимает больше часа.

В блоге AWS по Managed Spot Training говорится, что MaxWaitTimeInSeconds ограничен 60 минутами для:

Для встроенных алгоритмов и алгоритмов AWS Marketplace, которые не используют контрольные точки, мы устанавливаем максимальное время обучения 60 минут (параметр MaxWaitTimeInSeconds).

РанееВ том же посте говорится:

Встроенные алгоритмы: алгоритмы компьютерного зрения поддерживают контрольные точки (обнаружение объектов, семантическая сегментация и очень скоро классификация изображений).

ИтакЯ не думаю, что мой алгоритм не поддерживает Checkpointing. Фактически, в этом блоге используется обнаружение объектов и максимальное время выполнения 48 часов. Поэтому я не думаю, что это ограничение алгоритма.

Как вы можете видеть выше, я установил S3 URL для контрольных точек. Контейнер S3 существует, и у него есть доступ к тренировочному контейнеру (это тот же контейнер, в который помещаются тренировочные данные и выходные данные модели, и у меня не было проблем с доступом к ним до включения точечного обучения.

Мои библиотеки boto и sagemaker являются текущими версиями:

boto3 (1.9.239)
botocore (1.12.239)
sagemaker (1.42.3)

Насколько я могу судить по чтению различных документов, у меня все настроено правильно. Мой пример использования почти такой же, как описано в сообщении в блоге по ссылкевыше, но я использую SageMaker Python SDK вместо консоли.

Я бы очень хотел попробовать Managed Spot Training, чтобы сэкономить немного денег, так как у меня очень длинный тренировочный заезд. тайм-ауты до часа не сработают для моего варианта использования. Любые предложения?

Обновление: Если я закомментирую опции train_use_spot_instances и train_max_wait для регулярного обученияэкземпляры -demand мое учебное задание создано успешно. Если я попытаюсь использовать консоль для клонирования задания и включить экземпляры Spot на клоне, я получуто же исключение ValidationException.

1 Ответ

0 голосов
/ 08 октября 2019

Сегодня я снова запустил свой скрипт, и он работал нормально, без botocore.exceptions.ClientError исключений. Учитывая, что эта проблема затрагивала как Puthon SDK для Sagemeker, так и консоль, я подозреваю, что это могло быть связано с бэкэнд-API, а не с моим клиентским кодом.

В любом случае, он работает сейчас.

...