Используйте подход, ориентированный на данные, чтобы свести к минимуму объем данных, необходимых для обучения моделей Amazon SageMaker.

Используйте подход, ориентированный на данные, чтобы свести к минимуму объем данных, необходимых для обучения моделей Amazon SageMaker.

По мере совершенствования моделей машинного обучения (ML) специалисты по данным, инженеры и исследователи машинного обучения все больше внимания уделяют определению и улучшению качества данных. Это привело к появлению ориентированного на данные подхода к машинному обучению и различных методов повышения производительности модели за счет сосредоточения внимания на требованиях к данным. Применение этих методов позволяет специалистам по машинному обучению сократить объем данных, необходимых для обучения модели машинного обучения.

В рамках этого подхода появились передовые методы выбора подмножества данных, чтобы ускорить обучение за счет уменьшения количества входных данных. Этот процесс основан на автоматическом выборе заданного количества точек, которые аппроксимируют распределение большего набора данных, и использовании их для обучения. Применение этого типа техники сокращает время, необходимое для обучения модели машинного обучения.

В этом посте мы описываем применение принципов ИИ, ориентированных на данные, с Amazon SageMaker - основа правды, как реализовать методы выбора подмножества данных, используя ШНУРЫ репозиторий на Создатель мудреца Амазонки уменьшить количество данных, необходимых для обучения начальной модели, и как проводить эксперименты с использованием этого подхода с Эксперименты с Amazon SageMaker.

Ориентированный на данные подход к машинному обучению

Прежде чем углубляться в более сложные методы, ориентированные на данные, такие как выбор подмножества данных, вы можете улучшить свои наборы данных несколькими способами, применяя набор базовых принципов к процессу маркировки данных. Для этого Ground Truth поддерживает различные механизмы для улучшения согласованности меток и качества данных.

Согласованность меток важна для повышения производительности модели. Без него модели не могут создать границу решения, которая разделяет каждую точку, принадлежащую разным классам. Одним из способов обеспечения согласованности является использование объединение аннотаций в Ground Truth, что позволяет вам обслуживать данный пример для нескольких меток и использовать агрегированную метку, предоставленную в качестве основной истины для этого примера. Расхождение в метке измеряется оценкой достоверности, полученной с помощью Ground Truth. При наличии расхождений в этикетках вам следует проверить, нет ли двусмысленности в инструкциях по маркировке, предоставленных вашим этикетировщикам, которые можно устранить. Этот подход смягчает последствия предвзятости отдельных маркировщиков, что имеет решающее значение для обеспечения большей согласованности этикеток.

Еще один способ улучшить производительность модели, сосредоточив внимание на данных, включает разработку методов анализа ошибок в метках по мере их появления, чтобы определить наиболее важные подмножества данных, которые необходимо улучшить. вы можете сделать это для своего обучающего набора данных, сочетая ручные усилия, включающие погружение в помеченные примеры и использование Amazon CloudWatch журналы и метрики, созданные заданиями маркировки Ground Truth. Также важно смотреть на ошибки, которые модель делает во время вывода, чтобы управлять следующей итерацией маркировки для нашего набора данных. Помимо этих механизмов, Amazon SageMaker Уточнить позволяет специалистам по данным и инженерам машинного обучения запускать такие алгоритмы, как ЯдроSHAP чтобы позволить им интерпретировать прогнозы, сделанные их моделью. Как уже упоминалось, более глубокое объяснение прогнозов модели может быть связано с первоначальным процессом маркировки для его улучшения.

Наконец, вы можете отказаться от шумных или чрезмерно избыточных примеров. Это позволяет сократить время обучения за счет удаления примеров, которые не способствуют повышению производительности модели. Однако определение полезного подмножества данного набора данных вручную сложно и требует много времени. Применение методов выбора подмножества данных, описанных в этом посте, позволяет автоматизировать этот процесс в соответствии с установленными рамками.

Примеры использования

Как уже упоминалось, ИИ, ориентированный на данные, фокусируется на улучшении ввода модели, а не на архитектуре самой модели. После того, как вы применили эти принципы во время маркировки данных или разработки признаков, вы можете продолжать фокусироваться на входных данных модели, применяя выбор подмножества данных во время обучения.

В этом посте мы применяем выбор подмножества данных на основе обобщения для эффективного и надежного обучения (БЛЕСК), который является одним из многих методов выбора подмножества данных, реализованных в репозитории CORDS, для алгоритма обучения RESNET-18 модель, чтобы свести к минимуму время, необходимое для обучения модели для классификации СИФАР-10 изображений. Ниже приведены несколько примеров изображений с соответствующими метками, взятыми из набора данных CIFAR-10.

Набор данных СИФАР

ResNet-18 часто используется для задач классификации. Это 18-слойная глубокая сверточная нейронная сеть. Набор данных CIFAR-10 часто используется для оценки достоверности различных методов и подходов в машинном обучении. Он состоит из 60,000 32 цветных изображений 32×10, помеченных по XNUMX классам.

В следующих разделах мы покажем, как GLISTER может помочь вам в некоторой степени ответить на следующий вопрос:

