Поделиться через


Рекомендации по разработке рабочих нагрузок ИИ в инфраструктуре Azure (IaaS)

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

Надежность

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

  • Распределение виртуальных машин между Зоны доступности. Свести к минимуму время простоя из аппаратных сбоев или событий обслуживания с помощью Зоны доступности. Они распределяют виртуальные машины между доменами сбоя и обновления, чтобы обеспечить непрерывную работу приложения.

  • Настройте мониторинг работоспособности с помощью Azure Monitor. Отслеживание производительности ЦП, памяти и сети на виртуальных машинах с помощью Azure Monitor и настройка оповещений о снижении производительности или сбоях в инфраструктуре, поддерживающей модели. Дополнительные сведения см. в статье Azure Monitor VM Insights.

  • Автоматизация исправлений и обновлений с помощью скользящего экземпляра. Используйте службу "Управление обновлениями Azure" для применения исправлений в последовательном режиме, позволяя одному экземпляру обновляться, а другие продолжают обслуживать трафик, предотвращая простой во время обслуживания.

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

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

Безопасность

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

  • Планирование обновлений для ресурсов Azure. Используйте конфигурации обслуживания, чтобы задать определенные расписания обновления для виртуальных машин и расширений, уменьшая количество окон уязвимостей.

  • Регулярно исправлять виртуальные машины и образы контейнеров. Включите автоматическое исправление гостевой системы для виртуальных машин и масштабируемых наборов для обеспечения безопасности от новых угроз. Дополнительные сведения см. в разделе "Гостевые обновления" и обзор обслуживания узла.

  • Отслеживайте смещение модели и обеспечивайте целостность. Обеспечение целостности модели путем реализации таких механизмов безопасности, как цифровые подписи или хэш-проверки файлов моделей, чтобы предотвратить несанкционированные изменения. Используйте Azure Monitor для отслеживания ключевых метрик производительности и определения смещения модели, что может указывать на потенциальные уязвимости безопасности или сдвиги данных. Пользовательские метрики (точность, оценка F1 и распределение данных в моделях) можно определить в коде с помощью пакета SDK для метрик Azure Monitor. Пакет SDK метрик Azure Monitor позволяет отправлять статистику производительности модели и измерения смещения данных в Azure Monitor. Мониторинг изменений производительности с течением времени может помочь определить, когда поведение модели отклоняется, потенциально сигнализирует об атаке или необходимости повторного обучения. Этот упреждающий подход помогает защитить целостность модели и обеспечить соответствие требованиям безопасности.

  • Реализуйте журналы аудита и доступа. Используйте Azure Monitor и Log Analytics для регистрации доступа к моделям и виртуальным машинам, помогая выявлять несанкционированный доступ или необычные шаблоны использования. Дополнительные сведения см. в журналах действий в Azure Monitor.

  • Используйте управление версиями для файлов модели. Храните файлы модели в служба хранилища Azure (BLOB-объект, файл или диск) с помощью управления версиями для отслеживания изменений, обеспечивая четкий путь аудита для выявления и отката вредных изменений. Использование Azure DevOps для управления версиями повышает безопасность, управляя доступом к изменениям кода и применяя рекомендации в проверках кода. Этот многоуровневый подход снижает риски несанкционированных изменений и обеспечивает подотчетность. Дополнительные сведения см. в разделе "Управление версиями BLOB-объектов" в служба хранилища Azure.

  • Настройте обнаружение аномалий для выходных данных модели. Используйте Azure Monitor для отслеживания выходных метрик моделей и настройки оповещений для необычного поведения. Например, мониторинг ответов API из модели может помочь обнаружить ненормальные выходные данные. Вы можете задать обнаружение аномалий на метрику, например точность прогнозирования, чтобы автоматически обнаруживать, когда она выходит за пределы ожидаемого диапазона. Дополнительные сведения см. в статье "Создание оповещений метрик и управление ими с помощью динамических пороговых значений".

  • Применение политик доступа к модели. Используйте управление доступом на основе ролей Azure (RBAC) и идентификатор Microsoft Entra для защиты доступа к виртуальным машинам и файлам моделей, ограничивая доступ только авторизованным пользователям.

  • Регулярно обновляйте модели с обновленными данными. Реализация периодической повторной обработки модели с помощью автоматизированных скриптов или рабочих процессов на виртуальных машинах гарантирует, что модель остается точной и эффективной в отношении текущих наборов данных, что позволяет снизить риски от устаревших или неточных прогнозов. Запланируя эти задачи с помощью служба автоматизации Azure или Azure Logic Apps, вы можете обеспечить соответствие стандартам данных и повысить общую безопасность модели. Этот упреждающий подход помогает выявлять уязвимости рано, обеспечивая непрерывное улучшение и защиту от потенциальных угроз. Вы можете запланировать рабочие процессы автоматизации для периодической активации задач повторной обработки. Начните с модуля Runbook служба автоматизации Azure, запустите на виртуальной машине, создайте соответствующее расписание для получения результатов проверки.

  • Отслеживайте изменения происхождения данных и файла модели. Включите управление версиями в Хранилище BLOB-объектов Azure и отслеживайте данные, используемые в обучении и выводе, обеспечивая отсутствие несанкционированных данных, влияющих на результаты модели.

  • Применение квот ресурсов и ограничений скорости. Реализуйте ограничения скорости и квоты для API модели через Azure Управление API, чтобы предотвратить чрезмерное использование или злоупотребление, что может привести к уязвимостям системы или сбоям служб. Эта стратегия гарантирует, что система будет реагировать во время высокого трафика и снижает риски, связанные с атаками типа "отказ в обслуживании". Управляя доступом, вы можете поддерживать производительность и защищать конфиденциальные данные от потенциальной эксплуатации Управление API квот и ограничений.

  • Проводите регулярные проверки уязвимостей. Используйте проверку уязвимостей Microsoft Defender для проведения оценки уязвимостей виртуальных машин и связанных ресурсов. Регулярно проверяйте наличие проблем с безопасностью или неправильной настройки виртуальной машины, которые могут предоставлять модели. Проверка уязвимостей в Microsoft Defender.

