Вопрос или проблема
Внезапно, код, который работал (до рождественских каникул), теперь не работает. Я хотел бы знать, почему. Документация кажется неполной, а сообщение об ошибке – загадочным в контексте.
При попытке настроить оценщик sagemaker я получаю ошибку
Ошибка валидации параметра:
Отсутствует требуемый параметр в ProfilerConfig: "S3OutputPath"
Неизвестный параметр в ProfilerConfig: "DisableProfiler", должен быть одним из: S3OutputPath, ProfilingIntervalInMilliseconds, ProfilingParameters
Единственное, что произошло между этими событиями, это то, что один из инженеров облачной инфраструктуры изменил настройки, чтобы разрешить локальное копирование репозитория github (ранее я загружал zip-файл). После этого перестало работать.
Конкретный код, который участвует в этом, приведен ниже.
xgb_estimator = Estimator(
container,
role,
instance_count=1,
instance_type="ml.m5.xlarge",
disable_profiler=True,
sagemaker_session=session,
)
xgb_estimator.set_hyperparameters(
max_depth=5,
eta=0.2,
gamma=4,
min_child_weight=6,
subsample=0.8,
disable_profiler=True,
output_path = folder,
num_round=800,
)
xgb_estimator.fit({"train": train_input, }, logs=False,)
Я получил этот ответ от Amazon – он сработал.
Он включает детали, которые я изначально не знал, что нужно включить в вопрос.
Я выполнял код из терминала, созданного в Studio. Оказывается, конфигурация для этого может быть нестабильной. Изначально мне удалось настроить конфигурацию так, чтобы она работала, но что-то в фоновом режиме произошло (подробности не были определены, но проблема стабильности при выполнении таким образом была подчеркнута Amazon), и мне было рекомендовано создать экземпляр ноутбука из меню файла, а затем в верхней строке ноутбука есть значок для создания терминала – который получает root shell прямо на docker-контейнере, имеющем доступ к тому же (виртуальному) диску.
Результат – запуск с docker-контейнера, созданного из экземпляров ноутбука, созданных из меню файла Studio, гораздо более стабильный.
Ответ или решение
Причина ошибки DisableProfiler в XGBoost fit при использовании SageMaker
Недавно возникшая ошибка DisableProfiler
при попытке выполнить метод fit
в SageMaker может показаться неожиданной, учитывая, что ранее ваш код работал корректно. Однако эта проблема, скорее всего, вызвана изменениями в конфигурации вашей среды или обновлениями, связанными с используемыми сервисами. В данной статье мы рассмотрим причины возникновения ошибки, а также предложим пути их устранения.
Понимание источника ошибки
На уровне поверхности, ошибка, представленная ниже, указывает на две основные проблемы в конфигурации параметров:
Parameter validation failed:
Missing required parameter in ProfilerConfig: "S3OutputPath"
Unknown parameter in ProfilerConfig: "DisableProfiler", must be one of: S3OutputPath, ProfilingIntervalInMilliseconds, ProfilingParameters
-
Отсутствие параметра S3OutputPath в ProfilerConfig: SageMaker требует, чтобы
S3OutputPath
был указан, когда профайлер включен. Этот путь указывает, куда в S3 будут загружаться данные профайлинга. -
Неизвестный параметр "DisableProfiler": Параметр
DisableProfiler
, похоже, не поддерживается в вашей конфигурацииProfilerConfig
. Это может указывать на то, что вы использовали параметр неправильно или что он был удален из последних версий API.
Решение проблемы
Следуя предоставленным шагам, вы сможете стабилизировать работу вашей среды и решить возникшую ошибку:
-
Проверка документации и параметров: Убедитесь, что в вашей конфигурации используется актуальная версия API, и настройте параметры профилирования согласно последней документации. Это может означать изменение параметров
S3OutputPath
и других, связанных с профилированием. -
Использование более стабильной среды 실행: Из вашего описания следует, что проблема проявилась при работе в нестабильной среде, созданной в Studio. Amazon рекомендовала переключиться на использование ноутбуков, созданных на панели Studio, для обеспечения большей стабильности. Это сделает использование вашего терминала более надежным и уменьшит вероятность возникновения непредвиденных ошибок.
-
Удаление неопознанных параметров: Удалите параметр
DisableProfiler
из вашего вызова, если такой функционал не поддерживается в вашей конфигурации.
Заключение
Ошибка DisableProfiler
на стадии выполнения fit
модели XGBoost в SageMaker может быть связана как с изменениями в настройках среды, так и с обновлениями API. Переход на использование стабильного терминала и корректная настройка параметров профилирования должны помочь вам разрешить эту проблему. Регулярное следование обновлениям документации AWS SageMaker также поможет вам избегать подобных проблем в будущем.