На предыдущую страницу
Блог

PCIe Passthrough vs MIG vs vGPU: где теряются проценты производительности GPU

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

PCIe Passthrough: прямой доступ к GPU

PCIe Passthrough — это режим, при котором физический GPU напрямую подключается к одной виртуальной машине (ВМ) как PCIe-устройство. Этот режим опирается на аппаратную поддержку виртуализации ввода-вывода на хосте (Intel VT-d или AMD-Vi). Гипервизор только закрепляет ускоритель за ВМ, а работой GPU управляет драйвер NVIDIA внутри нее. При этом процессор, оперативная память, шина PCIe и сеть хоста остаются общими с другими ВМ.

За прямой доступ к GPU приходится платить частью функций виртуализации. Гипервизор не управляет ускорителем, поэтому не может сохранить содержимое его видеопамяти и выполняемые задачи. По этой причине ВМ с PCIe Passthrough нельзя приостановить с сохранением состояния, сделать ее снапшот или выполнить живую миграцию, то есть перенести на другой сервер, не прерывая работу. Эти ограничения указаны, например, в документации VMware vSphere.

MIG: аппаратное разделение ускорителя

MIG (Multi-Instance GPU) — это технология NVIDIA, которая делит физический GPU на изолированные инстансы. Каждый из них получает фиксированную долю вычислительных ресурсов, видеопамяти и кэша. Размер и количество экземпляров определяются MIG-профилями конкретного ускорителя. Такой подход используют в сценариях, где важны изоляция и предсказуемая производительность.

Аппаратное разделение доступно на ускорителях NVIDIA, включая A100/A800, H200 и RTX PRO 6000 Blackwell Server Edition.

Time-sliced vGPU и MIG-backed vGPU: режимы NVIDIA vGPU

Time-sliced vGPU — это режим, при котором каждая ВМ получает выделенный объем видеопамяти, а вычислительные ресурсы карты использует поочередно, в пределах квантов времени. Кванты распределяет планировщик vGPU по одной из трех политик:

Best Effort (режим по умолчанию): если ВМ в данный момент не нагружает GPU, ее квант передается соседним ВМ, поэтому производительность меняется вместе с их нагрузкой;

Equal Share: циклы ускорителя делятся поровну между запущенными ВМ независимо от их нагрузки, и доля каждой уменьшается при запуске новых ВМ;

Fixed Share: каждой ВМ выделяется фиксированная доля времени GPU. Она не увеличивается даже при простое соседних ВМ.

MIG-backed vGPU — это режим, при котором vGPU создается на базе MIG-партиции. Если она целиком выделена одной vGPU, виртуальная машина получает эксклюзивный доступ к ее вычислительным ресурсам и не делит их по времени с другими vGPU. На RTX PRO 6000 Blackwell Server Edition в одной такой части GPU можно разместить до трех time-sliced vGPU по 8 ГБ. Они получают кванты времени инстанса по тем же политикам. Профиль на 24 ГБ занимает такой инстанс целиком.

Источники потерь: гипервизор и разделение ускорителя

Основные причины снижения производительности ВМ с GPU — накладные расходы виртуализации и конкуренция нескольких ВМ за ресурсы одного ускорителя. Конкуренция возникает при разделении GPU. Дополнительно на результат могут влиять общие ресурсы хоста и самого ускорителя, например CPU, PCIe и общий лимит мощности GPU.

Накладные расходы гипервизора (оверхед)

В большинстве конфигураций производительность ВМ с целым ускорителем ниже, чем у физического сервера с тем же GPU. Сами вычисления на GPU идут без участия гипервизора, а потери набираются на CPU-части пайплайна и на обращениях к устройству. Внутренние замеры ITGLOBAL.COM показывают, что на вычислительных нагрузках накладные расходы составляют 3–7%. Для инференса такие потери обычно допустимы. При многодневном обучении они пересчитываются в дополнительные GPU-часы и сдвиг сроков проекта.

Разделение ускорителя: тест Colfax Research

Разницу между режимами vGPU измерили исследователи Colfax Research в мае 2024 года на NVIDIA A30. Ускоритель разделили на четыре vGPU, сначала в режиме time-sliced, затем в режиме MIG-backed. В каждом режиме измерили производительность одной ВМ на умножении матриц (GEMM), базовой операции нейросетей.

Замер провели на двух задачах. Небольшая — умножение двух матриц размером 1024 × 1024 (не загружает ускоритель полностью). Крупная — умножение матриц 8192 × 16 400 и 16 400 × 8192 (загружает весь ускоритель). Каждую задачу запускали дважды: при простое соседей и при работе всех четырех ВМ.