Оптимизация затрат

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

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

  • Используйте Azure Масштабируемые наборы виртуальных машин для автоматического масштабирования.Автоматическое масштабирование экземпляров виртуальных машин на основе метрик, таких как использование ЦП, оплата только за необходимые компоненты и предотвращение чрезмерной подготовки.

  • Установите автоматическое завершение работы для неактивных экземпляров. Избегайте затрат от неиспользуемых ресурсов, включив автоматическое завершение работы, особенно для сред разработки и тестирования.

  • Используйте планы экономии Azure для прогнозируемого использования. Сокращение затрат по сравнению с ценами на оплату по мере использования путем фиксации согласованного использования в разных размерах и регионах виртуальных машин.

  • Используйте экземпляры Azure Spot для отказоустойчивых рабочих нагрузок. Получите существенные скидки на запасную емкость для рабочих нагрузок, которые могут допускать прерывания.

  • Выберите подходящее решение для хранения. Балансируйте затраты и производительность на основе потребностей рабочей нагрузки. Выберите Azure Managed Lustre (AMLFS) для высокопроизводительных, крупномасштабных приложений и Azure NetApp Files (ANF) для расширенного управления данными и надежности.

Эффективность работы

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

  • Оптимизация выделения ресурсов. Регулярно просматривайте размеры и конфигурации виртуальных машин Azure на основе фактического использования ресурсов в соответствии с потребностями рабочей нагрузки. Используйте Помощник по Azure для рекомендаций по оптимальному размеру и масштабированию.

  • Настройте автомасштабирование для повышения эффективности. Настройте автомасштабирование для виртуальных машин или контейнеров для обработки требований рабочей нагрузки без чрезмерной подготовки. Используйте Azure Масштабируемые наборы виртуальных машин для динамической настройки ресурсов на основе спроса. Дополнительные сведения см. в статье Масштабируемые наборы виртуальных машин Azure.

  • Проводите обычную настройку производительности. Непрерывно профилируйте приложение для выявления и устранения узких мест производительности. Используйте Application Insights Profiler для анализа кода модели и использования ресурсов.

  • Реализуйте распределенное обучение для повышения эффективности. Используйте распределенные методы обучения, если это применимо, чтобы сократить время обучения с помощью нескольких виртуальных машин. Платформы, такие как Horovod и PyTorch, поддерживают распределенное обучение в Azure.

  • Сохраните контрольные точки в Хранилище BLOB-объектов Azure. Периодически сохраняйте состояния модели, весы и конфигурации в Хранилище BLOB-объектов Azure. Вы можете использовать пакеты SDK или библиотеки Azure, доступные на языке программирования, который вы используете для LLM. Сохраните контрольные точки в структурированном формате, например файлы TensorFlow SavedModel или PyTorch. Измените код обучения или вывода, чтобы включить логику контрольных точек. Начните с интервалов настройки (после каждой эпохи или некоторых итерации), чтобы сохранить состояние модели. Используйте согласованное соглашение об именовании для файлов контрольных точек, чтобы легко отслеживать последнее состояние.

  • Проектирование для восстановления состояния. Убедитесь, что приложение может восстановиться после сохраненной контрольной точки. Реализуйте логику для загрузки состояния модели из Хранилище BLOB-объектов Azure при запуске приложения. Он включает, проверяет наличие существующих контрольных точек и загружает последнюю контрольную точку, если она доступна, позволяя приложению возобновить работу без потери хода выполнения.

