Home Машинное обучение Анонсируем предварительную версию Amazon SageMaker Profiler: отслеживайте и визуализируйте подробные данные о производительности оборудования для рабочих нагрузок обучения модели. | DeepTech

Анонсируем предварительную версию Amazon SageMaker Profiler: отслеживайте и визуализируйте подробные данные о производительности оборудования для рабочих нагрузок обучения модели. | DeepTech

0
Анонсируем предварительную версию Amazon SageMaker Profiler: отслеживайте и визуализируйте подробные данные о производительности оборудования для рабочих нагрузок обучения модели.
 | DeepTech

Сегодня мы рады объявить о предварительной версии Amazon SageMaker Profiler — функции Amazon SageMaker, которая обеспечивает детальное представление о вычислительных ресурсах AWS, предоставляемых во время обучения моделей глубокого обучения в SageMaker. С помощью SageMaker Profiler вы можете отслеживать все действия на процессорах и графических процессорах, такие как загрузка процессора и графического процессора, запуск ядра на графических процессорах, запуск ядра на процессорах, операции синхронизации, операции с памятью между графическими процессорами, задержки между запусками ядра и соответствующими запусками, а также передачу данных. между процессорами и графическими процессорами. В этом посте мы познакомим вас с возможностями SageMaker Profiler.

SageMaker Profiler предоставляет модули Python для аннотирования обучающих сценариев PyTorch или TensorFlow и активации SageMaker Profiler. Он также предлагает пользовательский интерфейс (UI), который визуализирует профильстатистическую сводку профилированных событий и временную шкалу обучающего задания для отслеживания и понимания временной взаимосвязи событий между графическими процессорами и центральными процессорами.

Необходимость профилирования учебных вакансий

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

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

Предварительные условия

Ниже приведены необходимые условия для начала использования SageMaker Profiler:

  • Домен SageMaker в вашей учетной записи AWS. – Инструкции по настройке домена см. в разделе Подключение к домену Amazon SageMaker с помощью быстрой настройки. Вам также необходимо добавить профили пользователей домена, чтобы отдельные пользователи могли получить доступ к приложению пользовательского интерфейса SageMaker Profiler. Дополнительную информацию см. в разделе Добавление и удаление профилей пользователей домена SageMaker.
  • Разрешения – Следующий список представляет собой минимальный набор разрешений, которые следует назначить роли выполнения для использования приложения пользовательского интерфейса SageMaker Profiler:
    • sagemaker:CreateApp
    • sagemaker:DeleteApp
    • sagemaker:DescribeTrainingJob
    • sagemaker:SearchTrainingJobs
    • s3:GetObject
    • s3:ListBucket

Подготовьте и запустите задание по обучению с помощью SageMaker Profiler.

Чтобы начать запись запусков ядра на графических процессорах во время выполнения задания обучения, измените сценарий обучения с помощью модулей Python SageMaker Profiler. Импортируйте библиотеку и добавьте start_profiling() и stop_profiling() методы определения начала и конца профилирования. Вы также можете использовать дополнительные пользовательские аннотации для добавления маркеров в сценарий обучения для визуализации действий оборудования во время определенных операций на каждом этапе.

Существует два подхода к профилированию сценариев обучения с помощью SageMaker Profiler. Первый подход основан на профилировании полных функций; второй подход основан на профилировании конкретных строк кода в функциях.

Для профилирования по функциям используйте контекстный менеджер smppy.annotate для аннотирования полных функций. В следующем примере сценария показано, как реализовать диспетчер контекста для переноса цикла обучения и полных функций на каждой итерации:

import smppy

sm_prof = smppy.SMProfiler.instance()
config = smppy.Config()
config.profiler = {
    "EnableCuda": "1",
}
sm_prof.configure(config)
sm_prof.start_profiling()

for epoch in range(args.epochs):
    if world_size > 1:
        sampler.set_epoch(epoch)
    tstart = time.perf_counter()
    for i, data in enumerate(trainloader, 0):
        with smppy.annotate("step_"+str(i)):
            inputs, labels = data
            inputs = inputs.to("cuda", non_blocking=True)
            labels = labels.to("cuda", non_blocking=True)
    
            optimizer.zero_grad()
    
            with smppy.annotate("Forward"):
                outputs = net(inputs)
            with smppy.annotate("Loss"):
                loss = criterion(outputs, labels)
            with smppy.annotate("Backward"):
                loss.backward()
            with smppy.annotate("Optimizer"):
                optimizer.step()

