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