В этой статье описывается, как эффективно запускать рабочие нагрузки, использующие узлы GPU в кластере Служба Azure Kubernetes (AKS). Узнайте, как выбрать правильный номер SKU, использовать узлы GPU для обучения моделей машинного обучения и использовать узлы GPU для выполнения выводов в AKS.
Сценарии
Рабочие нагрузки GPU могут быть дорогостоящими для выполнения. Чтобы избежать ненужных затрат, знают, когда следует развертывать узлы на основе GPU в кластерах AKS.
Графические процессоры, искусственный интеллект и машинное обучение, а также специализированные задачи, что делает их идеальными для вычислительных рабочих нагрузок с интенсивными вычислениями. ЦП эффективно управляют сложной логикой и ветвлением. Графические процессоры оптимизированы для пропускной способности. Они могут эффективно обрабатывать простые арифметические и векторные операции.
Чтобы определить, когда следует использовать графические процессоры для рабочих нагрузок AKS, необходимо понимать оптимизацию GPU и интенсивность вычислений, но следует также учитывать другие факторы. Чтобы лучше узнать об использовании GPU для рабочих нагрузок AKS, рассмотрим следующие примеры рабочих нагрузок, которые пользуются узлами GPU в кластере AKS.
Обработка и анализ данных
С помощью графических процессоров можно ускорить предварительную обработку данных, проектирование признаков и обучение модели в рабочих процессах обработки и анализа данных. Чтобы эффективно использовать графические процессоры, платформы, такие как RAPIDS и Dask GPU , расширяют популярные библиотеки обработки данных, такие как pandas и scikit-learn.
Программное обеспечение с открытым исходным кодом (OSS)- ускоряемые обработчики запросов SQL и базы данных столбцов, такие как BlazingSQL и HeavyDB , используют графические процессоры для быстрого выполнения запросов и аналитики больших наборов данных.
машинное и глубокое обучение.
Популярные платформы машинного обучения и глубокого обучения, такие как TensorFlow и PyTorch, получают преимущества от gpu, так как они могут ускорить обучение и вывод задач.
Модели глубокого обучения имеют сложные нейронные сети. Параллельная обработка на GPU ускоряет вычисления модели. Графические процессоры обеспечивают высоко эффективную умножение матриц и свертку, которые являются основными операциями в глубоком обучении.
Вы также можете использовать графические процессоры для ускорения таких задач, как классификация изображений, обнаружение объектов, обработка естественного языка и распознавание речи.
Компьютерное зрение и обработка изображений
Задачи компьютерного зрения интерпретируют визуальные данные для извлечения значимых сведений. Эти задачи все чаще используются в приложениях, использующих ИИ, автономных транспортных средствах, медицинских образах, системах наблюдения и дополненной реальности. Графические процессоры используют параллельную обработку, чтобы они могли эффективно обрабатывать крупномасштабные данные изображения и сложные вычисления для таких задач, как обнаружение объектов, классификация изображений и извлечение признаков.
Обработка и потоковая передача видео
Видео все чаще распространено в бизнесе, поэтому организации нуждаются в оборудовании, на основе GPU, а не ЦП. Рабочие нагрузки обработки видео, включая транскодирование, кодировку и потоковую передачу, являются интенсивными для вычислений, особенно если они имеют содержимое с высоким определением или содержимое 4K. Графические процессоры предоставляют эффективную платформу, которая обеспечивает высокопроизводительную, низкую задержку видео в различных приложениях, таких как потоковая трансляция спортивных мероприятий или корпоративных видео.
Узлы агента с поддержкой GPU обеспечивают широкий интерфейс клиента в средах виртуального рабочего стола, так как они выгружают графические задачи с интенсивным графиком на GPU. Возможности кодирования видео и декодирования gpu позволяют улучшить потоковую передачу видео в режиме реального времени, транскодирование видео и аналитику видео.
Для ускорения задач компьютерного зрения, таких как обнаружение объектов, отслеживание объектов и обработка изображений или видео, можно использовать такие платформы, как OpenCV, OpenCL, NVIDIA CUDA и NVIDIA cuDNN.
Игровые платформы и облачные игровые службы используют графические процессоры для обеспечения высококачественной графики и плавного игрового процесса.
Высокопроизводительные вычисления
Для высокопроизводительных вычислений (HPC) часто требуются сложные имитации, числовый анализ и научные вычисления. Для быстрого выполнения этих задач можно использовать графические процессоры для параллелизации рабочей нагрузки между несколькими ядрами. Примеры приложений HPC, которым требуется массовая параллельная обработка энергии, включают научные моделирования, прогнозирование погоды, динамику вычислительной жидкости и молекулярное моделирование. Графические процессоры идеально подходят для параллельных вычислений и значительно ускоряют рабочие нагрузки HPC. Научные и исследовательские усилия, ориентированные на исследования, получают преимущества от GPU.
Для ускорения приложений HPC, таких как NVIDIA CUDA, OpenCL и OpenACC , предоставляют API и библиотеки с поддержкой GPU.
Геномический анализ и биоинформатика
Рабочие нагрузки в области здравоохранения и наук о жизни, такие как анализ генома и биоинформатические приложения, все чаще встречаются. Эти рабочие нагрузки включают обработку генетических данных, таких как последовательности ДНК и структуры белка, и требуют сложных алгоритмов для выравнивания последовательности, вызова вариантов и интеллектуального анализа данных генома. Графические процессоры ускоряют рабочие процессы анализа генома, чтобы исследователи могли обрабатывать данные и быстрее выявлять аналитические сведения.
Прежде чем развертывать узлы GPU в кластерах AKS, рассмотрите последствия затрат. Ознакомьтесь с оптимизацией GPU для задач с большим объемом вычислений, таких как компьютерное зрение, обработка видео, HPC и задачи анализа генома. Учитывайте эти факторы при сравнении ресурсов GPU и ресурсов ЦП в кластерах AKS.
Модели генерного искусственного интеллекта
Крупные языковые модели (LLMs), такие как OpenAI GPT, Meta Llama, Falcon или Mistral, могут воспользоваться преимуществами возможностей параллельной обработки GPU. Используйте графические процессоры с этими моделями для повышения производительности.
Графические процессоры могут ускорить обучение и задачи вывода, которые включают сложные вычисления и большие объемы данных. Gpu имеют возможности параллельной обработки, которые разделяют большие вычислительные задачи заданной модели на небольшие подзадачи, которые выполняются одновременно. Этот процесс обеспечивает быстрые результаты и повышает производительность.
Языковые модели часто имеют сложные нейронные сети с несколькими слоями и параметрами, что может увеличить вычислительный спрос. Графические процессоры ускоряют ключевые операции в обработке языка, такие как умножение матрицы и свертки, что ускоряет обучение и время вывода.
Графические процессоры обеспечивают достаточную емкость памяти, пропускную способность и мощность обработки для обработки приложений на основе LLM, имеющих диалоговые интерфейсы и создание текста. Например, улучшения GPU обеспечивают быстрое время отклика для пользователей, взаимодействующих с чат-ботами и помощниками по искусственному интеллекту.
Не все рабочие нагрузки пользуются узлами агента с поддержкой GPU, и в некоторых случаях ЦП достаточно. Например, рабочие нагрузки, которые являются главным образом входными и выходными или не требуют больших вычислений, могут не улучшиться с gpu.
Истории клиентов
Многие клиенты Майкрософт используют преимущества рабочих нагрузок GPU для инноваций для своих клиентов. Рассмотрим следующие примеры:
Игроки NBA повышают производительность с помощью ИИ в инфраструктуре ИИ Azure.
OriGen ускоряет моделирование энергетических водохранилищ на 1000 раз с помощью инфраструктуры искусственного интеллекта Azure.
Sensyne Health помогает национальному служба работоспособности в борьбе с COVID-19 с помощью технологий Microsoft HPC и ИСКУССТВЕННОГО интеллекта.
Рекомендации по развертыванию рабочей нагрузки GPU
AKS предоставляет различные варианты развертывания пулов узлов и рабочих нагрузок с поддержкой GPU в Linux и Windows. Чтобы обеспечить плавную работу рабочей нагрузки GPU, следуйте этим рекомендациям.
Развертывание рабочей нагрузки Linux
Создайте пул узлов с поддерживаемой виртуальной машиной с поддержкой GPU и вручную установите подключаемый модуль устройства NVIDIA для развертывания пулов узлов Linux с поддержкой GPU. Этот метод не поддерживает обновление существующего пула узлов для добавления gpu.
Просмотр поддерживаемых виртуальных машин с поддержкой GPU в Azure. Рекомендуется использовать минимальный размер Standard_NC6s_v3 для пулов узлов AKS. AKS не поддерживает серии NVv4 на основе GPU AMD.
Ознакомьтесь с ограничениями при использовании пула узлов с поддержкой GPU в Azure Linux. Автоматические исправления безопасности не применяются, а поведение по умолчанию для кластера неуправляемо.
Используйте селекторы узлов Kubernetes, сходство узлов, тональность и терпимость при планировании рабочих нагрузок в пулах узлов с поддержкой GPU.
Развертывание рабочей нагрузки Windows
Создайте пул узлов с поддерживаемой виртуальной машиной с поддержкой GPU для развертывания пулов узлов Windows с поддержкой GPU. AKS автоматически устанавливает драйверы и необходимые компоненты NVIDIA. Этот метод не поддерживает обновление существующего пула узлов для добавления gpu.
При выборе поддерживаемой виртуальной машины с поддержкой GPU AKS автоматически устанавливает соответствующий драйвер NVIDIA CUDA или GRID. Некоторые рабочие нагрузки зависят от конкретного драйвера, который может повлиять на развертывание. Для размеров виртуальных машин серии NC и серии ND AKS устанавливает драйвер CUDA. Для размеров виртуальных машин серии NV AKS устанавливает драйвер GRID.
Просмотр поддерживаемых виртуальных машин с поддержкой GPU в Azure. Рекомендуется использовать минимальный размер Standard_NC6s_v3 для пулов узлов AKS. AKS не поддерживает серии NVv4 на основе GPU AMD.
Ознакомьтесь с ограничениями при использовании пула узлов Windows. Kubernetes версии 1.28 и ниже не поддерживают графические процессоры Windows.
Используйте селекторы узлов Kubernetes, сходство узлов, тональность и терпимость при планировании рабочих нагрузок в пулах узлов с поддержкой GPU.
Примечание.
Gpu Windows — это предварительная версия функции. Необходимо зарегистрировать WindowsGPUPreview
флаг компонента.
Оператор GPU NVIDIA
Оператор GPU NVIDIA — это средство, которое можно использовать для эффективного развертывания ресурсов GPU и управления ими в кластерах Kubernetes. Оператор можно использовать для автоматизации установки, настройки и обслуживания компонентов программного обеспечения. Этот подход обеспечивает оптимальное использование GPU NVIDIA для требовательных рабочих нагрузок, таких как ИИ и рабочие нагрузки машинного обучения.
Оператор GPU NVIDIA автоматически управляет всеми программными компонентами NVIDIA, которые требуется развернуть gpu, например подключаемый модуль устройства NVIDIA для Kubernetes и среду выполнения контейнера NVIDIA. Оператор автоматически устанавливает драйвер. Дополнительные сведения см. в обзоре NVIDIA.
Если вы хотите увеличить контроль и гибкость для расширенных рабочих нагрузок GPU, вы можете использовать оператор GPU NVIDIA с узлами с поддержкой GPU в AKS. Оператор GPU NVIDIA не поддерживает графические процессоры Windows.
Учитывайте приведенные ниже рекомендации.
Используйте оператор GPU NVIDIA для выполнения расширенных конфигураций GPU, таких как выбор версии драйвера и срез времени.
Перед использованием оператора GPU пропустите автоматическую установку драйвера.
Установите минимальное число 1 при использовании оператора GPU с автомасштабированием кластера.
Примечание.
Корпорация Майкрософт не поддерживает или не управляет обслуживанием и совместимостью драйверов NVIDIA в рамках развертывания образа узла при использовании оператора GPU.
Развертывание рабочей нагрузки GPU для LLM
Оператор цепочки инструментов ИИ Kubernetes (KAITO) — это оператор Kubernetes, который упрощает запуск виртуальных машин с открытым исходным кодом, таких как Falcon и Llama2, в кластере Kubernetes. Вы можете развернуть KAITO в кластере AKS в качестве управляемой надстройки для AKS. KaITO использует Karpenter для автоматической подготовки и развертывания узлов GPU на основе спецификации в пользовательском определении ресурсов рабочей области выбранной модели. KAITO создает сервер вывода в качестве конечной точки для LLM и сокращает общее время подключения, чтобы можно было выполнять операции машинного обучения, а не настройки инфраструктуры и обслуживания.
Чтобы улучшить операции машинного обучения, KAITO предоставляет следующие возможности:
Управление образами контейнеров. Используйте образы контейнеров для управления LLM. KAITO предоставляет HTTP-сервер, чтобы использовать поддерживаемую библиотеку моделей для выполнения вызовов вывода.
Конфигурация оборудования GPU: KAITO предоставляет предустановленные конфигурации, которые автоматически применяются в соответствии с требованиями модели. Вам не нужно вручную настраивать параметры развертывания в соответствии с оборудованием GPU.
Автоматическая подготовка узлов GPU: KAITO автоматически подготавливает узлы GPU на основе требований к модели и рекомендует более экономичные размеры виртуальных машин GPU для настройки распределенного вывода.
Интеграция с Реестр артефактов Microsoft. Если лицензия LLM разрешена, KAITO может размещать образы моделей в общедоступном реестре артефактов. Этот метод упрощает доступ к поддерживаемым моделям и развертывает их. Для моделей с открытым кодом с лицензиями MIT или Apache2, которые репозиторий KAITO не поддерживает, можно отправить запрос на подключение новой модели.
Дополнительные сведения о KAITO см. в следующих ресурсах:
- Изучение проекта с открытым исходным кодом KAITO
- Развертывание модели ИИ в AKS с помощью KAITO
- Настройка языковых моделей с открытым исходным кодом KAITO
- Развертывание KAITO в AKS с помощью Terraform
Масштабирование рабочей нагрузки и кластера
Для сценариев искусственного интеллекта и машинного обучения необходимо различать рабочие нагрузки обучения и вывод с предварительно обученными моделями. Чтобы создать и обучить модель машинного обучения, рассмотрите возможность использования вычислений GPU, предназначенных для глубокого обучения и параллелизации вычислений ИИ. Для обучения часто требуется постепенное масштабирование и распределение больших объемов данных в GPU для обеспечения высокой точности с параллелизмом данных.
Сегментирование моделей — это распространенный расширенный метод, который можно использовать для разделения этапов обучения модели. Вы можете назначать графические процессоры отдельным задачам и максимизировать их использование. Графические процессоры могут масштабировать и масштабировать рабочие нагрузки HPC, такие как виртуальные машины серии NV или серии ND в Azure. Эта возможность помогает поддерживать высокий уровень использования ресурсов и уменьшать вмешательство пользователей для процессов обучения машинного обучения, которые являются длительными и дорогостоящими.
Кроме того, можно использовать предварительно обученные модели ИИ с открытым исходным кодом и модели машинного обучения только для вывода. Начало работы с популярными моделями, такими как Llama, Falcon или Mistral, как более быстрый и более экономичный вариант по сравнению с строительством и обучением LLM с нуля. Дополнительные сведения см. в разделе "Языковые модели" в AKS.
При использовании предварительно обученных моделей для вывода может возникнуть динамический и изменяющийся объем ресурсов в зависимости от объема обрабатываемых данных. При выполнении динамических данных через выбранную модель пики трафика иногда возникают в зависимости от размера и требований модели. Необходимо поддерживать приемлемый, низкий уровень задержки во время процесса вывода. Чтобы эффективно использовать графические процессоры для высокой производительности и низкой задержки, можно проводить распределенное вывод с моделями, поддерживаемыми KAITO. Этот подход расширяет возможности вычислений, чтобы включить более низкий номер SKU GPU с одним или двумя gpu каждый, обеспечивает высокий уровень доступности в регионах Azure и снижает затраты на обслуживание.
Управление затратами на рабочую нагрузку GPU
Графические процессоры могут увеличить затраты. Правильно отслеживайте рабочие нагрузки, чтобы понять, какие расходы на GPU требуется, и определить возможности оптимизации. Чтобы повысить видимость затрат, можно использовать надстройку анализа затрат AKS.
В следующих сценариях можно воспользоваться видимостью затрат.
Стоимость размера виртуальной машины с поддержкой GPU
Выберите нужный размер виртуальной машины с поддержкой GPU, чтобы оптимизировать затраты на выполнение GPU. Ежедневные затраты могут отличаться в зависимости от выбранного размера виртуальной машины. Затратные графические процессоры A100. Их следует избегать, если рабочая нагрузка не имеет конкретных требований. Анализ затрат AKS показывает ежедневные затраты для каждой виртуальной машины и разбивает связанные затраты на каждую рабочую нагрузку, которая выполняется на виртуальной машине с поддержкой GPU. Используйте эти данные для оценки правильного размера виртуальной машины или если вам нужен более экономичный вариант.
Затраты на простой
После создания пула узлов с поддержкой GPU затраты на ресурс Azure, даже если вы не запускаете рабочую нагрузку GPU. Затраты на простой представляют стоимость доступной емкости ресурсов, которую рабочие нагрузки не используют. Эта стоимость быстро увеличивается, если у вас есть несколько неиспользуемых узлов. Чтобы избежать высоких затрат на простой, создайте только пулы узлов при выполнении рабочей нагрузки и используйте такие методы, как функция остановки кластера, если вы не запускаете рабочую нагрузку. Анализ затрат AKS показывает затраты на простой для каждого узла.
Перепроизбытка и недоиспользование
Перепроизбытка заключается в том, что при выделении дополнительных ресурсов, чем необходимо для модуля pod. Чрезмерное выделение приводит к потере ресурсов и недостаточному использованию. Избыточные ресурсы остаются зарезервированными для узла, даже если они не используются. Чтобы уменьшить избыточное развертывание, используйте средство автомасштабирования вертикального модуля pod, чтобы задать точные запросы и ограничения на основе предыдущих шаблонов использования.
Недостаточное использование может возникать, если рабочие нагрузки не используют графические процессоры полностью. Рассмотрите дополнительные методы общего доступа к GPU и секционирования. Вместо использования нескольких узлов можно использовать один узел с секционированием для максимально эффективного использования GPU. Эти методы помогут выделить соответствующее количество ускорения GPU для каждой рабочей нагрузки, что может повысить использование и снизить эксплуатационные затраты на развертывание.
Развертывания рабочих нагрузок GPU Linux в AKS поддерживают gpu с несколькими экземплярами. Используйте эту функцию для секционирования GPU NVIDIA A100 на до семи независимых экземпляров. Каждый экземпляр имеет собственную память и мультипроцессор потоковой передачи.
NVIDIA поддерживает другие методы секционирования, такие как срез времени и реализация многопроцессной службы. Чтобы вручную применить эти конфигурации, используйте оператор GPU NVIDIA.
Для расширенных сценариев можно улучшить упаковку корзин ресурсов на узлах. Можно задать конфигурации планировщика и запустить второй планировщик. Настройте и сохраните вторичный планировщик для использования стратегий размещения рабочих нагрузок, отличающихся от планировщика AKS по умолчанию. Дополнительные сведения см. в разделе "Настройка нескольких планировщиков" в Kubernetes.
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Автор субъекта:
- Ayobami Ayodeji | Старший менеджер по программам
Другие участники:
- Стив Бьюкенан | Главный диспетчер программ
- Саи Десай | Product Manager
- Ally Ford | Product Manager 2
- Паоло Сальватори | Инженер основной службы
- Эрин Шаффер | Разработчик содержимого 2
Чтобы просмотреть неопубликованные профили LinkedIn, войдите в LinkedIn.
Следующие шаги
- Внедрение собственных моделей ИИ в интеллектуальные приложения в AKS с помощью KAITO
- Развертывание модели ИИ в AKS с помощью KAITO
- Развертывание приложения, использующего OpenAI в AKS
- Развертывание KAITO в AKS с помощью Terraform
- Развертывание расширения Машинное обучение Azure в кластерах Kubernetes с поддержкой AKS или Azure Arc
- Сведения о каталоге моделей и коллекциях в Azure
- Использование GPU для пулов узлов Windows в AKS
- Использование GPU в AKS