Amazon MLS-C01: Обучение, распределенное обучение и оптимизация гиперпараметров — Руководство по подготовке
Часть AWS Machine Learning Specialty MLS-C01 — Руководство по подготовке. Практикуйтесь с проверенными ответами в центре экзаменов Amazon, или пройдите тесты на время на ExamRoll.io.
Задачи обучения, контейнеры и переход к обучению в облаке с минимальными изменениями кода
При переносе рабочих нагрузок обучения в SageMaker основная цель проектирования — избежать переписывания кода модели, обеспечив при этом, чтобы среда выполнения контейнера предоставляла ожидаемые переменные окружения и пути каналов SageMaker. Используйте режим скрипта (Script Mode) SageMaker с Estimator для конкретного фреймворка (PyTorch, TensorFlow, XGBoost), чтобы один и тот же скрипт обучения запускался локально и в облаке с минимальными изменениями: чтение данных из
undefined
, запись модели в
undefined
и учет
undefined
/
undefined
/
undefined
. Для пользовательских сред соберите Docker-образ, расширяющий официальные AWS Deep Learning Containers (или SageMaker training toolkit), и загрузите его в Amazon ECR; убедитесь, что точка входа контейнера соответствует контракту обучения SageMaker. Выбирайте типы инстансов в зависимости от профиля вычислений: для задач, ограниченных CPU, — семейства ml.c5/m5, для обучения на GPU — инстансы ml.p3, ml.p4d, g4dn или g5; размер инстанса выбирайте по объему памяти и соотношению GPU к CPU. Распространенные ошибки включают жестко закодированные пути к локальным файлам, предположение о работе на одном хосте (что приводит к сбоям в распределенных задачах) и отсутствие явного указания режима ввода данных для обучения (Pipe или File), что влияет на производительность ввода-вывода. Для воспроизводимости и предсказуемости затрат включайте управляемое спотовое обучение только после добавления надежного механизма создания контрольных точек и установки
undefined
undefined
, чтобы разрешить прерывания спотовых инстансов.
Паттерны распределенного обучения, режимы ввода данных и выбор хранилища
Распределенное глубокое обучение требует баланса между параллелизмом моделей, параллелизмом данных и архитектурой ввода-вывода. Для обучения на нескольких GPU на одном хосте и на нескольких хостах используйте нативные примитивы фреймворков —
undefined
или
undefined
в TensorFlow — или воспользуйтесь библиотеками
undefined
от SageMaker:
undefined
для масштабирования с параллелизмом данных и
undefined
или DeepSpeed для очень больших трансформерных моделей. Используйте S3 в качестве канонического хранилища для больших наборов данных, но избегайте множества мелких GET-запросов к S3: либо объединяйте файлы в меньшее количество архивов, используйте шардированные файлы RecordIO/TFRecord, либо подключите POSIX-совместимую файловую систему. Выбирайте режим Pipe для потоковой передачи данных обучения напрямую из S3 для больших наборов данных, чтобы сократить использование локального диска и время запуска; используйте режим File, когда для обучения требуется произвольный доступ к данным или когда весь набор данных должен находиться на томе EBS. Для высокой пропускной способности и семантики POSIX на нескольких инстансах монтируйте Amazon FSx for Lustre или Amazon EFS; FSx лучше подходит для высокопроизводительного параллельного чтения. Частые ошибки включают отказ от шардирования данных по хостам (что вызывает дублирование), переоценку пропускной способности S3 на один инстанс и игнорирование правил масштабирования размера батча (batch-size) и скорости обучения (learning-rate) при увеличении параллелизма.
Спотовое обучение, создание контрольных точек и стратегии оптимизации затрат
Управляемое спотовое обучение может значительно снизить затраты, если архитектура вашего процесса обучения устойчива к прерываниям. Настройте управляемое спотовое обучение через SageMaker Estimator (
undefined
), а также механизм контрольных точек: укажите постоянный
undefined
и локальный
undefined
и сохраняйте контрольные точки достаточно часто, чтобы ограничить время на повторную работу. Установите
undefined
значительно больше, чем
undefined
, чтобы задача могла повторно использовать прерванные инстансы в пределах окна доступности спотовых инстансов. Для фреймворков реализуйте атомарную запись контрольных точек и надежную логику возобновления, которая проверяет последнюю контрольную точку в S3, восстанавливает состояние оптимизатора и планировщика, а затем продолжает обучение. Частота создания контрольных точек должна балансировать между накладными расходами на запись и потенциальными потерями вычислительных ресурсов; для длинных эпох или очень больших моделей создавайте контрольные точки в середине эпохи, используя снимки накопленных градиентов или сохранения на основе шагов. К ловушкам, ведущим к лишним затратам, относятся: сохранение контрольных точек не в S3 (что приводит к полному перезапуску при прерывании), зависимость от эфемерного хранилища инстанса и установка
undefined
равным
undefined
, что не позволяет выполнять повторные попытки. Сочетайте спотовое обучение со смешанной точностью (AMP) для дополнительной экономии вычислительных ресурсов и с уменьшенным объемом данных контрольных точек (сохраняя только веса и состояние оптимизатора), чтобы сократить затраты на запись в S3 и задержку при возобновлении.
Оптимизация гиперпараметров, стратегии настройки и практические критерии принятия решений
Эффективная оптимизация гиперпараметров (HPO) сочетает в себе стратегию поиска, распределение ресурсов и раннюю остановку. HyperparameterTuner в SageMaker поддерживает случайный (Random) и байесовский (Bayesian) поиск с настраиваемыми диапазонами для ContinuousParameter, IntegerParameter и CategoricalParameter; для больших пространств поиска начинайте со случайного поиска для широкого исследования, а затем запускайте байесовскую оптимизацию для использования перспективных областей. Используйте методы ранней остановки, такие как Hyperband или встроенную раннюю остановку SageMaker, чтобы сэкономить бюджет, и применяйте «теплый старт» (warm-start tuning) для повторного использования результатов в связанных экспериментах. Тщательно выбирайте целевые метрики (AUC на валидационных данных для задач с дисбалансом, F1 для обнаружения мошенничества с несбалансированными классами, пользовательские метрики, взвешенные по стоимости, для сценариев дефицита товаров). Распространенные ошибки включают слишком широкие диапазоны, которые приводят к сбоям многих заданий, использование категориального кодирования для по сути непрерывных гиперпараметров и отсутствие масштабирования HPO с учетом ресурсов: короткие пробные задания на небольших инстансах для поиска общих областей, за которыми следуют более длительные запуски на полноразмерных инстансах с GPU. Для распределенного обучения настраивайте как алгоритмические гиперпараметры (скорость обучения, размер батча), так и системные параметры (шаги накопления градиента, количество шардов данных). Используйте SageMaker Debugger для инструментирования и метрики CloudWatch для обнаружения зашумленных измерений; при высокой дисперсии увеличьте количество повторений для каждой конфигурации или используйте выбор на основе медианы.
Практическая задача: сценарий использования
Сценарий: FinRetailer выполняет в SageMaker тысячи прогнозов спроса на 30 дней для каждого SKU; они хранят многолетние ежедневные CSV-файлы в S3 и требуют высокой точности для товаров с «хвостовым» спросом, сохраняя при этом приемлемую задержку вывода в заданиях пакетной обработки.
Задача: Спрогнозировать тысячи временных рядов с длинной историей и несбалансированной важностью (дефицит товара обходится дороже, чем избыток запасов), минимизируя вычислительные затраты и сохраняя точность для редких событий высокого спроса.
Рекомендуемый подход:
- Используйте встроенный в SageMaker алгоритм DeepAR или кастомную временную модель на PyTorch (на основе Transformer), упакованную в Script Mode Estimator; храните обучающие данные в виде шардированных файлов RecordIO/TFRecord и используйте File mode с FSx for Lustre для высокопроизводительного обучения на нескольких инстансах.
- Начните с распределенного обучения на инстансах меньшего размера (smddp или Horovod) для настройки архитектуры модели и гиперпараметров, используя HyperparameterTuner с байесовским поиском и ранней остановкой; определите целевую функцию как взвешенную квантильную потерю, которая сильнее штрафует заниженные прогнозы.
- Включите управляемое спотовое обучение (managed spot training) с
checkpoint_s3_uriи частыми чекпоинтами на основе шагов; установитеmax_wait>max_run, чтобы выдерживать прерывания и возобновлять работу с последнего чекпоинта в S3. - Для вывода в производственной среде используйте пакетную обработку с помощью multi-model endpoints или асинхронных заданий batch transform на инстансах, оптимизированных для вычислений; применяйте бизнес-правила постобработки и откалиброванный порог, учитывающий затраты на дефицит товара.
Обоснование: Использование архитектур DeepAR/transformer позволяет эффективно обрабатывать множество временных рядов; шардированные бинарные форматы и FSx уменьшают узкие места ввода-вывода при распределенном обучении, байесовская HPO с настроенной целевой функцией фокусирует поиск на метриках операционных затрат, а спотовое обучение с чекпоинтами снижает стоимость без потери прогресса.
← Временные ряды и прогнозирование · Все домены · Развертывание →
Отработать эти вопросы → · Тесты на время на ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Сдайте экзамен →