Режим и задача Соседи простаивают, GFLOP/s Все соседи активны, GFLOP/s
Time-sliced vGPU, небольшая задача 6680 1410
MIG-backed vGPU, небольшая задача 6550 6550
Time-sliced vGPU, крупная задача 68 800 14 500
MIG-backed vGPU, крупная задача 16 000 15 300

При простое соседей ВМ в режиме time-sliced vGPU получила доступ практически ко всему вычислительному ресурсу ускорителя. Когда заработали все четыре ВМ, производительность упала в 4,7 раза. При этом клиент не видит нагрузку соседей и не может на нее повлиять, поэтому скорость его задачи становится непредсказуемой.

В режиме MIG-backed vGPU производительность на небольшой задаче не изменилась: соседние инстансы не отнимают у ВМ вычислительные ресурсы.

Профили vGPU: одинаковый объем, разная производительность

Одинаковый объем видеопамяти не гарантирует одинаковой производительности. В тесте Colfax два профиля A30 по 6 ГБ при загруженных соседях различались по производительности на небольшой задаче в 4,6 раза: MIG-backed профиль A30-1-6C сохранил скорость, а time-sliced профиль A30-6C ее потерял.

Дело в том, что профиль vGPU задает больше, чем объем памяти. Это готовая конфигурация, которая определяет объем видеопамяти ВМ и режим разделения ускорителя. При аренде ВМ с vGPU клиент выбирает именно профиль. Объем виден в названии сразу, а режим обозначен его служебной частью. Например, у RTX PRO 6000 Blackwell Server Edition профиль DC-24C на 24 ГБ относится к time-sliced vGPU, а DC-1-24C с тем же объемом соответствует аппаратно закрепленной четверти ускорителя.

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

Где теряет MIG: размер инстанса

MIG-backed vGPU ограничена ресурсами своего MIG-инстанса: ВМ не может использовать свободные вычислительные ресурсы соседних инстансов. Поэтому на нагрузках, способных загрузить весь GPU, производительность упирается в размер выделенной части ускорителя.

Пока соседи простаивают, time-sliced vGPU занимает весь GPU и выполняет крупную задачу примерно в четыре раза быстрее MIG-инстанса, которому доступна четверть ускорителя. Когда соседи активны, time-sliced vGPU тоже получает около четверти квантов времени, и результаты режимов становятся близкими. MIG-backed vGPU в этом случае теряет около 5% из-за общего лимита мощности ускорителя.

Размер матриц в операциях слоя зависит от размера батча, то есть от числа примеров, которые обрабатываются за один проход. Инференс в реальном времени часто обрабатывает запросы малыми батчами, и такие задачи не загружают ускоритель полностью. Обучение обычно идет крупными батчами. Поэтому MIG-backed vGPU подходит для инференса, а на обучении ограничением становится размер инстанса.

Измерение потерь: инструменты и метрики

Провайдер не всегда раскрывает режим разделения GPU. Его влияние на производительность можно оценить на арендованной ВМ с помощью инструментов командной строки:

Профайлер CUTLASS повторяет замер Colfax: измеряет производительность GEMM на одной vGPU. Поставляется отдельным репозиторием NVIDIA. Для измерения пропускной способности PCIe и видеопамяти использовался bandwidthTest из CUDA Samples; сейчас NVIDIA рекомендует для таких замеров NVBandwidth.

Тесты NCCL на ВМ с несколькими ускорителями измеряют производительность коллективных операций, прежде всего all-reduce, широко используемой при распределенном обучении. Сравнение с физическим сервером той же топологии позволяет оценить накладные расходы, связанные с виртуализацией.

CUDA-профилирование (Nsight Systems и CUPTI) позволяет анализировать выполнение CPU- и GPU-операций и искать дополнительные задержки. На NVIDIA vGPU по умолчанию доступна только трассировка GPU-нагрузки; дополнительные возможности CUDA-профилирования необходимо отдельно включать. Профайлеры можно использовать только на одной ВМ одновременно на физическом GPU.

P2P-микробенчмарки измеряют обмен между парами ускорителей: пропускную способность и задержку. Для таких замеров можно использовать NVBandwidth. В NVIDIA vGPU прямой P2P-обмен поддерживается только для отдельных time-sliced профилей через NVLink; для MIG-backed vGPU и через PCIe он не поддерживается.

