В этом посте мы продемонстрируем, как Kubeflow на AWS (дистрибутив Kubeflow для AWS), используемый с Контейнеры глубокого обучения AWS и Эластичная файловая система Amazon (Amazon EFS) упрощает совместную работу и обеспечивает гибкость при обучении моделей глубокого обучения в масштабе как на Амазон Эластик Кубернетес Сервис (Амазон ЭКС) и Создатель мудреца Амазонки с использованием подхода гибридной архитектуры.
Разработка машинного обучения (ML) опирается на сложные и постоянно развивающиеся платформы и наборы инструментов с открытым исходным кодом, а также на сложные и постоянно развивающиеся аппаратные экосистемы. Это создает проблему при масштабировании разработки машинного обучения до кластера. Контейнеры предлагают решение, поскольку они могут полностью инкапсулировать не только обучающий код, но и весь стек зависимостей вплоть до аппаратных библиотек. Это обеспечивает согласованность и переносимость среды машинного обучения и облегчает воспроизводимость среды обучения на каждом отдельном узле обучающего кластера.
Kubernetes — это широко распространенная система для автоматизации развертывания инфраструктуры, масштабирования ресурсов и управления этими контейнерными приложениями. Однако Kubernetes не создавался с учетом ML, поэтому специалистам по данным он может показаться нелогичным из-за сильной зависимости от файлов спецификаций YAML. Здесь нет опыта Jupyter, и не так много возможностей, специфичных для ML, таких как управление рабочими процессами и конвейерами, а также других возможностей, которые ожидают эксперты ML, таких как настройка гиперпараметров, размещение моделей и другие. Такие возможности можно создать, но Kubernetes не был предназначен для этого в качестве своей основной цели.
Сообщество разработчиков открытого исходного кода обратило на это внимание и разработало слой поверх Kubernetes под названием Kubeflow. Kubeflow стремится сделать развертывание сквозных рабочих процессов машинного обучения в Kubernetes простым, переносимым и масштабируемым. Вы можете использовать Kubeflow для развертывания лучших в своем классе систем с открытым исходным кодом для машинного обучения в различных инфраструктурах.
Kubeflow и Kubernetes обеспечивают гибкость и контроль командам специалистов по данным. Однако обеспечение высокой степени использования обучающих кластеров, работающих в масштабе, при снижении операционных издержек по-прежнему является сложной задачей.
В этом посте показано, как клиенты с локальными ограничениями или существующими инвестициями в Kubernetes могут решить эту проблему, используя Amazon EKS и Kubeflow на AWS для реализации конвейера машинного обучения для распределенного обучения на основе самоуправляемого подхода, а также используя полностью управляемый SageMaker для оптимизированная по затратам, полностью управляемая и масштабируемая инфраструктура обучения. Это включает в себя пошаговое внедрение гибридной распределенной архитектуры обучения, которая позволяет вам выбирать между двумя подходами во время выполнения, предоставляя максимальный контроль и гибкость с учетом строгих требований для ваших развертываний. Вы увидите, как вы можете продолжать использовать библиотеки с открытым исходным кодом в своем сценарии обучения глубокому обучению и при этом сделать его совместимым для работы как в Kubernetes, так и в SageMaker независимо от платформы.
Чем помогает Kubeflow на AWS и SageMaker?
Модели нейронных сетей, созданные с помощью сред глубокого обучения, таких как TensorFlow, PyTorch, MXNet и других, обеспечивают гораздо более высокую точность за счет использования значительно больших наборов обучающих данных, особенно в случаях использования компьютерного зрения и обработки естественного языка. Однако с большими наборами обучающих данных обучение моделей глубокого обучения занимает больше времени, что в конечном итоге замедляет время выхода на рынок. Если бы мы могли масштабировать кластер и сократить время обучения модели с недель до дней или часов, это могло бы оказать огромное влияние на производительность и скорость бизнеса.
Amazon EKS помогает подготовить управляемую плоскость управления Kubernetes. Вы можете использовать Amazon EKS для создания крупномасштабных обучающих кластеров с инстансами ЦП и ГП, а также использовать набор инструментов Kubeflow для предоставления удобных для машинного обучения инструментов с открытым исходным кодом и запуска рабочих процессов машинного обучения, которые являются переносимыми и масштабируемыми с помощью конвейеров Kubeflow, чтобы повысить производительность вашей команды и сократить время выхода на рынок.
Однако при таком подходе может возникнуть несколько проблем:
- Обеспечение максимального использования кластера группами специалистов по обработке и анализу данных. Например, вы должны предоставлять экземпляры графического процессора по запросу и обеспечивать его высокую степень использования для ресурсоемких задач производственного масштаба, таких как обучение глубокому обучению, и использовать экземпляры ЦП для менее требовательных задач, таких как предварительная обработка данных.
- Обеспечение высокой доступности тяжеловесных компонентов инфраструктуры Kubeflow, включая базу данных, хранилище и аутентификацию, развернутых на рабочем узле кластера Kubernetes. Например, плоскость управления Kubeflow генерирует артефакты (такие как экземпляры MySQL, журналы модулей или хранилище MinIO), которые со временем увеличиваются и требуют объемов хранения с изменяемым размером и возможностями непрерывного мониторинга.
- Совместное использование обучающего набора данных, кода и вычислительных сред между разработчиками, учебными кластерами и проектами является сложной задачей. Например, если вы работаете над своим собственным набором библиотек, и эти библиотеки имеют сильные взаимозависимости, становится очень сложно совместно использовать и запускать один и тот же фрагмент кода между специалистами по данным в одной команде. Кроме того, для каждого тренировочного прогона требуется загрузка набора обучающих данных и создание обучающего образа с новыми изменениями кода.
Kubeflow на AWS помогает решить эти проблемы и предоставляет полууправляемый продукт Kubeflow корпоративного уровня. С помощью Kubeflow на AWS вы можете заменить некоторые сервисы плоскости управления Kubeflow, такие как база данных, хранилище, мониторинг и управление пользователями, управляемыми сервисами AWS, такими как Сервис реляционной базы данных Amazon (Амазон РДС), Простой сервис хранения Amazon (Амазон С3), Эластичная файловая система Amazon (Амазон ЭФС), Амазон ФСх, Amazon CloudWatchи Амазон Когнито.
Замена этих компонентов Kubeflow отделяет важные части плоскости управления Kubeflow от Kubernetes, обеспечивая безопасную, масштабируемую, отказоустойчивую и оптимизированную по стоимости конструкцию. Этот подход также высвобождает ресурсы хранения и вычислений из плоскости данных EKS, которые могут потребоваться таким приложениям, как обучение распределенным моделям или серверы пользовательских ноутбуков. Kubeflow на AWS также обеспечивает встроенную интеграцию записных книжек Jupyter с образами Deep Learning Container (DLC), которые предварительно упакованы и предварительно настроены с помощью оптимизированных для AWS сред глубокого обучения, таких как PyTorch и TensorFlow, которые позволяют вам сразу же приступить к написанию учебного кода, не прибегая к с разрешениями зависимостей и оптимизацией фреймворка. Кроме того, интеграция Amazon EFS с обучающими кластерами и средой разработки позволяет вам совместно использовать свой код и обработанный набор обучающих данных, что позволяет избежать создания образа контейнера и загрузки огромных наборов данных после каждого изменения кода. Эти интеграции с Kubeflow на AWS помогут вам ускорить создание модели и время обучения, а также улучшить совместную работу за счет упрощения обмена данными и кодом.
Kubeflow на AWS помогает создать высокодоступную и надежную платформу машинного обучения. Эта платформа обеспечивает гибкость для создания и обучения моделей глубокого обучения и предоставляет доступ ко многим наборам инструментов с открытым исходным кодом, анализу журналов и интерактивной отладке для экспериментов. Однако достижение максимального использования ресурсов инфраструктуры при обучении моделей глубокого обучения на сотнях графических процессоров по-прежнему сопряжено с большими операционными издержками. Эту проблему можно решить с помощью SageMaker — полностью управляемой службы, разработанной и оптимизированной для работы с высокопроизводительными и оптимизированными по стоимости учебными кластерами, которые выделяются только по запросу, масштабируются по мере необходимости и автоматически отключаются по завершении заданий, тем самым обеспечивая почти 100 % утилизация ресурсов. Вы можете интегрировать SageMaker с Kubeflow Pipelines с помощью управляемых компонентов SageMaker. Это позволяет задействовать рабочие процессы машинного обучения как часть конвейеров Kubeflow, где вы можете использовать Kubernetes для локального обучения и SageMaker для обучения в масштабе продукта в гибридной архитектуре.
Обзор решения
Следующая архитектура описывает, как мы используем Kubeflow Pipelines для создания и развертывания переносимых и масштабируемых сквозных рабочих процессов ML для условного запуска распределенного обучения в Kubernetes с использованием обучения Kubeflow или SageMaker на основе параметра времени выполнения.
Обучение Kubeflow — это группа операторов Kubernetes, которые добавляют в Kubeflow поддержку распределенного обучения моделей машинного обучения с использованием различных фреймворков, таких как TensorFlow, PyTorch и других. pytorch-operator
это реализация Kubeflow для Kubernetes настраиваемый ресурс (PyTorchJob) для выполнения распределенных учебных заданий PyTorch в Kubernetes.
Мы используем компонент PyTorchJob Launcher как часть конвейера Kubeflow для запуска распределенного обучения PyTorch на этапе экспериментов, когда нам нужна гибкость и доступ ко всем базовым ресурсам для интерактивной отладки и анализа.
Мы также используем компоненты SageMaker для пайплайнов Kubeflow, чтобы проводить обучение моделей в производственных масштабах. Это позволяет нам использовать преимущества мощных функций SageMaker, таких как полностью управляемые сервисы, распределенные учебные задания с максимальным использованием графического процессора и экономичное обучение с помощью Эластичное вычислительное облако Amazon (Amazon EC2) Точечные экземпляры.
В рамках процесса создания рабочего процесса вы выполняете следующие шаги (как показано на предыдущей диаграмме) для создания этого конвейера.
- Используйте файл манифеста Kubeflow для создания информационной панели Kubeflow и доступа к блокнотам Jupyter с центральной информационной панели Kubeflow.
- Используйте SDK конвейера Kubeflow для создания и компиляции конвейеров Kubeflow с использованием кода Python. Конвейерная компиляция преобразует функцию Python в ресурс рабочего процесса в формате YAML, совместимом с Argo.
- Используйте клиент Kubeflow Pipelines SDK, чтобы вызвать конечную точку службы конвейера для запуска конвейера.
- Конвейер оценивает условные переменные среды выполнения и выбирает между SageMaker или Kubernetes в качестве целевой среды выполнения.
- Используйте компонент Kubeflow PyTorch Launcher для проведения распределенного обучения в собственной среде Kubernetes или используйте компонент SageMaker для отправки обучения на платформе, управляемой SageMaker.
На следующем рисунке показаны компоненты Kubeflow Pipelines, участвующие в архитектуре, которые дают нам гибкость выбора между распределенными средами Kubernetes или SageMaker.
Рабочий процесс варианта использования
Мы используем следующий пошаговый подход для установки и запуска варианта использования для распределенного обучения с использованием Amazon EKS и SageMaker с использованием Kubeflow на AWS.
Предпосылки
Для этого прохождения у вас должны быть следующие предпосылки:
- An Аккаунт AWS.
- Машина с Docker и Интерфейс командной строки AWS (AWS CLI) установлен.
- По желанию вы можете использовать Облако AWS9, облачная интегрированная среда разработки (IDE), которая позволяет выполнять всю работу из вашего веб-браузера. Инструкции по настройке см. Настройка IDE Cloud9. В вашей среде Cloud9 выберите знак «плюс» и откройте новый терминал.
- Создать роль с именем
sagemakerrole
. Добавить управляемые политикиAmazonSageMakerFullAccess
иAmazonS3FullAccess
чтобы предоставить SageMaker доступ к корзинам S3. Эта роль используется заданием SageMaker, отправленным на этапе Kubeflow Pipelines. - Убедитесь, что в вашей учетной записи установлен лимит типа ресурса SageMaker Training для
ml.p3.2xlarge
увеличен до 2 с помощью Консоль сервисных квот
1. Установите Amazon EKS и Kubeflow на AWS.
Вы можете использовать несколько различных подходов для создания кластера Kubernetes и развертывания Kubeflow. В этом посте мы сосредоточимся на подходе, который, по нашему мнению, упрощает процесс. Сначала создаем кластер EKS, затем разворачиваем на нем Kubeflow on AWS v1.5. Для каждой из этих задач мы используем соответствующий проект с открытым исходным кодом, который следует принципам Сделать фреймворк. Вместо того, чтобы устанавливать набор предварительных условий для каждой задачи, мы создаем контейнеры Docker со всеми необходимыми инструментами и выполняем задачи внутри контейнеров.
В этом посте мы используем Do Framework, который автоматизирует развертывание Kubeflow с помощью Amazon EFS в качестве надстройки. Официальные варианты развертывания Kubeflow на AWS для производственных развертываний см. развертывание.
Настройте текущий рабочий каталог и интерфейс командной строки AWS.
Мы настраиваем рабочий каталог, чтобы мы могли ссылаться на него как на отправную точку для следующих шагов:
Мы также настраиваем профиль командной строки AWS. Для этого вам потребуется идентификатор ключа доступа и секретный ключ доступа Управление идентификацией и доступом AWS (Я) пользователь учетная запись с административными привилегиями (прикрепить существующую управляемую политику) и программным доступом. См. следующий код:
1.1 Создание кластера EKS
Если у вас уже есть доступный кластер EKS, вы можете перейти к следующему разделу. Для этого поста мы используем проект aws-do-eks для создания нашего кластера.
- Сначала клонируйте проект в свой рабочий каталог.
- Затем соберите и запустите
aws-do-eks
контейнер:Ассоциация
build.sh
Скрипт создает образ контейнера Docker со всеми необходимыми инструментами и скриптами для подготовки и работы кластеров EKS.run.sh
script запускает контейнер, используя созданный образ Docker, и поддерживает его, чтобы мы могли использовать его в качестве среды управления EKS. Чтобы увидеть статус своегоaws-do-eks
контейнер, вы можете запустить./status.sh
. Если контейнер находится в состоянии Exited, вы можете использовать./start.sh
скрипт, чтобы поднять контейнер или перезапустить контейнер, вы можете запустить./stop.sh
последующей./run.sh
. - Откройте оболочку в работающем
aws-do-eks
контейнер: - Чтобы просмотреть конфигурацию кластера EKS для нашего развертывания KubeFlow, выполните следующую команду:
По умолчанию эта конфигурация создает кластер с именем
eks-kubeflow
вus-west-2
Регион с шестью узлами m5.xlarge. Кроме того, шифрование томов EBS не включено по умолчанию. Вы можете включить его, добавив"volumeEncrypted: true"
к группе узлов, и он будет шифровать с использованием ключа по умолчанию. При необходимости измените другие параметры конфигурации. - Чтобы создать кластер, выполните следующую команду:
Процесс подготовки кластера может занять до 30 минут.
- Чтобы убедиться, что кластер создан успешно, выполните следующую команду:
Результат предыдущей команды для успешно созданного кластера выглядит следующим образом:
Создайте том EFS для учебного задания SageMaker.
В этом случае вы ускоряете задание обучения SageMaker, обучая модели глубокого обучения на основе данных, уже хранящихся в Amazon EFS. Преимущество этого варианта заключается в непосредственном запуске заданий обучения из данных в Amazon EFS без необходимости перемещения данных, что приводит к более быстрому началу обучения.
Мы создаем том EFS и развертываем драйвер EFS Container Storage Interface (CSI). Это достигается с помощью сценария развертывания, расположенного в /eks/deployment/csi/efs
в aws-do-eks
контейнер.
Этот сценарий предполагает, что в вашей учетной записи есть один кластер EKS. Установлен CLUSTER_NAME=
если у вас более одного кластера EKS.
Этот сценарий выделяет том EFS и создает цели подключения для подсетей VPC кластера. Затем он развертывает драйвер EFS CSI и создает efs-sc
класс хранения и efs-pv
постоянный том в кластере EKS.
После успешного завершения скрипта вы должны увидеть вывод, подобный следующему:
Создайте конечную точку Amazon S3 VPC
Вы используете частное VPC, к которому у вашего учебного задания SageMaker и файловой системы EFS есть доступ. Чтобы предоставить учебному кластеру SageMaker доступ к корзинам S3 из вашего частного VPC, вы создаете конечную точку VPC:
Теперь вы можете выйти из aws-do-eks
контейнер оболочки и перейти к следующему разделу:
1.2 Развертывание Kubeflow на AWS в Amazon EKS
Для развертывания Kubeflow на Amazon EKS мы используем проект aws-do-kubeflow.
- Клонируйте репозиторий с помощью следующих команд:
- Затем настройте проект:
Этот скрипт открывает файл конфигурации проекта в текстовом редакторе. Это важно для AWS_REGION для региона, в котором находится ваш кластер, а также AWS_CLUSTER_NAME чтобы соответствовать имени кластера, который вы создали ранее. По умолчанию ваша конфигурация уже установлена правильно, поэтому, если вам не нужно вносить какие-либо изменения, просто закройте редактор.
Ассоциация
build.sh
Скрипт создает образ контейнера Docker со всеми инструментами, необходимыми для развертывания и управления Kubeflow в существующем кластере Kubernetes.run.sh
сценарий запускает контейнер, используя образ Docker, а сценарий exec.sh открывает в контейнере командную оболочку, которую мы можем использовать в качестве среды управления Kubeflow. Вы можете использовать./status.sh
скрипт, чтобы увидеть, еслиaws-do-kubeflow
контейнер запущен и работает, и./stop.sh
и./run.sh
скрипты для его перезапуска по мере необходимости. - После того, как вы открыли оболочку в
aws-do-eks
контейнер, вы можете убедиться, что настроенный контекст кластера соответствует ожиданиям: - Чтобы развернуть Kubeflow в кластере EKS, запустите
deploy.sh
сценарий:Развертывание считается успешным, когда все модули в пространстве имен kubeflow переходят в состояние «Работает». Типичный вывод выглядит следующим образом:
- Для мониторинга состояния подов KubeFlow в отдельном окне можно использовать следующую команду:
- Нажмите Ctrl + C когда все модули запущены, откройте панель инструментов Kubeflow за пределами кластера, выполнив следующую команду:
Вы должны увидеть вывод, похожий на следующий код:
Эта команда перенаправляет службу входного шлюза Istio из вашего кластера на локальный порт 8080. Чтобы получить доступ к панели управления Kubeflow, посетите http://localhost:8080 и войдите в систему, используя учетные данные пользователя по умолчанию (user@example.com/12341234). Если вы используете aws-do-kubeflow
контейнер в AWS Cloud9, то вы можете выбрать предварительный просмотр, а затем выберите Предварительный просмотр запущенного приложения. Если вы работаете в Docker Desktop, вам может потребоваться запустить ./kubeflow-expose.sh
скрипт за пределами aws-do-kubeflow
контейнер.
2. Настройте Kubeflow в среде AWS
Чтобы настроить Kubeflow в среде AWS, мы создаем том EFS и блокнот Jupyter.
2.1 Создание тома EFS
Чтобы создать том EFS, выполните следующие действия:
- На панели инструментов Kubeflow выберите Объемы в навигационной панели.
- Выбрали Новый том.
- Что касается Фамилия, войти
efs-sc-claim
. - Что касается Размер тома, войти
10
. - Что касается Класс хранения, выберите efs-sc.
- Что касается Режим доступа, выберите ReadWriteOnce.
- Выберите Создавай.
2.2 Создайте блокнот Jupyter
Чтобы создать новую записную книжку, выполните следующие действия:
- На панели инструментов Kubeflow выберите Ноутбуки в навигационной панели.
- Выберите Новый блокнот.
- Что касается Фамилия, войти
aws-hybrid-nb
. - Что касается Изображение докета Jupyter, выберите изображение
c9e4w0g3/notebook-servers/jupyter-pytorch:1.11.0-cpu-py38-ubuntu20.04-e3-v1.1
(последнее доступное изображение DLC jupyter-pytorch). - Что касается ЦП, войти
1
. - Что касается Память, войти
5
. - Что касается Графические процессоры, оставить как Ничто.
- Не вносите никаких изменений в Объем рабочей области .
- В Объемы данных раздел, выбрать Прикрепить существующий том и разверните раздел Существующий том
- Что касается Фамилия, выберите
efs-sc-claim
. - Что касается Путь монтирования, войти
/home/jovyan/efs-sc-claim
.
Это монтирует том EFS в модуль ноутбука Jupyter, и вы можете увидеть папкуefs-sc-claim
в интерфейсе лаборатории Jupyter. Вы сохраняете обучающий набор данных и обучающий код в эту папку, чтобы обучающие кластеры могли получить к ним доступ без необходимости перестраивать образы контейнеров для тестирования. - Выберите Разрешить доступ к пайплайнам Kubeflow в разделе Конфигурация.
- Выберите Презентация.
Убедитесь, что ваш блокнот успешно создан (это может занять пару минут). - На Ноутбуки выберите страницу Свяжитесь для входа в среду JupyterLab.
- На идти Меню, выберите Клонировать репозиторий.
- Что касается Клонировать репозиторий, войти
https://github.com/aws-samples/aws-do-kubeflow
.
3. Запустите распределенное обучение
После того, как вы настроите блокнот Jupyter, вы можете запустить всю демонстрацию, используя следующие высокоуровневые шаги из папки aws-do-kubeflow/workshop
в клонированном репозитории:
- Сценарий обучения PyTorch Distributed Data Parallel (DDP): Обратитесь к учебному сценарию PyTorch DDP cifar10-distributed-gpu-final.py, который включает пример сверточной нейронной сети и логику для распределения обучения на многоузловом кластере ЦП и ГП. (Подробности см. в 3.1)
- Установить библиотеки: Запустите блокнот
0_initialize_dependencies.ipynb
для инициализации всех зависимостей. (Подробности см. в 3.2) - Запустите обучение работе с распределенным PyTorch в Kubernetes: Запустите блокнот
1_submit_pytorchdist_k8s.ipynb
для создания и отправки распределенного обучения в одном основном и двух рабочих контейнерах с использованием пользовательского ресурса Kubernetes PyTorchJob YAML-файла с использованием кода Python. (Подробности см. в 3.3) - Создайте гибридный конвейер Kubeflow: Запустите блокнот
2_create_pipeline_k8s_sagemaker.ipynb
для создания гибридного конвейера Kubeflow, который запускает распределенное обучение на SageMaker или Amazon EKS с использованием переменной среды выполненияtraining_runtime
. (Подробности см. в 3.4)
Убедитесь, что вы запустили блокнот 1_submit_pytorchdist_k8s.ipynb
прежде чем начать блокнот 2_create_pipeline_k8s_sagemaker.ipynb
.
В последующих разделах мы подробно обсудим каждый из этих шагов.
3.1 Учебный сценарий PyTorch Distributed Data Parallel (DDP)
В рамках распределенного обучения мы обучаем модель классификации, созданную простой сверточной нейронной сетью, которая работает с набором данных CIFAR10. Сценарий обучения cifar10-distributed-gpu-final.py
содержит только библиотеки с открытым исходным кодом и совместим с учебными кластерами Kubernetes и SageMaker как на устройствах с графическим процессором, так и на экземплярах ЦП. Давайте рассмотрим несколько важных аспектов сценария обучения, прежде чем мы запустим примеры из нашей записной книжки.
Мы используем torch.distributed
модуль, который содержит примитивы поддержки и связи PyTorch для многопроцессорного параллелизма между узлами в кластере:
Мы создаем простую модель классификации изображений, используя комбинацию сверточных, максимального объединения и линейных слоев, к которым применяется функция активации relu на прямом проходе обучения модели:
Мы используем факел DataLoader, который объединяет набор данных и DistributedSampler
(загружает подмножество данных распределенным образом, используя torch.nn.parallel.DistributedDataParallel
) и предоставляет итератор для одного или нескольких процессов над данными:
Если в обучающем кластере есть графические процессоры, сценарий запускает обучение на устройствах CUDA, а переменная устройства содержит устройство CUDA по умолчанию:
Прежде чем запускать распределенное обучение с помощью PyTorch DistributedDataParallel
чтобы запустить распределенную обработку на нескольких узлах, вам необходимо инициализировать распределенную среду, вызвав init_process_group
. Это инициализируется на каждой машине обучающего кластера.
Мы создаем экземпляр модели классификатора и копируем модель на целевое устройство. Если распределенное обучение включено для запуска на нескольких узлах, DistributedDataParallel
class используется в качестве объекта-оболочки вокруг объекта модели, что позволяет проводить синхронное распределенное обучение на нескольких машинах. Входные данные разделяются на пакетное измерение, и реплика модели размещается на каждой машине и каждом устройстве.
3.2 Установка библиотек
Вы установите все необходимые библиотеки для запуска примера распределенного обучения PyTorch. Сюда входят SDK Kubeflow Pipelines, SDK Training Operator Python, клиент Python для Kubernetes и SDK Amazon SageMaker Python.
3.3 Запустите обучение работе с распределенным PyTorch в Kubernetes
Записная книжка 1_submit_pytorchdist_k8s.ipynb
создает YAML-файл пользовательского ресурса Kubernetes PyTorchJob, используя обучение Kubeflow и пакет SDK Python для клиента Kubernetes. Ниже приведены несколько важных фрагментов из этой записной книжки.
Мы создаем PyTorchJob YAML с основным и рабочим контейнерами, как показано в следующем коде:
Это передается в плоскость управления Kubernetes с помощью PyTorchJobClient
:
Просмотр журналов обучения Kubernetes
Вы можете просматривать журналы обучения либо из той же записной книжки Jupyter, используя код Python, либо из клиентской оболочки Kubernetes.
3.4 Создание гибридного конвейера Kubeflow
Записная книжка 2_create_pipeline_k8s_sagemaker.ipynb
создает гибридный конвейер Kubeflow на основе условной переменной времени выполнения training_runtime
, как показано в следующем коде. В ноутбуке используется Пакет SDK для Kubeflow Pipelines и он предоставил набор пакетов Python для указания и запуска конвейеров рабочего процесса ML. В рамках этого SDK мы используем следующие пакеты:
- Декоратор пакетов предметно-ориентированного языка (DSL)
dsl.pipeline
, который украшает функции Python, чтобы возвращать конвейер - Ассоциация
dsl.Condition
пакет, который представляет собой группу операций, которые выполняются только при выполнении определенного условия, например проверкаtraining_runtime
ценность какsagemaker
orkubernetes
Смотрите следующий код:
Мы настраиваем распределенное обучение SageMaker, используя два экземпляра ml.p3.2xlarge.
После определения конвейера его можно скомпилировать в соответствии со спецификацией Argo YAML с помощью SDK Kubeflow Pipelines. kfp.compiler
упаковка. Вы можете запустить этот конвейер с помощью клиента Kubeflow Pipeline SDK, который вызывает конечную точку службы Pipelines и передает соответствующие заголовки проверки подлинности прямо из записной книжки. См. следующий код:
Если вы получите sagemaker import
ошибка, запустите !pip install sagemaker и перезапустите ядро (на ядро Меню, выберите Перезапустить ядро).
Выберите Детали запуска ссылку под последней ячейкой, чтобы просмотреть конвейер Kubeflow.
Повторите шаг создания конвейера с training_runtime='kubernetes'
для тестирования конвейера в среде Kubernetes. training_runtime
переменная также может быть передана в конвейер CI/CD в производственном сценарии.
Просмотрите журналы запуска конвейера Kubeflow для компонента SageMaker.
На следующем снимке экрана показаны детали конвейера для компонента SageMaker.
Выберите шаг задания обучения и на Журналы выберите ссылку «Журналы CloudWatch», чтобы получить доступ к журналам SageMaker.
На следующем снимке экрана показаны журналы CloudWatch для каждого из двух экземпляров ml.p3.2xlarge.
Выберите любую из групп, чтобы просмотреть журналы.
Просмотрите журналы выполнения конвейера Kubeflow для компонента Kubeflow PyTorchJob Launcher.
На следующем снимке экрана показаны детали конвейера для нашего компонента Kubeflow.
Запустите следующие команды, используя Kubectl
в вашей клиентской оболочке Kubernetes, подключенной к кластеру Kubernetes, чтобы просмотреть журналы (замените свое пространство имен и имена модулей):
4.1 Очистить
Чтобы очистить все ресурсы, которые мы создали в учетной записи, нам нужно удалить их в обратном порядке.
- Удалите установку Kubeflow, запустив
./kubeflow-remove.sh
вaws-do-kubeflow
контейнер. Первый набор команд является необязательным и может использоваться в том случае, если у вас еще нет командной оболочки.aws-do-kubeflow
контейнер открыт. - Из издания
aws-do-eks
контейнер, удалите том EFS. Первый набор команд является необязательным и может использоваться в том случае, если у вас еще нет командной оболочки.aws-do-eks
контейнер открыт.Удаление Amazon EFS необходимо, чтобы освободить сетевой интерфейс, связанный с VPC, который мы создали для нашего кластера. Обратите внимание, что удаление тома EFS уничтожает все хранящиеся на нем данные.
- Из издания
aws-do-eks
контейнер, запуститьeks-delete.sh
скрипт для удаления кластера и любых других связанных с ним ресурсов, включая VPC:
Обзор
В этом посте мы обсудили некоторые типичные проблемы обучения распределенной модели и рабочих процессов машинного обучения. Мы представили обзор дистрибутива Kubeflow на AWS и поделились двумя проектами с открытым исходным кодом (оу-до-экс и aws-do-kubeflow), которые упрощают подготовку инфраструктуры и развертывание на ней Kubeflow. Наконец, мы описали и продемонстрировали гибридную архитектуру, которая позволяет рабочим нагрузкам плавно переключаться между работой в самоуправляемой инфраструктуре Kubernetes и полностью управляемой инфраструктурой SageMaker. Мы рекомендуем вам использовать эту гибридную архитектуру для ваших собственных вариантов использования.
Вы можете следить за Репозиторий лабораторий AWS для отслеживания всех вкладов AWS в Kubeflow. Вы также можете найти нас на Kubeflow #AWS Slack-канал; ваши отзывы помогут нам определить приоритеты следующих функций для участия в проекте Kubeflow.
Особая благодарность Sree Arasanagatta (менеджер по разработке программного обеспечения AWS ML) и Suraj Kota (инженер по разработке программного обеспечения) за их поддержку при запуске этого поста.
Об авторах
Канвалджит Хурми является специалистом по архитектуре решений AI/ML в Amazon Web Services. Он работает с продуктом AWS, инженерами и клиентами, предоставляя рекомендации и техническую помощь, помогая им повысить ценность своих гибридных решений машинного обучения при использовании AWS. Kanwaljit специализируется на помощи клиентам с контейнерными приложениями и приложениями машинного обучения.
Гаутам Кумар — инженер-программист в AWS AI Deep Learning. Он разработал AWS Deep Learning Containers и AWS Deep Learning AMI. Он увлечен созданием инструментов и систем для ИИ. В свободное время любит кататься на велосипеде и читать книги.
Алекс Янкульский является комплексным архитектором программного обеспечения и инфраструктуры, который любит выполнять глубокую практическую работу. В настоящее время он является главным архитектором решений для самоуправляемого машинного обучения в AWS. В своей роли он фокусируется на помощи клиентам в контейнеризации и оркестрации рабочих нагрузок машинного обучения и искусственного интеллекта в сервисах AWS на базе контейнеров. Он также является автором открытого исходного кода. Сделать фреймворк и капитан Docker, который любит применять контейнерные технологии для ускорения темпов инноваций при решении самых больших мировых проблем. В течение последних 10 лет Алекс работал над борьбой с изменением климата, демократизацией ИИ и машинного обучения, повышением безопасности путешествий, улучшением здравоохранения и повышением энергоэффективности.
- Продвинутый (300)
- AI
- ай искусство
- генератор искусств ай
- искусственный интеллект
- Эластичная файловая система Amazon (EFS)
- Амазон Эластик Кубернетес Сервис
- Создатель мудреца Амазонки
- искусственный интеллект
- сертификация искусственного интеллекта
- искусственный интеллект в банковском деле
- робот с искусственным интеллектом
- роботы с искусственным интеллектом
- программное обеспечение искусственного интеллекта
- Облако AWS9
- Машинное обучение AWS
- блокчейн
- конференция по блокчейну
- Coingenius
- разговорный искусственный интеллект
- криптоконференция ИИ
- Решения для клиентов
- дал-и
- глубокое обучение
- google ai
- обучение с помощью машины
- Платон
- Платон Ай
- Платон Интеллектуальные данные
- Платон игра
- ПлатонДанные
- платогейминг
- PyTorch на AWS
- масштаб ай
- синтаксис
- зефирнет