Использование многоэкземплярного графического процессора (MIG/Multi-Instance GPU) позволяет разделить мощную видеокарту на более мелкие части, каждая из которых выполняет свою собственную задачу, так что одна видеокарта может одновременно выполнять разные задачи. В этой статье мы кратко представим его и приведем примеры установки и использования.
Технология NVIDIA Multi-Instance GPU (MIG) — это технология виртуализации графического процессора, запущенная NVIDIA, которая позволяет разделить физический графический процессор на несколько независимых экземпляров графического процессора, и каждый экземпляр может быть назначен различным виртуальным машинам, контейнерам или пользователям. Эта технология помогает более эффективно использовать ресурсы графического процессора, а также улучшает совместное использование графического процессора и поддержку нескольких клиентов.
Технология MIG обычно требует аппаратной и программной поддержки, включая графический процессор NVIDIA с поддержкой MIG и соответствующие драйверы. Это делает технологию MIG мощным инструментом для лучшего управления ресурсами графического процессора в центрах обработки данных и средах облачных вычислений. Это помогает улучшить использование графического процессора, снизить затраты и лучше удовлетворить потребности различных приложений и пользователей.
MIG работает путем виртуального разделения одного физического графического процессора на более мелкие независимые экземпляры. Эта технология включает в себя виртуализацию графического процессора, при которой ресурсы графического процессора, включая ядра CUDA и память, распределяются между различными экземплярами. Эти экземпляры изолированы друг от друга, что гарантирует, что задачи, выполняемые на одном экземпляре, не мешают работе других экземпляров.
MIG поддерживает динамическое распределение ресурсов графического процессора, позволяя динамически изменять размер экземпляров в зависимости от потребностей рабочей нагрузки. Такое динамическое распределение помогает эффективно использовать ресурсы. Несколько приложений или пользователей могут одновременно работать на одном и том же графическом процессоре, каждое из которых имеет свой собственный выделенный экземпляр. Весь процесс управляется с помощью программного обеспечения, предоставляющего администраторам контроль над конфигурацией экземпляра и распределением ресурсов. Такой подход повышает гибкость, масштабируемость и эффективность использования ресурсов для обработки различных рабочих нагрузок на одном графическом процессоре.
Не все видеокарты поддерживают MIG. Ниже приведены официальные модели графических процессоров:
Как видите, в основном можно использовать A100 и H100. Хотя оба имеют 24 ГБ видеопамяти, потребительский уровень 4090 не поддерживается.
Тогда есть водитель
Вы можете использовать его после выполнения этих требований.
Установить Nvidia SMI (здесь в качестве примера используется система Ubuntu) очень просто: просто установите пакет инструментов, предоставленный nvidia.
sudo apt-get install nvidia-utils
Следующий шаг — проверка драйвера Nvidia.
nvidia-smi
Если проблем нет, установка завершена. Ниже приведены команды настройки:
sudo nvidia-smi -i <GPU_ID> --mig on
Идентификатор графического процессора включен в результаты nvidia-smi.
Проверьте конфигурацию MIG (для следующего шага необходимы идентификатор графического процессора и идентификатор экземпляра)
nvidia-smi mig -lgip
После успешной проверки это означает, что наш МИГ доступен нормально, и мы можем приступить к созданию виртуального графического процессора.
Мы разделяем один графический процессор (аппаратное обеспечение) на несколько независимых экземпляров графического процессора, чтобы вручную разделить рабочую нагрузку и снизить затраты на балансировку работы.
sudo nvidia-smi -i <GPU_ID> --mig <INSTANCE_COUNT>
-i <GPU_ID>:Укажите для использованияизGPUоборудование。Воля<GPU_ID>Заменить по необходимости КонфигурацияизGPUиздействительныйID。
-mig <INSTANCE_COUNT>:используется для Конфигурацияmig (Multi-Instance GPU)。Воля<INSTANCE_COUNT>Замените на желаемыйGPUСозданоизнеобходимыйGPUКоличество экземпляров。Каждый экземпляр имеет свойизнабор ресурсов,Включая память и вычислительную мощность.
Например, наш пример ниже: Создайте 3 экземпляра с идентификатором графического процессора = 0.
sudo nvidia-smi -i 0 --mig 3
Изменить распределение ресурсов (рабочую нагрузку) экземпляра, основная цель — настроить распределение ресурсов для конкретного экземпляра MIG.
sudo nvidia-smi -i <GPU_ID> -gi <INSTANCE_ID> -rg <WORKLOAD_PERCENT>
-i <GPU_ID>:Укажите для выполнения этой операцииизGPU。Например,-i 0 указывает на первый графический процессор.
-gi <INSTANCE_ID>:в определенииGPUвыполнять операции внутриизMIGПример。Например,-gi 1 представляет второй экземпляр MIG на графическом процессоре.
-rg <WORKLOAD_PERCENT>:назначен назначенномуMIGПримеризGPUресурсизпроцент。Воля<WORKLOAD_PERCENT>Заменить нанеобходимыйизпроцент。Например-rg 70 означает выделение 70% ресурсов графического процессора указанному экземпляру MIG.
Настройте рабочую нагрузку, составляющую 70% от общего объема ресурсов графического процессора, для GPU_ID = 0 и MIG Instance = 1.
sudo nvidia-smi -i 0 -gi 1 -rg 70
В большинстве случаев мы будем использовать Docker в качестве рабочей среды, поэтому здесь мы представим Докер и яиз Конфигурация.
Установите NVIDIA Container Toolkit. Это первый шаг к использованию графического процессора в Docker. Мы не будем здесь вдаваться в подробности. Мы установим его напрямую с помощью команды.
sudo apt-get install -y nvidia-container-toolkit
Настройте демон Docker для использования NVIDIA: отредактируйте файл конфигурации демона Docker /etc/docker/daemon.json) и добавьте следующие строки:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
Приведенный выше код является всего лишь примером. Измените его в соответствии с вашей реальной ситуацией. В этой статье не рассказывается, как использовать графический процессор в Docker, поэтому она используется только в качестве простого примера.
Необходимость перезагрузки после настройки
sudo systemctl restart docker
Проверьте доступность графического процессора, чтобы получить информацию о графическом процессоре.
docker run --gpus all nvidia/cuda:11.0-base nvidia-smi
Начнем нашу основную работу, настроим МИГ.
docker run --gpus device=0,1,2,3 -e NVIDIA_VISIBLE_DEVICES=0,1,2,3 my_container
Параметры графического процессора и NVIDIA_VISIBLE_DEVICES можно настроить в зависимости от количества устройств MIG, которые вы хотите использовать. Графический процессор здесь — это графический процессор, который мы виртуализировали с помощью приведенной выше команды.
Благодаря возможности разделения одного графического процессора на более мелкие экземпляры MIG обеспечивает экономичное и масштабируемое решение для одновременной обработки различных рабочих нагрузок. Базовые возможности MIG, включая изоляцию ресурсов и динамическое распределение, повышают гибкость, масштабируемость и общую эффективность использования графических процессоров.
Практические приложения, охватывающие центры обработки данных, научные исследования и разработку искусственного интеллекта, подчеркивают влияние MIG на оптимизацию ресурсов графических процессоров и ускорение вычислительных задач. MIG — хорошая технология, но нынешняя цена видеокарт по-прежнему сдерживает ее популярность. Он не поддерживает видеокарты потребительского уровня. Один А100 — это около 100 000+, а 4 4090 — более 60 000. Не думаю, что кто-то будет делить А100 на 4 части.
Если вас интересует MIG, вот официальная документация:
https://docs.nvidia.com/datacenter/tesla/mig-user-guide/index.html?source=post_page-----9e6cb4087b8d--------------------------------
Автор: Марцин Стаско