Поскольку все больше и больше клиентов стремятся внедрить рабочие нагрузки машинного обучения (ML) в производство, организации активно стремятся сократить жизненный цикл разработки кода ML. Многие организации предпочитают писать свой код машинного обучения в готовом для производства стиле в виде методов и классов Python, а не в исследовательском стиле (написание кода без использования методов или классов), потому что это помогает им быстрее выпускать готовый к производству код.
С помощью Amazon SageMaker вы можете использовать декоратор @remote для выполнения задания обучения SageMaker, просто аннотируя свой код Python с помощью декоратора @remote. SageMaker Python SDK автоматически преобразует вашу существующую рабочую среду и любой связанный код обработки данных и наборы данных в обучающее задание SageMaker, которое выполняется на учебной платформе SageMaker.
Для локального запуска функции Python часто требуется несколько зависимостей, которые могут отсутствовать в локальной среде выполнения Python. Вы можете установить их с помощью инструментов управления пакетами и зависимостями, таких как точка или конда.
Однако организации, работающие в регулируемых отраслях, таких как банковское дело, страхование и здравоохранение, работают в средах со строгим контролем конфиденциальности данных и сетей. Эти элементы управления часто требуют отсутствия доступа в Интернет к любой из их сред. Причина такого ограничения заключается в том, чтобы иметь полный контроль над исходящим и входящим трафиком, чтобы они могли уменьшить вероятность того, что недобросовестные субъекты будут отправлять или получать непроверенную информацию через свою сеть. Такая сетевая изоляция часто также является обязательным требованием в соответствии с правилами аудита и промышленного соответствия. Когда дело доходит до ML, это ограничивает специалистов по данным от загрузки любого пакета из общедоступных репозиториев, таких как PyPI, Анакондаили Конда-Фордж.
Чтобы предоставить специалистам по данным доступ к инструментам по своему выбору, а также соблюдать ограничения среды, организации часто создают собственный частный репозиторий пакетов, размещенный в их собственной среде. Вы можете настроить частные репозитории пакетов на AWS несколькими способами:
В этом посте мы сосредоточимся на первом варианте: использовании CodeArtifact.
Обзор решения
На следующей диаграмме архитектуры показана архитектура решения.
Шаги высокого уровня для реализации решения следующие:
- Настройте виртуальное частное облако (VPC) без доступа к Интернету с помощью шаблона AWS CloudFormation.
- Используйте второй шаблон CloudFormation, чтобы настроить CodeArtifact в качестве частного репозитория PyPI и обеспечить подключение к VPC, а также настроить среду Amazon SageMaker Studio для использования частного репозитория PyPI.
- Обучите модель классификации на основе МНИСТ набор данных с помощью декоратора @remote из пакета SageMaker Python SDK с открытым исходным кодом. Все зависимости будут загружены из частного репозитория PyPI.
Обратите внимание, что использование SageMaker Studio в этом посте необязательно. Вы можете работать в любой интегрированной среде разработки (IDE) по вашему выбору. Вам просто нужно правильно настроить учетные данные интерфейса командной строки AWS (AWS CLI). Дополнительные сведения см. в разделе Настройка интерфейса командной строки AWS.
Предпосылки
Вам потребуется учетная запись AWS с ролью AWS Identity and Access Management (IAM) с разрешениями на управление ресурсами, созданными в рамках решения. Подробнее см. в разделе Создание учетной записи AWS.
Настройте VPC без подключения к Интернету
Создайте новый стек CloudFormation, используя vpc.yaml шаблон. Этот шаблон создает следующие ресурсы:
- VPC с двумя частными подсетями в двух зонах доступности без подключения к Интернету.
- Конечная точка шлюза VPC для доступа к Amazon S3.
- Интерфейс конечных точек VPC для SageMaker, CodeArtifact и некоторых других сервисов, чтобы ресурсы в VPC могли подключаться к сервисам AWS через AWS PrivateLink.
Укажите имя стека, например No-Internet
и завершите процесс создания стека.
Дождитесь завершения процесса создания стека.
Настройте частный репозиторий и SageMaker Studio с помощью VPC.
Следующим шагом будет развертывание другого стека CloudFormation с помощью sagemaker_studio_codeartifact.yaml шаблон. Этот шаблон создает следующие ресурсы:
Укажите имя стека и оставьте значения по умолчанию или настройте параметры для Доменное имя CodeArtifact, имя частного репозитория, имя профиля пользователя для SageMaker Studio и имя для вышестоящего общедоступного репозитория PyPI. Вам также необходимо предоставить Имя стека VPC созданный на предыдущем шаге.
Когда создание стека завершено, домен SageMaker должен быть виден в консоли SageMaker.
Чтобы убедиться, что в SageMaker Studio нет подключения к Интернету, запустите SageMaker Studio. Выбирать File
, New
и Terminal
запустить терминал и попробовать завиток любой интернет-ресурс. Он не должен подключиться, как показано на следующем снимке экрана.
Обучите классификатор изображений с помощью декоратора @remote с частным репозиторием PyPI.
В этом разделе мы используем декоратор @remote для запуска ПиТорч обучающее задание, которое создает модель классификации изображений MNIST. Для этого мы настраиваем файл конфигурации, разрабатываем обучающий скрипт и запускаем обучающий код.
Настройте файл конфигурации
Мы создали config.yaml
файл и укажите конфигурации, необходимые для выполнения следующих действий:
- Запустите обучающее задание SageMaker в созданном ранее облаке VPC без доступа к Интернету.
- Загрузите необходимые пакеты, подключившись к частному репозиторию PyPI, созданному ранее.
Файл выглядит следующим образом:
Dependencies
поле содержит путь к requirements.txt
, который содержит все необходимые зависимости. Обратите внимание, что все зависимости будут загружены из частного репозитория. requirements.txt
файл содержит следующий код:
PreExecutionCommands
Раздел содержит команду для подключения к частному репозиторию PyPI. Чтобы получить URL-адрес конечной точки CodeArtifact VPC, используйте следующий код:
Как правило, мы получаем две конечные точки VPC для CodeArtifact и можем использовать любую из них в командах подключения. Дополнительные сведения см. в разделе Использование CodeArtifact из VPC.
Кроме того, такие конфигурации, как execution role
, output location
и VPC configurations
предоставляются в конфигурационном файле. Эти конфигурации необходимы для запуска учебного задания SageMaker. Чтобы узнать больше обо всех поддерживаемых конфигурациях, обратитесь к файлу конфигурации.
Не обязательно использовать config.yaml
файл для работы с декоратором @remote. Это просто более чистый способ передать все конфигурации декоратору @remote. Все конфиги также могут быть предоставлены непосредственно в аргументах декоратора, но это снижает удобочитаемость и удобство сопровождения изменений в долгосрочной перспективе. Кроме того, файл конфигурации может быть создан администратором и доступен для всех пользователей в среде.
Разработать сценарий обучения
Далее мы подготавливаем обучающий код в простых файлах Python. Мы разделили код на три файла:
- load_data.py – Содержит код для загрузки набора данных MNIST.
- модель.py – Содержит код архитектуры нейронной сети для модели
- поезд.py – Содержит код для обучения модели с помощью load_data.py и model.py.
В train.py
нам нужно оформить основную обучающую функцию следующим образом:
Теперь мы готовы запустить обучающий код.
Запустите обучающий код с помощью декоратора @remote.
Мы можем запустить код из терминала или из любой исполняемой подсказки. В этом посте мы используем ячейку записной книжки SageMaker Studio, чтобы продемонстрировать это:
Выполнение предыдущей команды запускает задание обучения. В журналах мы видим, что он загружает пакеты из частного репозитория PyPI.
На этом реализация декоратора @remote, работающего с частным репозиторием в среде без доступа к Интернету, завершена.
Очистить
Чтобы очистить ресурсы, следуйте инструкциям в CLEANUP.md.
Заключение
В этом посте мы узнали, как эффективно использовать возможности декоратора @remote, продолжая работать в ограниченных средах без доступа к Интернету. Мы также узнали, как интегрировать возможности частного репозитория CodeArtifact с помощью поддержки файла конфигурации в SageMaker. Это решение делает итеративную разработку намного проще и быстрее. Еще одно дополнительное преимущество заключается в том, что вы по-прежнему можете писать обучающий код более естественным, объектно-ориентированным способом и по-прежнему использовать возможности SageMaker для выполнения обучающих заданий на удаленном кластере с минимальными изменениями в коде. Весь код, показанный как часть этого поста, доступен в Репозиторий GitHub.
В качестве следующего шага мы рекомендуем вам проверить функциональность декоратора @remote и Python SDK API и используйте его в выбранной вами среде и IDE. Дополнительные примеры доступны в amazon-sagemaker-примеры репозиторий, чтобы вы могли быстро приступить к работе. Вы также можете ознакомиться с публикацией Запуск локального кода машинного обучения в качестве учебных заданий Amazon SageMaker с минимальными изменениями кода, чтобы получить дополнительные сведения.
Об авторе
Викеш Пандей является специалистом по машинному обучению и архитектором решений в AWS, помогая клиентам из финансовой отрасли проектировать и создавать решения на основе генеративного искусственного интеллекта и машинного обучения. Вне работы Викеш любит пробовать разные кухни и заниматься спортом на открытом воздухе.