Логотип Зефирнет

Повысьте производительность разработчиков машинного обучения с помощью Weights & Biases: пример компьютерного зрения на Amazon SageMaker

Дата:

Содержание и мнения в этом сообщении принадлежат стороннему автору, и AWS не несет ответственности за содержание или точность этого сообщения.

Поскольку все больше организаций используют методы глубокого обучения, такие как компьютерное зрение и обработка естественного языка, разработчик машинного обучения (ML) нуждается в масштабируемых инструментах для отслеживания экспериментов, происхождения и совместной работы. Отслеживание экспериментов включает такие метаданные, как операционная система, используемая инфраструктура, библиотека, входные и выходные наборы данных, которые часто отслеживаются в электронной таблице вручную. Lineage включает в себя отслеживание наборов данных, преобразований и алгоритмов, используемых для создания модели ML. Совместная работа включает в себя разработчиков машинного обучения, работающих над одним проектом, а также разработчиков машинного обучения, которые делятся своими результатами между командами и заинтересованными сторонами — этот процесс обычно осуществляется по электронной почте, с помощью снимков экрана и презентаций PowerPoint.

В этом посте мы обучаем модель идентифицировать объекты для варианта использования автономного транспортного средства с использованием весов и смещений (W&B) и Создатель мудреца Амазонки. Мы показываем, как совместное решение сокращает объем ручной работы разработчика машинного обучения, повышает прозрачность процесса разработки модели и позволяет командам совместно работать над проектами.

Мы запускаем этот пример на Студия Amazon SageMaker чтобы вы попробовали сами.

Обзор весов и смещений

Weights & Biases помогает командам машинного обучения быстрее создавать более качественные модели. Всего несколько строк кода в блокноте SageMaker, и вы сможете мгновенно отлаживать, сравнивать и воспроизводить свои модели — архитектуру, гиперпараметры, коммиты git, веса моделей, использование графического процессора, наборы данных и прогнозы — и все это в сотрудничестве с вашими товарищами по команде.

Компании W&B доверяют более 200,000 XNUMX специалистов по машинному обучению из самых инновационных компаний и исследовательских организаций мира. Чтобы попробовать бесплатно, зарегистрируйтесь на Веса и отклоненияИли посетить Листинг W&B AWS Marketplace.

Начало работы с SageMaker Studio

SageMaker Studio — первая полностью интегрированная среда разработки (IDE) для машинного обучения. Studio предоставляет единый веб-интерфейс, с помощью которого специалисты по машинному обучению и специалисты по данным могут создавать, обучать и развертывать модели несколькими щелчками мыши в одном месте.

Чтобы начать работу со Studio, вам потребуется учетная запись AWS и Управление идентификацией и доступом AWS (IAM) пользователь или роль с разрешениями на создание домена Studio. Ссылаться на Подключение к домену Amazon SageMaker создать домен и Студийная документация обзор использования визуального интерфейса Studio и блокнотов.

Настройте среду

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

Вы можете клонировать репозиторий через терминал или пользовательский интерфейс Studio. Чтобы клонировать репозиторий через терминал, откройте системный терминал (на Файл Меню, выберите Новые и Терминал) и введите следующую команду:

git clone https://github.com/wandb/SageMakerStudio

Чтобы клонировать репозиторий из пользовательского интерфейса Studio, см. Клонирование репозитория Git в SageMaker Studio.

Для начала выберите 01_data_processing.ipynb ноутбук. Вам будет предложено приглашение переключателя ядра. В этом примере используется PyTorch, поэтому мы можем выбрать готовый PyTorch 1.10 Python 3.8 оптимизирован для графического процессора изображение, чтобы начать наш блокнот. Вы можете увидеть, как приложение запускается, и когда ядро ​​готово, оно показывает тип экземпляра и ядро ​​в правом верхнем углу вашего ноутбука.

Нашему блокноту нужны дополнительные зависимости. Этот репозиторий предоставляет файл requirements.txt с дополнительными зависимостями. Запустите первую ячейку, чтобы установить необходимые зависимости:

%pip install -r requirements.txt

Вы также можете создать конфигурацию жизненного цикла для автоматической установки пакетов при каждом запуске приложения PyTorch. Видеть Настройте Amazon SageMaker Studio с помощью конфигураций жизненного цикла инструкции и пример реализации.

Использование весов и смещений в SageMaker Studio

Веса и смещения (wandb) — это стандартная библиотека Python. После установки достаточно добавить несколько строк кода в сценарий обучения, и вы готовы вести журнал экспериментов. Мы уже установили его через наш файл requirements.txt. Вы также можете установить его вручную с помощью следующего кода:

! pip install wandb