sm_prof.stop_profiling()

Вы также можете использовать smppy.annotation_begin() и smppy.annotation_end() для аннотирования определенных строк кода в функциях. Для получения дополнительной информации обратитесь к документации.

Настройте средство запуска учебных заданий SageMaker

После завершения аннотирования и настройки модулей запуска профилировщика сохраните сценарий обучения и подготовьте оценщик платформы SageMaker к обучению с помощью SageMaker Python SDK.

  1. Настройте profiler_config объект с помощью ProfilerConfig и Profiler модули следующим образом:
    from sagemaker import ProfilerConfig, Profiler
    profiler_config = ProfilerConfig(
        profiler_params = Profiler(cpu_profiling_duration=3600))

  2. Создайте оценщик SageMaker с помощью profiler_config объект, созданный на предыдущем шаге. В следующем коде показан пример создания средства оценки PyTorch:
    import sagemaker
    from sagemaker.pytorch import PyTorch
    
    estimator = PyTorch(
        framework_version="2.0.0",
        image_uri="763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.0-gpu-py310-cu118-ubuntu20.04-sagemaker",
        role=sagemaker.get_execution_role(),
        entry_point="train_with_profiler_demo.py", # your training job entry point
        source_dir=source_dir, # source dir for your training script
        output_path=output_path,
        base_job_name="sagemaker-profiler-demo",
        hyperparameters=hyperparameters, # if any
        instance_count=1, 
        instance_type=ml.p4d.24xlarge,
        profiler_config=profiler_config
    )

Если вы хотите создать оценщик TensorFlow, импортируйте sagemaker.tensorflow.TensorFlow вместо этого укажите одну из версий TensorFlow, поддерживаемых SageMaker Profiler. Дополнительные сведения о поддерживаемых платформах и типах экземпляров см. Поддерживаемые платформы.

  1. Запустите задание обучения, запустив метод fit:
    estimator.fit(wait=False)

Запустите пользовательский интерфейс профилировщика SageMaker.

После завершения задания обучения вы можете запустить пользовательский интерфейс SageMaker Profiler, чтобы визуализировать и изучить профиль задания обучения. Доступ к приложению пользовательского интерфейса SageMaker Profiler можно получить через целевую страницу SageMaker Profiler на консоли SageMaker или через домен SageMaker.

Чтобы запустить приложение пользовательского интерфейса SageMaker Profiler на консоли SageMaker, выполните следующие шаги:

  1. На консоли SageMaker выберите Профилировщик в панели навигации.
  2. Под Начатьвыберите домен, в котором вы хотите запустить приложение пользовательского интерфейса SageMaker Profiler.

Если ваш профиль пользователя принадлежит только одному домену, вы не увидите возможность выбора домена.

  1. Выберите профиль пользователя, для которого вы хотите запустить приложение пользовательского интерфейса SageMaker Profiler.

Если в домене нет профиля пользователя, выберите Создать профиль пользователя. Дополнительные сведения о создании нового профиля пользователя см. в разделе Добавление и удаление профилей пользователей.

  1. Выбирать Открыть профайлер.

Вы также можете запустить пользовательский интерфейс SageMaker Profiler со страницы сведений о домене.

Получите ценную информацию от профилировщика SageMaker

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

Вы можете просмотреть список всех заданий обучения, отправленных в SageMaker Profiler, и выполнить поиск конкретного задания обучения по его названию, времени создания и статусу выполнения (В процессе, Завершено, Сбой, Остановлено или Остановлено). Чтобы загрузить профиль, выберите учебное задание, которое хотите просмотреть, и выберите Нагрузка. Название вакансии должно появиться в Загруженный профиль раздел вверху.

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

Для этого поста мы просматриваем профиль АЛЬБЕФ обучающее задание на двух экземплярах ml.p4d.24xlarge.

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

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

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

Наконец, панель мониторинга позволяет визуализировать дополнительные показатели, такие как распределение времени шага, которое представляет собой гистограмму, показывающую распределение длительности шагов на графических процессорах, и круговую диаграмму распределения точности ядра, которая показывает процент времени, затраченного на запуск ядер. в разных типах данных, таких как FP32, FP16, INT32 и INT8.