Оптимизация производительности

Эффективность производительности относится к максимизации мощности обработки инфраструктуры Azure в соответствии с требованиями модели искусственного интеллекта. Необходимо настроить параметры GPU, оптимизировать процессы ввода-вывода (ввода-вывода) и выполнить тесты тестирования тестирования для повышения скорости вычислений и скорости реагирования. Обеспечение высокой производительности поддерживает выполнение сложных моделей искусственного интеллекта в масштабе, что повышает удовлетворенность пользователей и снижает задержку.

Настройка GPU

Увеличьте частоту обработки графики (GPU), чтобы повысить производительность, особенно для задач, требующих высокой графической обработки или сложных вычислений. Более высокие скорости часов позволяют GPU выполнять больше операций за заданный период времени, повышая общую эффективность. Используйте этот скрипт оптимизации GPU, чтобы задать частоты часов GPU максимальным значениям.

  • Включите ускоренную сеть. Ускорение сети — это технология аппаратного ускорения, которая позволяет виртуальным машинам использовать виртуализацию одного корневого ввода-вывода (SR-IOV) в поддерживаемых типах виртуальных машин. Она обеспечивает более низкую задержку, снижение jitter и уменьшение использования ЦП. Включение ускорения сети обеспечивает существенные улучшения производительности интерфейсной сети.

Настройка ввода-вывода

  • Оптимизируйте хранилище с нуля. Царапины должны иметь высокую пропускную способность и низкую задержку. Для обучения требуется чтение данных, обработка и использование этого расположения хранилища в качестве места для нуля во время выполнения задания. В идеале вы будете использовать локальный SSD непосредственно на каждой виртуальной машине. Если требуется общая файловая система для нуля, объединение всех SSD NVMe для создания параллельной файловой системы (PFS) может быть отличным вариантом с точки зрения затрат и производительности, если она имеет достаточную емкость. Одним из способов является использование Управляемого Lustre Azure. Если управляемое lustre в Azure не подходит, можно изучить такие варианты хранения, как Azure NetApp Files или Azure Native Qumulo.

  • Реализуйте хранилище контрольных точек. Большие задания обучения глубокого обучения могут выполняться в течение нескольких недель в зависимости от количества используемых виртуальных машин. Как и любой кластер HPC, вы можете столкнуться с ошибками, такими как проблемы InfiniBand, сбои двух встроенных модулей памяти (DIMM), ошибки исправления ошибок ode (ECC) в памяти GPU. Важно иметь стратегию контрольных точек. Сведения о интервале контрольной точки (при сохранении данных). Узнайте, сколько данных передается каждый раз. Решение хранилища, соответствующее требованиям к емкости и производительности. Используйте хранилище BLOB-объектов, если оно соответствует требованиям к производительности.

