Недавние разработки в области машинного обучения (МО) привели к созданию все более крупных моделей, некоторые из которых требуют сотен миллиардов параметров. Хотя они более мощные, обучение и выводы на основе этих моделей требуют значительных вычислительных ресурсов. Несмотря на доступность расширенных распределенных библиотек обучения, для задач обучения и вывода обычно требуются сотни ускорителей (графические процессоры или специальные микросхемы машинного обучения, такие как AWS Трениум и Вывод AWS), а значит, десятки или сотни экземпляров.
В таких распределенных средах наблюдаемость как экземпляров, так и чипов машинного обучения становится ключом к точной настройке производительности модели и оптимизации затрат. Метрики позволяют командам понимать поведение рабочей нагрузки и оптимизировать распределение и использование ресурсов, диагностировать аномалии и повышать общую эффективность инфраструктуры. Для специалистов по обработке данных использование и насыщенность чипов ML также важны для планирования мощности.
Этот пост проведет вас через Шаблон наблюдаемости с открытым исходным кодом для AWS Inferentia, в котором показано, как отслеживать производительность чипов ML, используемых в Амазон Эластик Кубернетес Сервис (Amazon EKS) кластер с узлами плоскости данных на основе Эластичное вычислительное облако Amazon (Amazon EC2) экземпляры типа INF1 и INF2.
Узор является частью Ускоритель наблюдения AWS CDK, набор специализированных модулей, которые помогут вам настроить наблюдаемость для кластеров Amazon EKS. AWS CDK Observability Accelerator организован на основе шаблонов, которые представляют собой повторно используемые блоки для развертывания нескольких ресурсов. Набор шаблонов наблюдаемости с открытым исходным кодом обеспечивает наблюдаемость с помощью Графана под управлением Amazon приборные панели, Дистрибутив AWS для OpenTelemetry сборщик для сбора метрик и Управляемый сервис Amazon для Prometheus хранить их.
Обзор решения
Следующая диаграмма иллюстрирует архитектуру решения.
В этом решении развертывается кластер Amazon EKS с группой узлов, включающей экземпляры Inf1.
Тип AMI группы узлов: AL2_x86_64_GPU
, который использует Amazon EKS оптимизирован для ускорения Amazon Linux AMI. В дополнение к стандартной конфигурации AMI, оптимизированной для Amazon EKS, ускоренная конфигурация AMI включает Среда выполнения NeuronX.
Для доступа к чипам ML из Kubernetes шаблон развертывает АВС Нейрон плагин устройства.
Метрики предоставляются управляемому сервису Amazon для Prometheus neuron-monitor
DaemonSet, который развертывает минимальный контейнер с Нейронные инструменты установлен. В частности, neuron-monitor
DaemonSet запускает neuron-monitor
команда передается в neuron-monitor-prometheus.py
сопутствующий скрипт (обе команды являются частью контейнера):
Команда использует следующие компоненты:
neuron-monitor
собирает метрики и статистику из приложений Neuron, работающих в системе, и передает собранные данные на стандартный вывод в Формат JSONneuron-monitor-prometheus.py
отображает и предоставляет данные телеметрии из формата JSON в формат, совместимый с Prometheus.
Данные визуализируются в Amazon Managed Grafana с помощью соответствующей информационной панели.
Остальная часть настройки для сбора и визуализации метрик с помощью Amazon Managed Service for Prometheus и Amazon Managed Grafana аналогична той, которая используется в других шаблонах на основе открытого исходного кода, которые включены в AWS Observability Accelerator for CDK
Репозиторий GitHub.
Предпосылки
Для выполнения шагов, описанных в этом посте, вам потребуется следующее:
Настройте среду
Выполните следующие шаги, чтобы настроить среду:
- Откройте окно терминала и выполните следующие команды:
- Получите идентификаторы рабочей области любого существующего рабочего пространства Amazon Managed Grafana:
Ниже приведен пример вывода:
- Присвойте значения
id
иendpoint
к следующим переменным среды:
COA_AMG_ENDPOINT_URL
необходимо включить https://
.
- Создайте ключ API Grafana в рабочей области Grafana, управляемой Amazon:
- Установить секрет в Менеджер систем AWS:
Доступ к этому секрету будет осуществляться с помощью надстройки «Внешние секреты», и он будет доступен как собственный секрет Kubernetes в кластере EKS.
Загрузите среду AWS CDK.
Первым шагом к развертыванию любого AWS CDK является начальная загрузка среды. Вы используете cdk bootstrap
Команда в интерфейсе командной строки AWS CDK для подготовки среды (сочетания учетной записи AWS и региона AWS) с ресурсами, необходимыми AWS CDK для выполнения развертываний в этой среде. Загрузка AWS CDK необходима для каждой комбинации учетной записи и региона, поэтому, если вы уже загрузили AWS CDK в регионе, вам не нужно повторять процесс загрузки.
Разверните решение
Выполните следующие шаги для развертывания решения:
- Клонировать cdk-aws-observability-ускоритель репозиторий и установите пакеты зависимостей. Этот репозиторий содержит код AWS CDK v2, написанный на TypeScript.
Ожидается, что фактические настройки для файлов JSON панели мониторинга Grafana будут указаны в контексте AWS CDK. Вам нужно обновить context
в cdk.json
файл, расположенный в текущем каталоге. Расположение приборной панели определяется fluxRepository.values.GRAFANA_NEURON_DASH_URL
параметр и neuronNodeGroup
используется для установки типа экземпляра, номера и Магазин эластичных блоков Amazon (Amazon EBS), используемый для узлов.
- Введите следующий фрагмент в
cdk.json
, заменяяcontext
:
Вы можете заменить тип экземпляра Inf1 на Inf2 и изменить размер по мере необходимости. Чтобы проверить доступность в выбранном вами регионе, выполните следующую команду (измените Values
как вы считаете нужным):
- Установите зависимости проекта:
- Выполните следующие команды, чтобы развернуть шаблон наблюдаемости с открытым исходным кодом:
Проверить решение
Выполните следующие шаги для проверки решения:
- Запустите
update-kubeconfig
команда. Вы сможете получить команду из выходного сообщения предыдущей команды:
- Проверьте созданные вами ресурсы:
На следующем снимке экрана показан пример вывода.
- Убедитесь в том,
neuron-device-plugin-daemonset
DaemonSet работает:
Ниже приводится наш ожидаемый результат:
- Подтвердите, что
neuron-monitor
DaemonSet работает:
Ниже приводится наш ожидаемый результат:
- Чтобы убедиться, что устройства и ядра Neuron видны, запустите команду
neuron-ls
иneuron-top
команды, например, от вашего модуля нейрон-монитора (вы можете получить имя модуля из выводаkubectl get pods -A
):
На следующем снимке экрана показан ожидаемый результат.
На следующем снимке экрана показан ожидаемый результат.
Визуализируйте данные с помощью панели инструментов Grafana Neuron.
Войдите в свою рабочую область Grafana, управляемую Amazon, и перейдите к Dashboards панель. Вы должны увидеть панель мониторинга с именем Нейрон/Монитор.
Чтобы увидеть некоторые интересные метрики на панели управления Grafana, мы применим следующий манифест:
Это пример рабочей нагрузки, которая компилирует модель torchvision ResNet50 и выполняет повторяющийся вывод в цикле для создания данных телеметрии.
Чтобы убедиться, что модуль был успешно развернут, запустите следующий код:
Вы должны увидеть модуль с именем pytorch-inference-resnet50
.
Через несколько минут, заглянув в Нейрон/Монитор панели мониторинга, вы должны увидеть собранные показатели, подобные следующим снимкам экрана.
Grafana Оператор и Flux всегда работают вместе, чтобы синхронизировать ваши информационные панели с Git. Если вы случайно удалите панели мониторинга, они будут автоматически восстановлены.
Убирать
Вы можете удалить весь стек AWS CDK с помощью следующей команды:
Заключение
В этом посте мы показали, как внедрить возможность наблюдения с помощью инструментов с открытым исходным кодом в кластер EKS с плоскостью данных, на которой работают экземпляры EC2 Inf1. Мы начали с выбора ускоренного AMI, оптимизированного для Amazon EKS, для узлов плоскости данных, который включает среду выполнения контейнера Neuron, обеспечивающую доступ к устройствам AWS Inferentia и Trainium Neuron. Затем, чтобы предоставить доступ к ядрам и устройствам Neuron для Kubernetes, мы развернули плагин устройства Neuron. Фактический сбор и преобразование данных телеметрии в формат, совместимый с Prometheus, был достигнут с помощью neuron-monitor
и neuron-monitor-prometheus.py
. Метрики были получены из Amazon Managed Service для Prometheus и отображены на информационной панели Neuron в Amazon Managed Grafana.
Мы рекомендуем вам изучить дополнительные шаблоны наблюдаемости в разделе AWS Observability Accelerator для CDK Репозиторий GitHub. Дополнительную информацию о Нейроне см. Документация по AWS Neuron.
Об авторе
Риккардо Фрески — старший архитектор решений в AWS, специализирующийся на модернизации приложений. Он тесно сотрудничает с партнерами и клиентами, помогая им трансформировать свои ИТ-ландшафты на пути к облаку AWS путем рефакторинга существующих приложений и создания новых.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://aws.amazon.com/blogs/machine-learning/open-source-observability-for-aws-inferentia-nodes-within-amazon-eks-clusters/