Тематическое исследование: семантическая сегментация автономных транспортных средств

Dataset

Мы используем Кембриджское вождение помеченной базы данных видео (CamVid) для этого примера. Он содержит коллекцию видео с семантическими метками классов объектов, дополненную метаданными. База данных предоставляет наземные метки истинности, которые связывают каждый пиксель с одним из 32 семантических классов. Мы можем верифицировать наш набор данных как wandb.Артефакт, чтобы мы могли сослаться на него позже. См. следующий код:

with wandb.init(project="sagemaker_camvid_demo", job_type="upload"):
   artifact = wandb.Artifact(
       name='camvid-dataset',
       type='dataset',
       metadata={
           "url": 'https://s3.amazonaws.com/fast-ai-imagelocal/camvid.tgz',
           "class_labels": class_labels
       },
       description="The Cambridge-driving Labeled Video Database (CamVid) is the first collection of videos with object class semantic labels, complete with metadata. The database provides ground truth labels that associate each pixel with one of 32 semantic classes."
   )
   artifact.add_dir(path)
   wandb.log_artifact(artifact)

Вы можете следить в 01_data_processing.ipynb Блокнот.

Мы также регистрируем ТАБЛИЦЫ набора данных. Таблицы — это многофункциональные и мощные сущности, подобные DataFrame, которые позволяют запрашивать и анализировать табличные данные. Вы можете анализировать свои наборы данных, визуализировать прогнозы моделей и делиться своими знаниями на центральной панели инструментов.

Таблицы Weights & Biases поддерживают множество мультимедийных форматов, таких как изображения, аудио и сигналы. Полный список медиаформатов см. Типы данных.

На следующем снимке экрана показана таблица с необработанными изображениями с сегментацией наземной истины. Вы также можете просмотреть интерактивная версия этой таблицы.

изображение

Обучить модель

Теперь мы можем создать модель и обучить ее на нашем наборе данных. Мы используем PyTorch и Fastai чтобы быстро прототипировать базовый план, а затем использовать wandb.Sweeps для оптимизации наших гиперпараметров. Следите за собой в 02_semantic_segmentation.ipynb ноутбук. При запросе ядра при открытии ноутбука выберите то же ядро ​​из нашего первого ноутбука, PyTorch 1.10 Python 3.8 оптимизирован для графического процессора. Ваши пакеты уже установлены, потому что вы используете одно и то же приложение.

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

Потому что Fastai библиотека имеет интеграцию с wandb, вы можете просто передать WandbCallback Ученику:

from fastai.callback.wandb import WandbCallback

loss_func=FocalLossFlat(axis=1)
model = SegmentationModel(backbone, hidden_dim, num_classes=num_classes)
wandb_callback = WandbCallback(log_preds=True)
   learner = Learner(
        data_loader,
        model,
        loss_func=loss_func,
        metrics=metrics,
        cbs=[wandb_callback],
    )

learn.fit_one_cycle(TRAIN_EPOCHS, LEARNING_RATE)

Для базовых экспериментов мы решили использовать простую архитектуру, вдохновленную Ун бумага с разными основами из тимм. Мы обучали наши модели с Потеря фокуса как критерий. С помощью Weights & Biases вы можете легко создавать информационные панели со сводками ваших экспериментов для быстрого анализа результатов обучения, как показано на следующем снимке экрана. Вы также можете просмотреть эту панель в интерактивном режиме.

Поиск гиперпараметров с разверткой

Чтобы повысить производительность базовой модели, нам нужно выбрать лучшую модель и лучший набор гиперпараметров для обучения. W&B упрощает нам задачу, используя метет.

Мы выполняем Байесовский поиск гиперпараметров с целью максимизировать точность переднего плана модели в наборе данных проверки. Для выполнения развертки мы определяем конфигурационный файл Sweep.yaml. Внутри этого файла мы передаем желаемый метод для использования: Байес и параметры и их соответствующие значения для поиска. В нашем случае мы пробуем разные магистрали, размеры пакетов и функции потерь. Мы также изучаем различные параметры оптимизации, такие как скорость обучения и уменьшение веса. Поскольку это непрерывные значения, мы делаем выборку из распределения. Есть несколько параметры конфигурации, доступные для разверток.

program: train.py
project: sagemaker_camvid_demo
method: bayes
metric:
    name: foreground_acc
    goal: maximize
early_terminate:
    type: hyperband
    min_iter: 5
