В современном быстро развивающемся мире искусственного интеллекта модели глубокого обучения оказались в авангарде инноваций, их приложения охватывают компьютерное зрение (CV), обработку естественного языка (NLP) и системы рекомендаций. Однако растущие затраты, связанные с обучением и доработкой этих моделей, создают проблемы для предприятий. Эта стоимость в первую очередь обусловлена огромным объемом данных, используемых при обучении моделей глубокого обучения. Сегодня большие модели часто обучаются на терабайтах данных, и обучение может занять недели, даже при использовании мощного графического процессора или оборудования на базе AWS Trainium. Обычно клиенты полагаются на методы и оптимизации, повышающие эффективность цикла обучения модели, такие как оптимизированные ядра или слои, обучение смешанной точности или такие функции, как распределенные библиотеки обучения Amazon SageMaker. Однако сегодня меньше внимания уделяется эффективности самих обучающих данных. Не все данные вносят одинаковый вклад в процесс обучения во время обучения модели: значительная часть вычислительных ресурсов может быть потрачена на обработку простых примеров, которые не вносят существенного вклада в общую точность модели.
Клиенты традиционно полагались на методы предварительной обработки, такие как повышающая или понижающая дискретизация и дедупликация, для уточнения и улучшения качества информации в своих данных. Эти методы могут помочь, но зачастую отнимают много времени, требуют специального опыта в области науки о данных и иногда могут быть скорее искусством, чем наукой. Клиенты часто также полагаются на тщательно подобранные наборы данных, такие как РафинедВеб, для улучшения производительности своих моделей; однако эти наборы данных не всегда имеют полностью открытый исходный код и часто имеют более общее назначение и не связаны с вашим конкретным вариантом использования.
Как еще можно преодолеть эту неэффективность, связанную с выборками данных с низким содержанием информации во время обучения модели?
Мы рады объявить об общедоступной предварительной версии интеллектуального просеивания — новой возможности SageMaker, которая может снизить затраты на обучение моделей глубокого обучения до 35%. Интеллектуальное просеивание — это новый метод повышения эффективности данных, который активно анализирует образцы данных во время обучения и отфильтровывает образцы, менее информативные для модели. Благодаря обучению на меньшем подмножестве данных только с выборками, которые больше всего способствуют сходимости модели, общий объем обучения и затраты уменьшаются с минимальным влиянием на точность или вообще без него. Кроме того, поскольку эта функция работает онлайн во время обучения модели, интеллектуальное просеивание не требует внесения изменений в восходящие данные или нисходящий конвейер обучения.
В этом посте мы обсуждаем следующие темы:
- Новая возможность интеллектуального просеивания в SageMaker и как она работает
- Как использовать интеллектуальное просеивание с обучающими нагрузками PyTorch
Вы также можете ознакомиться с нашей документацией и образцы тетрадей дополнительные ресурсы о том, как начать работу с интеллектуальным просеиванием.
Как работает умное просеивание SageMaker
Мы начинаем этот пост с обзора того, как функция интеллектуального просеивания может ускорить обучение вашей модели в SageMaker.
Задача интеллектуального просеивания — просеивать данные обучения в ходе процесса обучения и передавать в модель только наиболее информативные образцы. Во время типичного обучения с помощью PyTorch данные итеративно отправляются пакетами в цикл обучения и на ускорительные устройства (например, графические процессоры или чипы Trainium). Загрузчик данных PyTorch. Интеллектуальное просеивание реализуется на этом этапе загрузки данных и, следовательно, не зависит от какой-либо предварительной обработки данных в вашем конвейере обучения.
Интеллектуальное просеивание использует вашу модель и заданную пользователем функцию потерь для выполнения оценочного прямого прохода каждого образца данных по мере его загрузки. Выборки с высокими потерями окажут существенное влияние на обучение модели и поэтому используются в обучении; выборки данных с относительно небольшими потерями откладываются и исключаются из обучения.
Ключевыми входными данными для интеллектуального просеивания является доля исключаемых данных: например, если установить долю в 33% (beta_value=0,5), образцы примерно в нижней трети потерь каждой партии будут исключены из обучения. Когда для завершения пакета идентифицировано достаточно образцов с высокими потерями, данные отправляются через полный цикл обучения, и модель обучается и тренируется в обычном режиме. Вам не нужно вносить какие-либо изменения в цикл обучения, если включено интеллектуальное просеивание.
Следующая диаграмма иллюстрирует этот рабочий процесс.
Включив только часть обучающих данных, интеллектуальное просеивание сокращает время и вычисления, необходимые для обучения модели. В наших тестах мы добились сокращения общего времени и стоимости обучения почти на 40%. При интеллектуальном просеивании данных влияние на точность модели может быть минимальным или вообще отсутствовать, поскольку исключенные образцы имели относительно низкие потери для модели. В следующую таблицу мы включили ряд экспериментальных результатов, демонстрирующих возможное повышение производительности с помощью интеллектуального просеивания SageMaker.
В таблице столбец % принятого указывает долю данных, которые включены и используются в цикле обучения. Увеличение этого настраиваемого параметра снижает стоимость (как показано в столбце % экономии IMR), но также может повлиять на точность. Соответствующая настройка % принятого зависит от вашего набора данных и модели; вам следует поэкспериментировать и настроить этот параметр, чтобы добиться наилучшего баланса между снижением затрат и влиянием на точность.
Обзор решения
В следующих разделах мы рассмотрим практический пример включения интеллектуального отбора с помощью учебного задания PyTorch в SageMaker. Если вы хотите быстро приступить к работе, вы можете перейти к Примеры PyTorch или PyTorch Lightning.
Предварительные условия
Мы предполагаем, что вы уже знаете, как обучать модель с помощью PyTorch или PyTorch Lightning, используя SageMaker Python SDK, и класс Estimator, используя для обучения контейнеры глубокого обучения SageMaker. Если нет, обратитесь к Использование SDK SageMaker Python прежде чем продолжить.
Начните работу с интеллектуальным просеиванием SageMaker
В типичном задании по обучению PyTorch вы инициализируете обучение PyTorch. Загрузчик данных с вашим набором данных и другими необходимыми параметрами, что обеспечивает входные пакеты по мере обучения. Чтобы обеспечить интеллектуальный анализ ваших тренировочных данных, вы будете использовать новый DataLoader
сорт: smart_sifting.dataloader.sift_dataloader.SiftingDataloader
. Этот класс используется как оболочка поверх существующего PyTorch. DataLoader
и вместо этого в процессе обучения будет использоваться SiftingDataloader
для получения входных пакетов. SiftingDataLoader
получает входной пакет из исходного PyTorch DataLoader
, оценивает важность образцов в партии и создает просеянную партию из образцов с высокими потерями, которые затем передаются на этап обучения. Обертка выглядит как следующий код:
SiftingDataloader
требуются некоторые дополнительные параметры для анализа ваших тренировочных данных, которые вы можете указать через sift_config
параметр. Сначала создайте smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig
объект. Этот объект содержит настраиваемые и необходимые beta_value
и loss_history_length
, которые соответственно определяют долю выборок, которые следует сохранить, и окно выборок, которое необходимо включить при оценке относительных потерь. Обратите внимание: поскольку интеллектуальное отсеивание использует вашу модель для определения важности выборки, использование модели с полностью случайными весами может иметь негативные последствия. Вместо этого вы можете использовать loss_based_sift_config
и sift_delay
чтобы отложить процесс просеивания до тех пор, пока веса параметров в модели не выйдут за пределы случайных значений. (Подробнее см. в разделе «Применение интеллектуального отбора к сценарию обучения».) В следующем коде мы определяем sift_config
и укажите beta_value
и loss_history_length
а также задержать начало просеивания с помощью loss_based_sift_config
:
Далее вы также должны включить loss_impl
параметр в SiftingDataloader
объект. Интеллектуальное отсеивание работает на уровне отдельной выборки, и крайне важно иметь доступ к методу расчета потерь, чтобы определить важность выборки. Вы должны реализовать метод просеивания потерь, который возвращает тензор nx1, который содержит значения потерь для n выборок. Обычно вы указываете тот же метод потерь, который используется вашим model
во время обучения. Наконец, включите указатель на вашу модель в SiftingDataloader
объект, который используется для оценки выборок перед их включением в обучение. См. следующий код:
В следующем коде показан полный пример включения интеллектуального просеивания с помощью существующего задания обучения BERT:
Заключение
В этом посте мы рассмотрели общедоступную предварительную версию интеллектуального просеивания — новой возможности SageMaker, которая может сократить затраты на обучение моделей глубокого обучения до 35%. Эта функция повышает эффективность данных во время обучения, отфильтровывая менее информативные образцы данных. Включая только наиболее важные данные для сходимости моделей, вы можете значительно сократить время и затраты на обучение, сохраняя при этом точность. Более того, он легко интегрируется в существующие процессы, не требуя внесения изменений в ваши данные или конвейер обучения.
Чтобы глубже погрузиться в интеллектуальное просеивание SageMaker, изучить, как оно работает, и реализовать его с помощью обучающих рабочих нагрузок PyTorch, ознакомьтесь с нашей документацией и образцы тетрадей и начать работу с этой новой возможностью.
Об авторах
Роберт Ван Дюзен — старший менеджер по продукту в Amazon SageMaker. Он руководит фреймворками, компиляторами и методами оптимизации для обучения глубокому обучению.
К. Локеш Кумар Редди — старший инженер в команде Amazon Applied AI. Он занимается эффективными методами обучения машинному обучению и созданием инструментов для улучшения диалоговых систем искусственного интеллекта. В свободное время ему нравится исследовать новые культуры, получать новый опыт и быть в курсе последних технологических тенденций.
Абхишек Дан является старшим менеджером по разработке в команде Amazon Applied AI и занимается машинным обучением и диалоговыми системами искусственного интеллекта. Он увлечен технологиями искусственного интеллекта и работает на стыке науки и техники, развивая возможности систем искусственного интеллекта для создания более интуитивно понятных и плавных взаимодействий человека и компьютера. В настоящее время он создает приложения на основе больших языковых моделей для повышения эффективности и улучшения CX для Amazon.