Тесты тестирования для тестирования

Тесты тестирования тестирования помогают оценить и улучшить производительность распределенного обучения глубокого обучения на gpu, особенно для крупномасштабных моделей. Эти тесты измеряют эффективность взаимодействия GPU между узлами, стремясь сократить узкие места передачи данных во время распределенного обучения. К трем тестам, рассмотренным, относятся:

  • Платформа Megatron: поддерживает крупномасштабные языковые модели, повышая эффективность распределенного обучения.
  • Тесты библиотеки коллективных коммуникаций NVIDIA (NCCL) и библиотеки roCm Communication Collectives (RCCL): оценка производительности и точности в многопроцессорной коммуникации с помощью библиотек NCCL или RCCL, шаблонов тестирования, таких как все сокращение и разброс.

Эти тесты обеспечивают масштабируемость и оптимальную производительность для LLM, при этом Megatron фокусируется на обучении моделей и NCCL/RCCL на взаимодействии с GPU.

Тест NVIDIA Megatron-LM

NVIDIA Megatron-LM — это платформа с открытым исходным кодом для обучения больших языковых моделей. Это позволяет разработчикам создавать массивные нейронные сети для задач NLP с функциями, в том числе:

  • Параллелизм: поддерживает параллелизм модели, данных и конвейера для моделей с миллиардом параметров.
  • Масштабируемость: масштабируется на нескольких GPU и узлах для эффективного обучения больших моделей.
  • Гибкость. Позволяет настроить архитектуру модели, загрузку данных и стратегии обучения.
  • Оптимизация. Использует оптимизацию GPU NVIDIA для повышения производительности.

Megatron-LM развертывается в инфраструктуре Azure HPC и использует масштабируемость Azure для крупных языковых моделей без необходимости локального оборудования.

Настройка теста Megatron-LM

Для развертывания Megatron-LM требуется определенное программное обеспечение и оборудование.

  • Выберите нужные варианты развертывания. Используйте рабочую область CycleCloud для Slurm , чтобы упростить развертывание. Выберите номера SKU серии NC или серии ND для секции GPU. Для обучения с несколькими узлами номера SKU серии ND рекомендуется для поддержки RDMA. Образы Azure HPC Marketplace обычно включают эти драйверы и библиотеки. Если требуется настройка, репозиторий azhpc-images может обеспечить совместимость.

  • Используйте правильное изображение. Требования к программному обеспечению для проекта включают операционную систему под управлением Linux, как правило, Ubuntu. Для взаимодействия с несколькими GPU и несколькими узлами необходимо иметь такие библиотеки коммуникации, как NCCL и MPI. Кроме того, необходимо установить соответствующие драйверы NVIDIA, чтобы обеспечить ускорение GPU. Образы Azure HPC Marketplace доступны с этими драйверами и библиотеками, предварительно установленными. Однако при необходимости настройки репозиторий azhpc-images можно использовать для обеспечения совместимости.

Использование теста Megatron-LM

Необходимо запустить Megatron-LM с помощью последнего выпуска контейнера PyTorch NGC. Чтобы запустить контейнер в традиционном кластере HPC на основе Slurm, необходимо установить и настроить эти другие компоненты в кластере:

  • enroot: средство, позволяющее пользователям запускать контейнерные приложения в кластерах HPC, не требуя привилегий корней или изменяя систему узла.
  • pyxis: подключаемый модуль для Slurm, который позволяет легко интегрировать enroot с Slurm, позволяя пользователям отправлять контейнерные задания в очереди Slurm и запускать их на узлах HPC.