parameters:
    backbone:
        values: ["mobilenetv2_100","mobilenetv3_small_050","mobilenetv3_large_100","resnet18","resnet34","resnet50","vgg19"]
    batch_size: 
        values: [8, 16]
    image_resize_factor: 
        value: 4
    loss_function: 
        values: ["categorical_cross_entropy", "focal", "dice"]
    learning_rate: 
        distribution: uniform 
        min: 1e-5
        max: 1e-2
    weight_decay: 
        distribution: uniform
        min: 0.0 
        max: 0.05

После этого в терминале вы запускаете развертку с помощью командная строка:

$ wandb sweep sweep.yaml —-project="sagemaker_camvid_demo"

Затем запустите агент очистки на этой машине со следующим кодом:

$ wandb agent <sweep_id>

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

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

Мы можем извлечь следующие ключевые идеи из развертки:

  • Более низкая скорость обучения и меньшее затухание веса приводят к лучшей точности переднего плана и более высоким оценкам Dice.
  • Размер партии имеет сильную положительную корреляцию с показателями.
  • Ассоциация Магистрали на основе VGG может быть не лучшим вариантом для обучения нашей окончательной модели, потому что они склонны приводить к исчезающий градиент. (Они отфильтровываются по мере расхождения потерь.)
  • Ассоциация RESNET Магистральные сети обеспечивают наилучшую общую производительность с точки зрения показателей.
  • Для окончательной модели следует выбрать магистраль ResNet34 или ResNet50 из-за их высокой производительности с точки зрения показателей.

Данные и происхождение модели

Артефакты W&B были разработаны, чтобы облегчить создание версий ваших наборов данных и моделей, независимо от того, хотите ли вы хранить свои файлы с помощью W&B или у вас уже есть сегмент, который вы хотите отслеживать с помощью W&B. После того, как вы отследите свои наборы данных или файлы моделей, W&B автоматически регистрирует каждую модификацию, предоставляя вам полную и доступную для аудита историю изменений ваших файлов.

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

изображение

Интерпретация прогнозов модели

Weight & Biases особенно полезен при оценке производительности модели с использованием возможностей wandb.Таблицы чтобы визуализировать, где наша модель работает плохо. В этом случае нас особенно интересует правильное обнаружение уязвимых пользователей, таких как велосипеды и пешеходы.

Мы записали предсказанные маски вместе с коэффициентом оценки Dice для каждого класса в таблицу. Затем мы отфильтровали строки, содержащие нужные классы, и отсортировали по возрастанию оценки Dice.

В следующей таблице мы сначала фильтруем, выбирая, где результат игры в кости положительный (пешеходы присутствуют на изображении). Затем мы сортируем в порядке возрастания, чтобы определить пешеходов, которые обнаруживаются хуже всего. Имейте в виду, что результат Dice, равный 1, означает правильное сегментирование класса пешеходов. Вы также можете просмотреть эту таблицу в интерактивном режиме.

изображение

Мы можем повторить этот анализ с другими уязвимыми классами, такими как велосипеды или светофоры.

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

Заключение

В этом посте была продемонстрирована платформа Weights & Biases MLOps, как настроить W&B в SageMaker Studio и как запустить вводную записную книжку по совместному решению. Затем мы рассмотрели пример использования семантической сегментации автономных транспортных средств и продемонстрировали отслеживание тренировочных прогонов с помощью экспериментов W&B, оптимизацию гиперпараметров с использованием разверток W&B и интерпретацию результатов с помощью таблиц W&B.

Если вы хотите узнать больше, вы можете получить доступ к живой отчет W&B. Чтобы бесплатно попробовать Weights & Biases, зарегистрируйтесь на Веса и отклоненияИли посетить Листинг W&B AWS Marketplace.


Об авторах

Томас Капелле инженер по машинному обучению в компании Weights and Biases. Он отвечает за поддержание репозитория www.github.com/wandb/examples в актуальном состоянии. Он также создает контент, посвященный MLOPS, приложениям W&B к отраслям и интересному глубокому обучению в целом. Ранее он использовал глубокое обучение для краткосрочного прогнозирования солнечной энергии. Он имеет опыт работы в области городского планирования, комбинаторной оптимизации, экономики транспорта и прикладной математики.

Дурга Сьюри является архитектором решений машинного обучения в команде Amazon SageMaker Service SA. Она увлечена тем, чтобы сделать машинное обучение доступным для всех. За три года работы в AWS она помогла настроить платформы AI/ML для корпоративных клиентов. Когда она не работает, она любит поездки на мотоцикле, детективные романы и походы со своим четырехлетним хаски.

Картик Бхарати является лидером по продуктам для Amazon SageMaker с более чем десятилетним опытом управления продуктами, разработки стратегии, реализации и запуска продуктов.

Spot_img

Последняя разведка

Spot_img

Чат с нами

Всем привет! Могу я чем-нибудь помочь?