Какой процент данного набора данных мы можем использовать и при этом добиться хорошей производительности модели во время обучения?

Применение GLISTER к вашему алгоритму обучения введет дробь в качестве гиперпараметра в ваш алгоритм обучения. Это представляет процент данного набора данных, который вы хотите использовать. Как и в случае любого гиперпараметра, поиск значения, обеспечивающего наилучший результат для вашей модели и данных, требует настройки. В этом посте мы не будем углубляться в настройку гиперпараметров. Для получения дополнительной информации см. Оптимизация гиперпараметров с помощью автоматической настройки моделей Amazon SageMaker.

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

Хотя мы обсуждаем использование GLISTER на изображениях, вы также можете применить его к алгоритмам обучения, работающим со структурированными или табличными данными.

Выбор подмножества данных

Цель выбора подмножества данных — ускорить процесс обучения, сводя к минимуму влияние на точность и повышая надежность модели. В частности, GLISTER-ONLINE выбирает подмножество по мере обучения модели, пытаясь максимизировать логарифмическую вероятность этого подмножества обучающих данных в указанном вами проверочном наборе. Оптимизация выбора подмножества данных таким образом уменьшает шум и дисбаланс классов, которые часто встречаются в реальных наборах данных, и позволяет адаптировать стратегию выбора подмножества по мере обучения модели.

Начальная ГЛИСТЕР бумага описывает компромисс между ускорением и точностью при различных размерах подмножества данных, используя Ленет модель:

Размер подмножества Форсировочная точность
10% 6x -3%
30% 2.5x -1.20%
50% 1.5x -0.20%

Для обучения модели мы запускаем Обучение работе с SageMaker с помощью специального сценария обучения. Мы также уже загрузили наш набор данных изображений в Простой сервис хранения Amazon (Амазон С3). Как и в случае с любым учебным заданием SageMaker, нам необходимо определить Estimator объект. Оценщик PyTorch из sagemaker.pytorch package позволяет нам запускать собственный обучающий скрипт в управляемом контейнере PyTorch. inputs переменная, переданная оценщику .fit Функция содержит словарь местоположения S3 набора данных для обучения и проверки.

Ассоциация train.py скрипт запускается при запуске обучающего задания. В этом скрипте мы импортируем модель ResNet-18 из библиотеки CORDS и передаем ей количество классов в нашем наборе данных следующим образом:

from cords.utils.models import ResNet18 numclasses = 10
model = ResNet18(numclasses)

Затем мы используем gen_dataset функция из CORDS для создания обучающих, проверочных и тестовых наборов данных:

from cords.utils.data.datasets.SL import gen_dataset train_set, validation_set, test_set, numclasses = gen_dataset(
datadir="/opt/ml/input/data/training",
dset_name="cifar10",
feature="dss",
type="image")

Из каждого набора данных мы создаем эквивалентный загрузчик данных PyTorch:

train_loader = torch.utils.data.DataLoader(train_set,
batch_size=batch_size,
shuffle=True) validation_loader = torch.utils.data.DataLoader(validation_set,
batch_size=batch_size,
shuffle=False)

Наконец, мы используем эти загрузчики данных для создания GLISTERDataLoader из библиотеки CORDS. Он использует реализацию стратегии выбора GLISTER-ONLINE, которая применяет выбор подмножества по мере того, как мы обновляем модель во время обучения, как обсуждалось ранее в этом посте.

Чтобы создать объект, мы передаем конкретные аргументы стратегии выбора в виде DotMap объект вместе с train_loader, validation_loaderи logger:

import logging
from cords.utils.data.dataloader.SL.adaptive import GLISTERDataLoader
from dotmap import DotMap dss_args = # GLISTERDataLoader specific arguments
dss_args = DotMap(dss_args)
dataloader = GLISTERDataLoader(train_loader,
validation_loader,
dss_args,
logger,
batch_size=batch_size,
shuffle=True,
pin_memory=False)

Ассоциация GLISTERDataLoader теперь можно применять как обычный загрузчик данных в цикле обучения. Он будет выбирать подмножества данных для следующего обучающего пакета, поскольку модель учится на основе потерь этой модели. Как показано в предыдущей таблице, добавление стратегии выбора подмножества данных позволяет нам значительно сократить время обучения, даже с дополнительным шагом выбора подмножества данных, с небольшим компромиссом в точности.

Специалистам по данным и инженерам по машинному обучению часто необходимо оценить обоснованность подхода, сравнив его с некоторыми исходными данными. Мы покажем, как это сделать, в следующем разделе.

Отслеживание экспериментов

Вы можете использовать SageMaker Experiments для измерения достоверности подхода к выбору подмножества данных. Для получения дополнительной информации см. Amazon SageMaker Experiments нового поколения — систематизируйте, отслеживайте и сравнивайте свои тренинги по машинному обучению в любом масштабе..

В нашем случае мы проводим четыре эксперимента: базовый уровень без применения выбора подмножества данных и три других с различными fraction параметры, которые представляют размер подмножества по отношению к общему набору данных. Естественно, используя меньший fraction должен привести к сокращению времени обучения, но также к снижению точности модели.

