CUDA 13.4 GPU бөлісу үшін жадты басқаруды ұсынады
CUDA 13.4 Kubernetes жүйесінде GPU бөлісу үшін жадты басқаруды ұсынады.
- 01.CUDA 13.4 Kubernetes жүйесінде GPU бөлісу үшін жадты басқаруды ұсынады.
Как сообщает NVIDIA Developer, многие рабочие нагрузки в области искусственного интеллекта требуют лишь небольшой доли вычислительных ресурсов графического процессора (GPU). Предоставление каждому рабочему процессу целого устройства может оставить часть его мощности неиспользованной; совместное использование GPU позволяет командам платформ обслуживать больше рабочих нагрузок с уже имеющейся инфраструктурой. Графические процессоры NVIDIA уже поддерживают несколько подходов к совместному использованию. Многоинстансный GPU (MIG) делит GPU на аппаратно изолированные экземпляры, которые прозрачны для приложения, тайм-резервирование позволяет нескольким процессам поочередно использовать GPU без контроля памяти, а служба многопроцессорного обслуживания (MPS) позволяет им работать одновременно в отдельных адресных пространствах (sm-sharing). С выходом CUDA 13.4 теперь обеспечивается контроль памяти, который прозрачен для приложения с новым режимом тайм-резервирования, наряду с уже существующим режимом вычислений (sm-sharing) в MPS. Вот что приносит релиз CUDA: точное количество памяти: рабочая нагрузка запрашивает размер памяти, и CUDA удерживает его на этом уровне. Если выделение превышает этот размер, оно завершается неудачей, как и на меньшем GPU. Диапазон: рабочая нагрузка получает гарантированный минимум и максимум, до которого она может вырасти, когда память свободна. Режим вычислений: каждая рабочая нагрузка может выбирать использовать свои вычисления в режиме sm-sharing, а не в режиме тайм-резервирования по умолчанию. Прозрачный предел памяти: каждая рабочая нагрузка видит только часть памяти GPU. Однако для использования этих возможностей в кластере Kubernetes необходимо дополнительное программное обеспечение. На каждом узле GPU нужно запустить и контролировать демоны, от которых зависят эти функции, установить ограничения памяти и режим вычислений для каждого контейнера Pod до начала процесса, а также сообщать, сколько ресурсов на самом деле использует каждая доля, а не весь GPU. Эта работа должна выполняться на узле, независимо от того, какой планировщик разместил рабочую нагрузку. Для этого был создан новый оператор Kubernetes с открытым исходным кодом, gpu-fractioning, который размещен в организации KAI Scheduler на GitHub. Он работает рядом с NVIDIA GPU Operator, который предоставляет драйвер и настройки контейнерного времени выполнения. Оператор GPU Fractioning выполняет три задачи: настраивает и запускает MPS на каждом узле GPU, применяет ограничения памяти и режим вычислений для каждой рабочей нагрузки, измеряет использование памяти и вычислений на долю, а не на весь GPU. Разработчики записывают аннотации ресурсов и режимов в YAML-файле pod. Затем планировщик выбирает GPU для рабочей нагрузки и записывает его выделение памяти и режим совместного использования вычислений в аннотациях Pod для каждого контейнера. Оператор GPU Fractioning считывает эти аннотации и настраивает назначенные GPU, чтобы применить ограничения памяти и режим вычислений рабочей нагрузки. Любой планировщик Kubernetes, который может записывать эти аннотации, может обеспечить доли GPU с CUDA. KAI Scheduler является первым планировщиком, интегрированным с gpu-fractioning. Начиная с версии 0.18.0, KAI Scheduler имеет режим совместного использования GPU под названием NvFractions. KAI Scheduler выбирает, какую долю какого GPU получит каждая рабочая нагрузка, и записывает аннотации. Другие режимы совместного использования KAI Scheduler остаются доступными, и администраторы могут выбирать один для кластера. Это можно включить при установке KAI: helm upgrade -i kai-scheduler oci://ghcr.io/kai-scheduler/kai-scheduler/kai-scheduler -n kai-scheduler --create-namespace --set global.nvFractions.set=true. Теперь вы можете описать долевую рабочую нагрузку с помощью аннотаций Pod. Существует четыре важных аннотации, которые отвечают на четыре вопроса: сколько памяти нужно, насколько далеко может вырасти рабочая нагрузка, как делятся вычисления и сколько GPU используется. Запрос памяти можно сделать двумя способами: как абсолютный размер, используя аннотацию NVIDIA для каждого контейнера и стандартные единицы Kubernetes, или как долю GPU, используя существующую аннотацию KAI Scheduler: gpu-fraction: "0.5". Эта возможность нова в KAI Scheduler. Рабочая нагрузка может объявить гарантированный минимум (запрос) и максимум, до которого она может увеличиться, когда память свободна. Какой аннотацией вы воспользуетесь, зависит от того, как вы написали запрос. Ограничение является необязательным. Если оно опущено, лимит равен запросу, и рабочая нагрузка ограничивается точно тем, что она запросила. Ограничение доли должно быть больше, чем gpu-fraction, и меньше 1. Вычисления теперь могут делиться. Если n — количество рабочих нагрузок, использующих один GPU, то каждая получает примерно 1/n вычислительных ресурсов, и различие заключается в том, берут ли они по очереди или работают вместе. Тайм-резервирование является последовательным: рабочие нагрузки по очереди используют весь GPU, и когда каждая из них использует свою полную долю, каждая получает около 1/n времени. Время, оставшееся неиспользованным одной рабочей нагрузкой, делится поровну между другими. Это режим по умолчанию. Каждая рабочая нагрузка работает в своей собственной области ошибок, т.е. полная изоляция ошибок. SM-sharing является параллельным: стриминговые мультипроцессоры (SM) GPU делятся между рабочими нагрузками и все работают одновременно, непрерывно. Ничего заранее не выделяется. Аппаратное обеспечение GPU выделяет и освобождает SM по мере необходимости. Когда каждая рабочая нагрузка занята, разделение устанавливается примерно на 1/n; когда одна становится неактивной, ее SM переходят к другим, и одна активная рабочая нагрузка может использовать все SM. В этом режиме рабочие нагрузки делят одну область ошибок. Режим вычислений теперь явный и может быть установлен для каждого контейнера: nvidia.com/container.app.gpu-compute.mode: "sm-sharing" или "time-slicing". Совместно используемый GPU работает в одном режиме вычислений за раз, поэтому KAI Scheduler никогда не размещает рабочую нагрузку в режиме тайм-резервирования и рабочую нагрузку в режиме sm-sharing на одном GPU. KAI Scheduler отслеживает это для каждого GPU, а не для каждого узла, поэтому один узел может размещать оба режима на разных GPU. Чтобы получить долевую мощность на нескольких устройствах, добавьте: gpu-fraction-num-devices: "4". Запрос применяется к каждому устройству. Запрос в 40Gi с четырьмя устройствами получает 40Gi на каждом из четырех GPU. Операторы KAI Scheduler и GPU Fractioning доступны на GitHub с инструкциями по установке и настройке для всех трех механизмов совместного использования. Присоединяйтесь к каналу Slack или участвуйте в двухнедельных встречах сообщества, чтобы задать свои вопросы и внести свой вклад. Для получения дополнительной информации о CUDA 13.4 смотрите анонс. Материал подготовлен нейросетью на основе оригинальной публикации. ИИ может ошибаться в деталях (цифры, имена, даты, цитаты) — для важной информации сверяйтесь с первоисточником.
Байланысты материалдар
Барлығы →Деректер орталығының бумының жақсы жағы бар: АҚШ желісі үшін инновация
Жасанды инсайдерлік серпіліс қолданыстағы электр желісіне баса назар аударатындықтан, желіні жаңғыртудың барлық жаңа мүмкіндіктері де пайда болады, дейді сала мамандары.
Nvidia және Oracle Vera Rubin бизнес бұлтты инфрақұрылымын кеңейтеді
Nvidia және Oracle бизнеске арналған Вера Рубиннің бұлттық инфрақұрылымын кеңейту туралы хабарлады.
Liquid AI представляет модели LFM3 для автоматизации бизнес-процессов
Liquid AI анонсировала LFM3 — компактные модели ИИ для бизнеса.