Оба этих компонента включены в CycleCloud Workspace for Slurm, но в настоящее время не включены в кластеры Slurm , созданные с помощью CycleCloud. Эти дополнительные компоненты можно представить с помощью cluster-init с помощью проектов CycleCloud. В соответствии с этими требованиями можно использовать Megatron-LM для обучения LLM следующим образом:

  • Проверка производительности кластера. Определите все потенциальные проблемы с оборудованием перед выполнением рабочей нагрузки с проверкой работоспособности узлов. Используйте тесты NCCL для проверки распределенной производительности кластера.
  • Выбор обучающих данных: используйте модель codeParrot в качестве отправной точки для проверки рабочего процесса.
  • Предварительная обработка данных. Используйте скрипт preprocess_data.py в репозитории Megatron-LM для преобразования данных в формат, совместимый с Megatron-LM.
  • Обучение с помощью Megatron-LM: используйте примеры в Megatron-LM в качестве ссылки на настройку Megatron для обучения.

Эта настройка обеспечивает эффективное развертывание и обучение больших языковых моделей в инфраструктуре Azure.

Проверка пропускной способности NCCL

Чтобы проверить и оптимизировать взаимодействие GPU между узлами, выполните тест пропускной способности NCCL. Тест пропускной способности NCCL является специализированным средством в NCCL, библиотекой, которая упрощает высокоскоростную связь между gpu. NCCL поддерживает коллективные операции, включая все сокращение, сбор, сокращение, широковещательное и уменьшение точечной передачи, между одним или несколькими узлами GPU, и обеспечивает оптимальную производительность на платформах с PCIe, NVLink, NVswitch или сетевых настроек, таких как InfiniBand или TCP/IP. Дополнительные сведения см. в тестах NVIDIA/NCCL.

Метрики производительности NCCL

Используйте тест пропускной способности NCCL для оценки ключевых метрик, включая время и пропускную способность. "Time" (в миллисекундах) измеряет затраты или задержку в операциях, что делает его полезным для оценки операций с небольшими размерами данных. "Пропускная способность" (в ГБ/с) оценивает эффективность операций типа "точка — точка" (например, отправка и получение). "Пропускная способность шины" отражает эффективность использования оборудования путем учета скорости обмена данными между GPU и узких мест в компонентах, таких как NVLink или PCI. Предоставляются вычисления для различных коллективных операций, таких как AllReduce, ReduceScatter, AllGather, Broadcast и Reduce.

Запуск теста NCCL

Чтобы инициировать эти тесты в развертывании CycleCloud, подключитесь к узлу планировщика через SSH и получите доступ к вычислительному узлу, оснащенному GPU. Клонируйте репозиторий Git для тестов NCCL, перейдите в nccl-tests каталог и создайте файл узла, в котором перечислены узлы для тестирования. Получите IP-адрес узла планировщика из веб-приложения CycleCloud.

Аргументы теста NCCL

Перед выполнением тестов укажите различные аргументы-G Ознакомьтесь с тестовой документацией по NCCL, чтобы получить полный список настраиваемых параметров.

Тесты RCCL

Библиотека roCm Communication Collectives (RCCL) — это специализированная библиотека, предназначенная для эффективного взаимодействия между графическими процессорами AMD. Она обеспечивает коллективные операции, такие как все сокращение, сбор, широковещательная передача и сокращение, поддерживающие взаимодействие между узлами GPU внутри узла. Оптимизировано для платформ с помощью PCIe и сетевых технологий, таких как InfiniBand, RCCL обеспечивает масштабируемую передачу данных в средах с несколькими GPU. Она поддерживает интеграцию с рабочими процессами с одним и несколькими процессами, например с помощью MPI. Дополнительные сведения см. в библиотеке roCm Communication Collectives

  • Настройка среды. Установите ROCM и убедитесь, что RCCL правильно установлен на всех узлах.
  • Сборка тестов RCCL. Клонируйте репозиторий, перейдите к каталогу rccl-test и скомпилируйте тесты.
  • Выполнение тестов пропускной способности. Используйте предоставленные исполняемые файлы теста (rccl-test), указывая операции обмена данными, такие как all-reduce.
  • Анализ производительности. Сравните результаты пропускной способности и задержки между узлами и GPU.

Следующий шаг