Специалисты по данным часто работают над пониманием последствий различных стратегий предварительной обработки данных и разработки функций в сочетании с различными архитектурами моделей и гиперпараметрами. Для этого вам придется итеративно охватывать большие пространства параметров, и может быть сложно отслеживать ранее запущенные конфигурации и результаты, сохраняя при этом воспроизводимость экспериментов.
В этом посте рассматривается пример того, как отслеживать эксперименты с кодом, данными, артефактами и метриками с помощью Эксперименты с Amazon SageMaker в сочетании с Контроль версий данных (DVC). Мы покажем, как можно использовать DVC одновременно с Создатель мудреца Амазонки обработка и обучение рабочих мест. Мы обучаем различные модели CatBoost на наборе данных о жилье в Калифорнии из Репозиторий StatLibи меняйте стратегии удержания, отслеживая версию данных с помощью DVC. В каждом отдельном эксперименте мы отслеживаем входные и выходные артефакты, код и метрики с помощью SageMaker Experiments.
SageMaker эксперименты
SageMaker Experiments — это сервис AWS для отслеживания экспериментов машинного обучения (ML). SageMaker экспериментирует с Python SDK — это высокоуровневый интерфейс этого сервиса, который помогает отслеживать информацию об экспериментах с помощью Python.
Цель SageMaker Experiments — максимально упростить создание экспериментов, наполнение их испытаниями, добавление информации об отслеживании и происхождении, а также проведение аналитики по испытаниям и экспериментам.
Обсуждая эксперименты SageMaker, мы имеем в виду следующие концепции:
- Эксперимент – Сборник связанных испытаний. Вы добавляете испытания в эксперимент, который хотите сравнить.
- Суд – Описание многоэтапного рабочего процесса машинного обучения. Каждый шаг рабочего процесса описывается пробным компонентом.
- Пробный компонент – Описание отдельного шага рабочего процесса машинного обучения, такого как очистка данных, извлечение признаков, обучение модели или оценка модели.
- Tracker – Менеджер контекста Python для регистрации информации об одном компоненте пробного исследования (например, параметрах, метриках или артефактах).
Контроль версий данных
Контроль версий данных (DVC) — это новый тип программного обеспечения для управления версиями данных, рабочими процессами и экспериментами, основанный на идти (хотя может работать и автономно). DVC сокращает разрыв между устоявшимися наборами инженерных инструментов и потребностями науки о данных, позволяя вам воспользоваться преимуществами новых функции повторно используя существующие навыки и интуицию.
Совместное использование экспериментов в области науки о данных и совместная работа могут осуществляться посредством обычного потока Git (фиксации, ветвление, тегирование, запросы на извлечение) так же, как это работает для инженеров-программистов. С помощью Git и DVC команды по обработке данных и машинному обучению могут версионировать эксперименты, управлять большими наборами данных и обеспечивать воспроизводимость проектов.
DVC имеет следующие особенности:
- ДВК – это бесплатно, Открытый исходный код командной строки инструмент.
- DVC работает поверх репозиториев Git и имеет аналогичный интерфейс командной строки и поток операций, что и Git. DVC также может работать автономно, но без версиями клапанов.
- Управление версиями данных обеспечивается за счет замены больших файлов, каталогов наборов данных, моделей машинного обучения и т. д. небольшими. метафайлы (легко справиться с Git). Эти заполнители указывают на исходные данные, которые отделены от управления исходным кодом.
- Вы можете использовать локальное или облачное хранилище для хранения данных проекта отдельно от его базы кода. Таким образом ученые, работающие с данными, могут передавать большие наборы данных или делиться моделью, обученной на графическом процессоре, с другими.
- DVC делает проекты по обработке и анализу данных воспроизводимыми, создавая легкие трубопроводов используя неявные графы зависимостей и кодифицируя задействованные данные и артефакты.
- DVC не зависит от платформы. Он работает во всех основных операционных системах (Linux, macOS и Windows) и работает независимо от языков программирования (Python, R, Julia, сценарии оболочки и т. д.) или библиотек ML (Keras, TensorFlow, PyTorch, Scipy и т. д.). подробнее), использованные в проекте.
- DVC быстро устанавливать и не требует специальной инфраструктуры и не зависит от API или внешних сервисов. Это автономный инструмент CLI.
Эксперименты SageMaker и образец DVC
Следующие Пример GitHub показывает, как использовать DVC в среде SageMaker. В частности, мы рассмотрим, как создать собственный образ с помощью библиотек DVC, установленных по умолчанию, чтобы обеспечить согласованную среду разработки для ваших специалистов по данным. Студия Amazon SageMakerи как запускать DVC вместе с управляемой инфраструктурой SageMaker для обработки и обучения. Кроме того, мы покажем, как дополнить информацию отслеживания SageMaker информацией о версиях данных из DVC и визуализировать ее в консоли Studio.
Следующая диаграмма иллюстрирует архитектуру решения и рабочий процесс.
Создайте собственный образ Studio с уже установленным DVC.
В этом Репозиторий GitHubмы объясним, как создать собственный образ для Studio, в которой уже установлен DVC. Преимущество создания образа и предоставления его всем пользователям Studio заключается в том, что он создает согласованную среду для пользователей Studio, которую они также могут запускать локально. Хотя выборка основана на Облако AWS9вы также можете собрать контейнер на своем локальном компьютере, если у вас установлен и работает Docker. Этот образец основан на следующем Dockerfile и среда.yml. Полученный образ Docker сохраняется в Реестр Amazon Elastic Container (Amazon EMR) в вашей учетной записи AWS. См. следующий код:
Ты можешь сейчас создать новый домен Studio or обновить существующий домен Studio у которого есть доступ к вновь созданному образу Docker.
МЫ ИСПОЛЬЗУЕМ Комплект для разработки облачных сервисов AWS (AWS CDK), чтобы создать следующие ресурсы через AWS CloudFormation:
- Роль исполнения SageMaker с необходимыми разрешениями для вашего нового или существующего домена Studio.
- Образ SageMaker и версия образа SageMaker из образа Docker.
conda-env-dvc-kernel
которые мы создали ранее - An
AppImageConfig
который определяет, как должен быть настроен шлюз ядра - Пользователь студии (
data-scientist-dvc
) с правильной ролью выполнения SageMaker и доступным для него пользовательским образом Studio.
Подробные инструкции см. Свяжите собственное изображение с SageMaker Studio..
Запустить лабораторию
Чтобы запустить лабораторию, выполните следующие действия:
- В домене Studio запустите Studio для
data-scientist-dvc
пользователь. - Выберите значок Git, затем выберите Клонировать репозиторий.
- Введите URL репозитория (
https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo
) и выберите Клон. - В файловом браузере выберите
amazon-sagemaker-experiments-dvc-demo
репозиторий. - Откройте приложение
dvc_sagemaker_script_mode.ipynb
Блокнот. - Что касается Пользовательское изображение, выберите образ conda-env-dvc-kernel.
- Выберите Выберите.
Настройка DVC для управления версиями данных
Создаем подкаталог, в котором подготавливаем данные: sagemaker-dvc-sample. В этом подкаталоге мы инициализируем новый репозиторий Git и настраиваем удаленный репозиторий, который мы создаем в AWS CodeCommit. Цель состоит в том, чтобы иметь версии конфигураций DVC и файлов для отслеживания данных в этом репозитории. Однако Git предлагает встроенные возможности для управления подпроектами, например, с помощью подмодулей и поддеревьев git, и вы можете расширить этот пример, чтобы использовать любой из вышеупомянутых инструментов, которые лучше всего подходят для вашего рабочего процесса.
Основным преимуществом использования CodeCommit с SageMaker в нашем случае является его интеграция с Управление идентификацией и доступом AWS (IAM) для аутентификации и авторизации, что означает, что мы можем использовать роли IAM для отправки и получения данных без необходимости получения учетных данных (или ключей SSH). Установка соответствующих разрешений для роли выполнения SageMaker также позволяет блокноту Studio и заданию обучения и обработки SageMaker безопасно взаимодействовать с CodeCommit.
Хотя вы можете заменить CodeCommit любой другой службой контроля версий, например GitHub, Gitlab или Bitbucket, вам необходимо подумать о том, как обращаться с учетными данными для вашей системы. Одна из возможностей — сохранить эти учетные данные на Менеджер секретов AWS и извлекайте их во время выполнения из блокнота Studio, а также из заданий обработки и обучения SageMaker.
Обработка и обучение с помощью DVC и SageMaker
В этом разделе мы исследуем два разных подхода к решению нашей проблемы и то, как мы можем отслеживать два теста с помощью SageMaker Experiments в соответствии с концептуальной архитектурой высокого уровня, которую мы показали вам ранее.
Настройте эксперимент SageMaker
Чтобы отслеживать этот тест в SageMaker, нам нужно создать эксперимент. Нам также необходимо определить испытание внутри эксперимента. Для простоты мы рассматриваем только одно испытание для эксперимента, но вы можете иметь любое количество испытаний в рамках эксперимента, например, если вы хотите протестировать разные алгоритмы.
Мы создаем эксперимент под названием DEMO-sagemaker-experiments-dvc
с двумя испытаниями, dvc-trial-single-file
и dvc-trial-multi-files
, каждый из которых представляет отдельную версию набора данных.
Давайте создадим DEMO-sagemaker-experiments-dvc
эксперимент:
Тест 1. Создайте отдельные файлы для обучения и проверки.
В этом разделе мы создаем сценарий обработки, который извлекает необработанные данные непосредственно из Простой сервис хранения Amazon (Amazon S3) в качестве входных данных; обрабатывает его для создания наборов обучающих, проверочных и тестовых данных; и сохраняет результаты обратно в Amazon S3 с помощью DVC. Кроме того, мы покажем, как можно отслеживать артефакты вывода, создаваемые DVC, с помощью SageMaker при выполнении заданий обработки и обучения, а также с помощью экспериментов SageMaker.
Сначала мы создаем dvc-trial-single-file
пробную версию и добавьте ее в DEMO-sagemaker-experiments-dvc
эксперимент. Поступая таким образом, мы сохраняем содержательную организацию всех компонентов исследования, связанных с этим тестом.
Используйте DVC в задании обработки SageMaker для создания версии одного файла.
В этом разделе мы создаем сценарий обработки, который получает необработанные данные непосредственно из Amazon S3 в качестве входных данных, используя возможность управляемой загрузки данных SageMaker; обрабатывает его для создания наборов обучающих, проверочных и тестовых данных; и сохраняет результаты обратно в Amazon S3 с помощью DVC. Очень важно понимать, что при использовании DVC для хранения данных в Amazon S3 (или извлечения данных из Amazon S3) мы теряем возможности управляемой загрузки данных SageMaker, что потенциально может повлиять на производительность и стоимость наших заданий по обработке и обучению. , особенно при работе с очень большими наборами данных. Дополнительную информацию о различных возможностях собственного режима ввода SageMaker см. Доступ к данным обучения.
Наконец, мы объединяем возможности отслеживания DVC с возможностями отслеживания SageMaker при запуске заданий обработки с помощью SageMaker Experiments.
Сценарий обработки ожидает адрес репозитория Git и ветки, которую мы хотим создать, для хранения метаданных DVC, передаваемых через переменные среды. Сами наборы данных хранятся в Amazon S3 компанией DVC. Хотя переменные среды автоматически отслеживаются в SageMaker Experiments и отображаются в параметрах пробного компонента, мы можем захотеть дополнить пробные компоненты дополнительной информацией, которая затем станет доступной для визуализации в пользовательском интерфейсе Studio с помощью объекта отслеживания. В нашем случае параметры пробных компонентов включают в себя следующее:
DVC_REPO_URL
DVC_BRANCH
USER
data_commit_hash
train_test_split_ratio
Сценарий предварительной обработки клонирует репозиторий Git; генерирует обучающие, проверочные и тестовые наборы данных; и синхронизирует его с помощью DVC. Как упоминалось ранее, при использовании DVC мы не можем воспользоваться собственными возможностями загрузки данных SageMaker. Помимо снижения производительности, которое может возникнуть при работе с большими наборами данных, мы также теряем возможности автоматического отслеживания выходных артефактов. Однако благодаря трекеру и API DVC Python мы можем компенсировать эти недостатки, получать такую информацию во время выполнения и без особых усилий сохранять ее в пробном компоненте. Дополнительная ценность при этом заключается в том, чтобы иметь единое представление об артефактах ввода и вывода, принадлежащих этому конкретному заданию обработки.
Полный сценарий Python для предварительной обработки доступен в Репо GitHub.
SageMaker дает нам возможность запускать наш сценарий обработки для образов контейнеров, управляемых AWS, которые оптимизированы для работы в инфраструктуре AWS. Если наш скрипт требует дополнительных зависимостей, мы можем предоставить requirements.txt
файл. Когда мы запускаем задание обработки, SageMaker использует pip-install
для установки всех необходимых нам библиотек (например, библиотек, связанных с DVC). Если вам необходимо более жестко контролировать все библиотеки, установленные в контейнерах, вы можете добавить свой собственный контейнер в SageMaker, например для обработка и обучение.
Теперь у нас есть все ингредиенты для запуска нашего задания обработки SageMaker:
- Сценарий обработки, который может обрабатывать несколько аргументов (
--train-test-split-ratio
) и две переменные среды (DVC_REPO_URL
иDVC_BRANCH
) - A
requiremets.txt
файл - Репозиторий Git (в CodeCommit)
- Эксперимент и испытание SageMaker
Затем мы запускаем задание обработки с помощью preprocessing-experiment.py
сценарий, experiment_config
, dvc_repo_url
и dvc_branch
мы определили ранее.
Выполнение задания по обработке занимает около 5 минут. Теперь вы можете просмотреть детали испытания для одного набора данных файла.
На следующем снимке экрана показано, где можно найти сохраненную информацию в Studio. Обратите внимание на значения для dvc-trial-single-file
in DVC_BRANCH
, DVC_REPO_URL
и data_commit_hash
на параметры меню.
Также обратите внимание на детали ввода и вывода на Артефакты меню.
Создайте оценщик и подгоните модель к версии данных одного файла.
Чтобы использовать интеграцию DVC в задании обучения SageMaker, мы передаем dvc_repo_url
и dvc_branch
в качестве переменных среды при создании объекта Estimator.
Мы тренируемся на dvc-trial-single-file
ветка первая.
При извлечении данных с помощью DVC мы используем следующую структуру набора данных:
Теперь мы создаем оценщик Scikit-learn, используя SDK для SageMaker Python. Это позволяет нам указать следующее:
- Путь к исходному файлу Python, который следует запустить в качестве точки входа в обучение.
- Роль IAM, которая контролирует разрешения на доступ к данным Amazon S3 и CodeCommit и запуск функций SageMaker.
- Список словарей, определяющих метрики, используемые для оценки заданий по обучению.
- Количество и тип обучающих экземпляров. Мы используем один экземпляр ml.m5.large.
- Гиперпараметры, которые используются для обучения.
- Переменные среды, которые будут использоваться во время обучения. Мы используем
DVC_REPO_URL
,DVC_BRANCH
иUSER
.
Мы вызываем метод fit Оценщика с помощью Experiment_config, который мы определили ранее, чтобы начать обучение.
Выполнение обучающего задания занимает около 5 минут. В журналах показаны эти строки, обозначающие файлы, извлеченные DVC:
Тест 2. Создайте несколько файлов для обучения и проверки.
Мы создаем новый dvc-trial-multi-files
пробную версию и добавьте ее в текущую DEMO-sagemaker-experiments-dvc
эксперимент.
В отличие от первого сценария обработки, теперь мы создаем из исходного набора данных несколько файлов для обучения и проверки и сохраняем метаданные DVC в другой ветке.
Вы можете изучить второй скрипт Python предварительной обработки на GitHub.
Выполнение задания по обработке занимает около 5 минут. Теперь вы можете просмотреть детали испытания для многофайлового набора данных.
На следующих снимках экрана показано, где можно найти сохраненную информацию в SageMaker Experiments в Пробные компоненты раздел в пользовательском интерфейсе Studio. Обратите внимание на значения для dvc-trial-multi-files
in DVC_BRANCH
, DVC_REPO_URL
и data_commit_hash
на параметры меню.
Вы также можете просмотреть детали ввода и вывода на Артефакты меню.
Теперь мы тренируемся на dvc-trial-multi-files
ветвь. При извлечении данных с помощью DVC мы используем следующую структуру набора данных:
Как и раньше, мы создаем новый оценщик Scikit-learn с названием испытания. dvc-trial-multi-files
и начать обучение.
Выполнение обучающего задания занимает около 5 минут. В журналах заданий обучения, выводимых в блокнот, вы можете увидеть следующие строки, обозначающие файлы, извлеченные DVC:
Разместите свою модель в SageMaker
После обучения модели машинного обучения вы можете развернуть ее с помощью SageMaker. Чтобы развернуть постоянную конечную точку в реальном времени, которая делает один прогноз за раз, мы используем Услуги хостинга SageMaker в режиме реального времени.
Сначала мы получаем последний набор тестовых данных локально в блокноте разработки в Studio. Для этой цели мы можем использовать dvc.api.read()
для загрузки необработанных данных, хранящихся в Amazon S3, с помощью задания обработки SageMaker.
Затем мы подготавливаем данные с помощью Pandas, загружаем тестовый CSV-файл и вызываем predictor.predict
для вызова созданной ранее конечной точки SageMaker с данными и получения прогнозов.
Удалить конечную точку
Вам следует удалить конечные точки, когда они больше не используются, поскольку оплата за них взимается по времени развертывания (дополнительную информацию см. в разделе Цены на Amazon SageMaker). Обязательно удалите конечную точку, чтобы избежать непредвиденных расходов.
Убирать
Прежде чем удалить все созданные вами ресурсы, убедитесь, что все приложения удалены из data-scientist-dvc
пользователя, включая все приложения KernelGateway, а также приложение JupiterServer по умолчанию.
Затем вы можете уничтожить стек AWS CDK, выполнив следующую команду:
Если вы использовали существующий домен, также выполните следующие команды:
Заключение
В этом посте вы рассмотрели пример отслеживания экспериментов с кодом, данными, артефактами и метриками с помощью экспериментов SageMaker и заданий обработки и обучения SageMaker в сочетании с DVC. Мы создали образ Docker, содержащий DVC, который требовался для Studio в качестве блокнота разработки, и показали, как можно использовать задания обработки и обучения с DVC. Мы подготовили две версии данных и использовали DVC для управления ими с помощью Git. Затем вы использовали SageMaker Experiments для отслеживания обработки и обучения с использованием двух версий данных, чтобы иметь единое представление параметров, артефактов и показателей на одной панели. Наконец, вы развернули модель в конечной точке SageMaker и использовали тестовый набор данных из второй версии набора данных для вызова конечной точки SageMaker и получения прогнозов.
В качестве следующего шага вы можете расширить существующий блокнот, представить свою собственную стратегию разработки функций и использовать DVC и SageMaker для проведения экспериментов. Пошли строить!
Для дальнейшего чтения обратитесь к следующим ресурсам:
Об авторах
Паоло Ди Франческо является архитектором решений в AWS. Имеет опыт работы в области телекоммуникаций и разработки программного обеспечения. Он увлечен машинным обучением и в настоящее время сосредоточен на использовании своего опыта, чтобы помочь клиентам достичь своих целей в AWS, в частности, в обсуждениях MLOps. Вне работы он любит играть в футбол и читать.
Эйтан Села является специалистом по машинному обучению, архитектором решений в Amazon Web Services. Он работает с клиентами AWS, предоставляя рекомендации и техническую помощь, помогая им создавать и использовать решения для машинного обучения на AWS. В свободное время Эйтан любит бегать и читать последние статьи по машинному обучению.
- AI
- ай искусство
- генератор искусств ай
- искусственный интеллект
- Создатель мудреца Амазонки
- искусственный интеллект
- сертификация искусственного интеллекта
- искусственный интеллект в банковском деле
- робот с искусственным интеллектом
- роботы с искусственным интеллектом
- программное обеспечение искусственного интеллекта
- Машинное обучение AWS
- блокчейн
- конференция по блокчейну
- Coingenius
- разговорный искусственный интеллект
- криптоконференция ИИ
- дал-и
- Контроль версий данных
- глубокое обучение
- DVC
- google ai
- обучение с помощью машины
- Платон
- Платон Ай
- Платон Интеллектуальные данные
- Платон игра
- ПлатонДанные
- платогейминг
- масштаб ай
- синтаксис
- Технические инструкции
- зефирнет