Механизм Поведение под нагрузкой Чем измерить Что покажет замер
PCIe Passthrough Планировщика нет, общими остаются CPU, PCIe и сеть Тесты NCCL, тест P2P Базовый уровень для сравнения
MIG Производительность стабильна, ограничен объем ресурсов инстанса CUTLASS, NVBandwidth Производительность в пределах выделенного MIG-инстанса
MIG-backed vGPU То же при одной vGPU на инстанс. При нескольких добавляется ожидание квантов внутри инстанса CUTLASS, NVBandwidth Стабильность производительности выделенного профиля
Time-sliced vGPU Ожидание кванта времени, растет с числом активных соседних ВМ Повторный тест в разное время суток Зависимость производительности от планировщика и активности соседних ВМ

Выбор режима под тип нагрузки

Режим доступа к GPU выбирается по типу нагрузки и требованиям к предсказуемости сроков.

Длительное обучение. Прогон крупной модели длится часами, и на крупных матрицах производительность MIG-инстанса ограничена его ресурсами. Для таких задач подходят PCIe Passthrough или выделенный сервер.

Нагрузки, чувствительные к накладным расходам гипервизора. По опыту команды ITGLOBAL.COM, к ним относятся:

  • инференс в реальном времени с целевой задержкой ответа менее 10 мс, где критичны отдельные задержки запросов;
  • задачи, чувствительные ко времени ответа: гипервизор может кратковременно задержать виртуальный процессор, и длительность такой паузы непредсказуема.

Для этих нагрузок подходит выделенный сервер.

Плотный инференс. Поток мелких независимых запросов выигрывает от аппаратной изоляции MIG. На RTX PRO 6000 Blackwell Server Edition аппаратно выделенные ресурсы получают до четырех ВМ с профилем на 24 ГБ. Размещение двенадцати ВМ допустимо на профилях по 8 ГБ, но тогда три ВМ внутри каждого инстанса используют его поочередно.

Стоимость при высокой утилизации. По расчетам ITGLOBAL.COM, при постоянно высокой загрузке выделенный сервер может обходиться дешевле GPU Cloud, и его стоимость предсказуема.

GPU-инфраструктура ITGLOBAL.COM

ITGLOBAL.COM предоставляет в аренду GPU-инфраструктуру с флагманскими ускорителями NVIDIA H200 и RTX PRO 6000 Blackwell Server Edition, а также с A800. Серверы размещаются в дата-центрах семи стран, в том числе в Москве, Минске, Алматы, Ташкенте и Дубае.

Доступные модели услуг:

GPU Cloud — виртуальные машины с GPU. Ускоритель предоставляется через PCIe Passthrough или NVIDIA vGPU.

Выделенные серверы с GPU — физический сервер целиком в распоряжении одного клиента.

Кластер на базе NVIDIA SuperPOD — узлы с 8 × H200 и сетью InfiniBand для распределенного обучения.

Заключение

Влияние виртуализации на производительность зависит от способа предоставления GPU. По внутренним замерам ITGLOBAL.COM, накладные расходы виртуализации на вычислительных нагрузках составляют 3–7%. В эксперименте Colfax Research на NVIDIA A30 при time-slicing производительность небольшой GEMM при одновременной работе четырех ВМ снизилась в 4,7 раза.

FAQ

Сколько производительности теряет GPU в режиме PCIe Passthrough?

По опыту команды ITGLOBAL.COM, на вычислительных нагрузках ВМ с PCIe Passthrough уступает физическому серверу на 3–7%. Ускоритель при этом не делится с другими ВМ, и потери связаны с работой гипервизора.

Почему производительность ВМ с time-sliced vGPU меняется в течение дня?

При политике Best Effort GPU поочередно предоставляет вычислительные ресурсы виртуальным машинам. Если соседние ВМ не используют свою долю GPU, активная vGPU может получить больше вычислительных циклов. Поэтому ее производительность зависит от текущей нагрузки соседей. В тесте Colfax Research при одновременной работе четырех ВМ производительность снизилась в 4,7 раза.

Чем MIG-backed vGPU отличается от time-sliced vGPU с тем же объемом видеопамяти?

MIG-backed vGPU получает аппаратно выделенную часть ускорителя с собственными вычислительными блоками. В тесте Colfax нагрузка соседей снижала ее производительность не более чем на 5%. Time-sliced vGPU использует все вычислительные блоки по очереди с другими ВМ, и ее производительность зависит от их загрузки.

Какой режим доступа к GPU выбрать для обучения и для инференса?

Для длительного обучения подходят PCIe Passthrough или выделенный сервер: ускоритель не делится, а потери ограничены накладными расходами гипервизора либо отсутствуют. Для плотного инференса мелкими запросами подходит MIG-backed vGPU: производительность каждой ВМ не зависит от соседей, если на инстансе одна vGPU.

Оцените данную статью

Узнавайте о выходе новых статей в блоге первыми!

Подпишитесь на нашу рассылку