Для этого поста каждый тренировочный прогон представлен в виде Run в экспериментах SageMaker. Прогоны, связанные с нашим экспериментом, сгруппированы под одним Experiment объект. Прогоны можно привязать к общему эксперименту при создании Estimator с SDK. См. следующий код:

from sagemaker.utils import unique_name_from_base
from sagemaker.experiments.run import Run, load_run experiment_name = unique_name_from_base("data-centric-experiment")
with Run(
experiment_name=experiment_name,
sagemaker_session=sess
) as run:
estimator = PyTorch('train.py',
source_dir="source",
role=role,
instance_type=instance_type,
instance_count=1,
framework_version=framework_version,
py_version='py3',
env={ 'SAGEMAKER_REQUIREMENTS': 'requirements.txt',
})
estimator.fit(inputs)

В рамках вашего пользовательского сценария обучения вы можете собирать показатели выполнения с помощью load_run:

from sagemaker.experiments.run import load_run
from sagemaker.session import Session if __name__ == "__main__":
args = parse_args()
session = Session(boto3.session.Session(region_name=args.region))
with load_run(sagemaker_session=session) as run:
train(args, run)

Затем, используя объект запуска, возвращенный предыдущей операцией, вы можете собирать точки данных за эпоху, вызывая run.log_metric(name, value, step) и предоставление имени метрики, значения и текущего номера эпохи.

Чтобы измерить достоверность нашего подхода, мы собираем показатели, соответствующие потерям при обучении, точности обучения, потерям при проверке, точности проверки и времени для завершения эпохи. Затем, после запуска обучающих заданий, мы можем просмотреть результаты нашего эксперимента in Студия Amazon SageMaker или через SageMaker Experiments SDK.

Чтобы просмотреть точность проверки в Studio, выберите Анализировать на эксперименте Работает стр.

Список экспериментов

Добавьте диаграмму, задайте свойства диаграммы и выберите Создавай. Как показано на следующем снимке экрана, вы увидите график точности проверки в каждую эпоху для всех прогонов.

Таблица экспериментов

SDK также позволяет получать информацию, связанную с экспериментом, в виде кадра данных Pandas:

from sagemaker.analytics import ExperimentAnalytics trial_component_analytics = ExperimentAnalytics(
sagemaker_session=sess.sagemaker_client,
experiment_name=experiment_name
)
analytic_table = trial_component_analytics.dataframe()

При желании учебные задания можно сортировать. Например, мы могли бы добавить "metrics.validation:accuracy.max" как ценность sort_by параметр передан в ExperimentAnalytics чтобы вернуть результат, упорядоченный по точности проверки.

Как и ожидалось, наши эксперименты показывают, что применение GLISTER и выбор подмножества данных к алгоритму обучения сокращает время обучения. При запуске нашего базового алгоритма обучения среднее время завершения одной эпохи колеблется около 27 секунд. Напротив, применение GLISTER для выбора подмножества, эквивалентного 50 %, 30 % и 10 % от общего набора данных, приводит к времени завершения эпохи около 13, 8.5 и 2.75 секунд соответственно на экземплярах ml.p3.2xlarge. .

Мы также наблюдаем сравнительно минимальное влияние на точность проверки, особенно при использовании подмножеств данных 50%. После обучения в течение 100 эпох точность проверки базовой линии составляет 92.72%. Напротив, применение GLISTER для выбора подмножества, эквивалентного 50 %, 30 % и 10 % от общего набора данных, приводит к точности проверки 91.42 %, 89.76 % и 82.82 % соответственно.

Заключение

SageMaker Ground Truth и SageMaker Experiments обеспечивают ориентированный на данные подход к машинному обучению, позволяя специалистам по данным и инженерам по машинному обучению создавать более согласованные наборы данных и отслеживать влияние более продвинутых методов по мере их реализации на этапе построения модели. Реализация ориентированного на данные подхода к машинному обучению позволяет уменьшить объем данных, необходимых для вашей модели, и повысить ее надежность.

Попробуйте и дайте нам знать, что вы думаете в комментариях.


Об авторах

Используйте подход, ориентированный на данные, чтобы минимизировать объем данных, необходимых для обучения моделей Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Николя Бернье является архитектором решений, частью команды канадского государственного сектора в AWS. В настоящее время он получает степень магистра в области исследований в области глубокого обучения и имеет пять сертификатов AWS, включая сертификат по специальностям машинного обучения. Николас увлечен тем, что помогает клиентам углублять свои знания об AWS, работая с ними над воплощением их бизнес-задач в технические решения.

Используйте подход, ориентированный на данные, чтобы минимизировать объем данных, необходимых для обучения моделей Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Дживанильдо Алвес является архитектором прототипов в группе прототипирования и облачной инженерии в Amazon Web Services, помогая клиентам внедрять инновации и ускоряться, демонстрируя искусство возможного на AWS, уже внедрив несколько прототипов на основе искусственного интеллекта. У него долгая карьера в области разработки программного обеспечения, а ранее он работал инженером по разработке программного обеспечения в Amazon.com.br.

Отметка времени:

Больше от Машинное обучение AWS