Вы также можете получить круговую диаграмму распределения активности графического процессора, которая показывает процент времени, затраченного на действия графического процессора, такие как запуск ядер, памяти (memcpy и memset) и синхронизация (sync). Вы можете визуализировать процент времени, затраченного на операции с памятью графического процессора, с помощью круговой диаграммы распределения операций с памятью графического процессора.

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

Интерфейс временной шкалы

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

Для каждого ЦП вы можете отслеживать счетчики производительности ЦП, например clk_unhalted_ref.tsc и itlb_misses.miss_causes_a_walk. Для каждого графического процессора в экземпляре 2x p4d.24xlarge вы можете увидеть временную шкалу хоста и временную шкалу устройства. Запуски ядра находятся на временной шкале хоста, а запуск ядра — на временной шкале устройства.

Вы также можете увеличить масштаб отдельных шагов. На следующем снимке экрана мы увеличили масштаб до шага_41. Полоса временной шкалы, выбранная на следующем снимке экрана, является AllReduce операция, важный этап связи и синхронизации в распределенном обучении, выполняемая на GPU-0. На снимке экрана обратите внимание, что запуск ядра на хосте GPU-0 соединяется с запуском ядра в потоке 1 устройства GPU-0, обозначенном голубой стрелкой.

Доступность и соображения

SageMaker Profiler доступен в PyTorch (версии 2.0.0 и 1.13.1) и TensorFlow (версии 2.12.0 и 2.11.1). В следующей таблице приведены ссылки на поддерживаемые Контейнеры глубокого обучения AWS для SageMaker.

Рамки Версия URI изображения AWS DLC
PyTorch 2.0.0 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.0-gpu-py310-cu118-ubuntu20.04-sagemaker
PyTorch 1.13.1 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker
Тензорфлоу 2.12.0 763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.12.0-gpu-py310-cu118-ubuntu20.04-sagemaker
Тензорфлоу 2.11.1 763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.11.1-gpu-py39-cu112-ubuntu20.04-sagemaker

SageMaker Profiler в настоящее время доступен в следующих регионах: Восток США (Огайо, Северная Вирджиния), Запад США (Орегон) и Европа (Франкфурт, Ирландия).

SageMaker Profiler доступен в типах обучающих экземпляров ml.p4d.24xlarge, ml.p3dn.24xlarge и ml.g4dn.12xlarge.

Полный список поддерживаемых платформ и версий см. в документации.

За SageMaker Profiler взимается плата после окончания уровня бесплатного пользования SageMaker или бесплатного пробного периода функции. Дополнительную информацию см. в разделе «Цены на Amazon SageMaker».

Производительность профилировщика SageMaker

Мы сравнили накладные расходы SageMaker Profiler с другими профилировщиками с открытым исходным кодом. Базовый уровень, использованный для сравнения, был получен при выполнении задания обучения без профилировщика.

Наш ключевой вывод показал, что SageMaker Profiler обычно приводит к сокращению оплачиваемой продолжительности обучения, поскольку у него меньше накладных расходов на сквозные обучающие прогоны. Он также генерировал меньше данных профилирования (до 10 раз меньше) по сравнению с альтернативами с открытым исходным кодом. Меньшие артефакты профилирования, созданные SageMaker Profiler, требуют меньше места для хранения, что также позволяет сэкономить на затратах.

Заключение

SageMaker Profiler позволяет получить подробную информацию об использовании вычислительных ресурсов при обучении моделей глубокого обучения. Это позволит вам устранить «горячие точки» и «узкие места» производительности, чтобы обеспечить эффективное использование ресурсов, что в конечном итоге приведет к снижению затрат на обучение и сокращению общей продолжительности обучения.

Чтобы начать работу с SageMaker Profiler, обратитесь к документации.


Об авторах

Рой Аллела — старший специалист по архитектуре решений AI/ML в AWS в Мюнхене, Германия. Рой помогает клиентам AWS — от небольших стартапов до крупных предприятий — эффективно обучать и развертывать большие языковые модели на AWS. Рой увлечен проблемами вычислительной оптимизации и повышением производительности рабочих нагрузок ИИ.

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

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

LEAVE A REPLY

Please enter your comment!
Please enter your name here