Гайды

Выделенный или разделяемый GPU: что меняется при совместном использовании

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

7 мин чтения

Вопрос «выделенный или разделяемый GPU» звучит как деталь ценообразования, но от него зависит, сколько памяти вы сможете занять, насколько стабильной будет задержка, чей код работает рядом с вашими данными и насколько глубоко вы сможете вести отладку. За словом «разделяемый» скрываются очень разные технологии — от аппаратных разделов с надёжной изоляцией до простого разделения по времени (time-slicing) почти без изоляции. В этом руководстве мы разберём каждую из них, что она меняет для задач ИИ и когда совместное использование GPU — вполне хороший выбор.

Выделенный или разделяемый GPU: пять способов разделить GPU

Выделенный GPU — это целая физическая карта, закреплённая за одним клиентом, со всей её памятью, вычислительной мощностью и бюджетом энергопотребления. Всё остальное — та или иная форма разделения:

  • vGPU. ПО NVIDIA для виртуальных GPU позволяет нескольким виртуальным машинам совместно использовать один физический GPU. Каждая ВМ получает фиксированную долю памяти GPU — так называемый профиль, а в распространённом режиме с разделением по времени аппаратные блоки GPU переключаются между ВМ под управлением планировщика. Гостевая система видит GPU меньшего размера.
  • MIG (Multi-Instance GPU). Аппаратная функция старших GPU NVIDIA для дата-центров начиная с A100, например H100 и H200, а также RTX PRO 6000 Blackwell: она делит один GPU на изолированные экземпляры, у каждого из которых своя память, кэш и вычислительные блоки. H100 можно разделить максимум на семь экземпляров, RTX PRO 6000 — максимум на четыре.
  • Разделение по времени. Несколько процессов или контейнеров по очереди используют один GPU — например, когда кластер Kubernetes показывает один GPU как несколько. Каждый видит всю память, но это один пул без ограничений для отдельных арендаторов, и, как отмечает сама документация NVIDIA к этой функции, в отличие от MIG она не изолирует ни память, ни сбои. MPS (Multi-Process Service) позволяет процессам работать одновременно, а не по очереди, но изоляция там так же ограничена.
  • Контейнеры на общих хостах. Вы получаете один или несколько целых GPU, но внутри контейнера на хосте, где работают и контейнеры других клиентов. GPU ваш, а процессоры, оперативная память, диски, сеть, ядро ОС и драйвер — общие.
  • Хосты на маркетплейсах. Независимые операторы выставляют свои машины на маркетплейсе. GPU может быть целым, но качество оборудования, доступность, сеть и физическая безопасность зависят от хоста, а управляет машиной оператор этого хоста.
ВариантДоступная памятьВычислительная мощностьИзоляция от других арендаторовКонтроль над драйвером
Целый GPU, bare metalВсяВсяВся машина вашаПолный
Целый GPU, ВМ с пробросом (passthrough)ВсяВсяГраница ВМ, GPU не разделяетсяПолный, внутри ВМ
Экземпляр MIGФиксированная доляФиксированная доля вычислительных блоковАппаратный разделНет: разделы задаёт хост
vGPU (с разделением по времени)Фиксированная доляРазделяется по времениГраница ВМ, GPU разделяетсяГостевой драйвер привязан к драйверу хоста
Разделение по времени или MPSОдин общий пулПо очереди или одновременноСлабая или отсутствуетНет
Контейнер на общем хостеВся память GPUВесь GPU, но общие CPU и ввод-выводГраница контейнера, общее ядро ОСНет: драйвер хоста

Память: сколько вы реально можете занять

Память — первое, что отнимает разделение, а для LLM (больших языковых моделей) именно она обычно становится главным ограничением. Экземпляр MIG или профиль vGPU даёт фиксированную долю карты: у самого маленького экземпляра MIG на H100 с 80 ГБ — 10 ГБ. Модели 70B в FP8 только под веса нужно около 70 ГБ, поэтому её не вместит никакая доля меньше целой карты, и даже модель 32B в BF16 (около 64 ГБ) не поместится в половину карты.

Разделение по времени на бумаге выглядит лучше: каждый арендатор видит всю память. Но на практике пул достаётся тому, кто успел первым. Многие фреймворки резервируют память заранее: vLLM по умолчанию занимает 90% памяти GPU, а JAX заранее выделяет 75%. Два таких процесса на одном GPU с разделением по времени столкнутся, и из-за того, что память занял сосед, ваша задача может упасть с ошибкой нехватки памяти (out of memory), которая никак не связана с вашим кодом. В нашем руководстве по видеопамяти (VRAM) для LLM показано, сколько памяти нужно распространённым моделям, — так можно быстро понять, подойдёт ли доля GPU в принципе.

Стабильность производительности и шумные соседи

Средние значения скрывают большую часть издержек разделения, а хвостовые задержки их выдают. При разделении по времени каждый арендатор ждёт, пока работает другой, поэтому при двух загруженных арендаторах каждый получает не больше примерно половины времени GPU, а переключения контекста добавляют собственные накладные расходы. Запрос на инференс, пришедший, пока GPU занят соседом, просто ждёт.

MIG гораздо предсказуемее: каждому экземпляру принадлежат свои вычислительные блоки и своя доля пропускной способности памяти. Цена этого — жёсткий потолок: седьмая часть H100 остаётся седьмой частью, даже когда остальная карта простаивает.

У целых GPU на общих хостах проблемы тоньше. Токенизация, загрузка и предобработка данных конкурируют за общие ядра CPU; датасеты и чекпоинты — за общие диски и сеть; GPU за одним коммутатором PCIe — за пропускную способность хоста. Для обучения стабильность важнее, чем кажется: при синхронном обучении с параллелизмом по данным каждый шаг ждёт самый медленный GPU, поэтому один воркер с троттлингом замедляет все остальные.

Изоляция и безопасность

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

  • Контейнеры используют общее ядро хоста. Уязвимость в ядре или драйвере может открыть путь от одного арендатора к другому, поэтому контейнеры считаются более слабой границей, чем виртуальные машины.
  • При разделении по времени все делят одно устройство без изоляции памяти и сбоев, поэтому сбой или некорректно работающий процесс может затронуть всех на этой карте.
  • Хосты на маркетплейсах обслуживают операторы, с которыми у вас нет никакого договора, кроме условий маркетплейса, и у них есть физический и административный доступ к машине, на которой лежат ваши веса и данные.
  • Не забывайте об остаточных данных. Узнайте, что происходит с дисками, когда уходит предыдущий арендатор: стираются ли они и каким образом?

Разделение внутри вашей собственной организации — совсем другая модель доверия. Если вы делите собственный GPU с помощью MIG, чтобы запустить несколько внутренних сервисов, ни один из этих вопросов не возникает: все соседи — это вы сами.

Отладка и наблюдаемость

Когда задача падает посреди ночи, от того, насколько хорошо вы видите систему, зависит, как быстро вы всё исправите. С целым GPU и root-доступом nvidia-smi показывает каждый процесс и каждый байт памяти, профилировщики вроде Nsight Systems и Nsight Compute видят всё устройство, а ошибки GPU (сообщения Xid) попадают в журнал ядра, который вы можете прочитать. Кроме того, вы сами выбираете версии драйвера и CUDA и при этом можете запускать поверх свои контейнеры (см. наше руководство по Docker и контейнерам).

При разделении обзор сужается. В контейнере на общем хосте версию драйвера определяет хост, ваши библиотеки CUDA пользовательского пространства должны оставаться с ней совместимы, а журнал ядра, куда пишутся сбои GPU, часто недоступен. На vGPU инструменты профилирования обычно отключены, если их не включил хост. На GPU с разделением по времени показатели загрузки смешивают вашу работу с работой соседей, поэтому медленный прогон может объясняться как вашим кодом, так и чужой задачей, — и вы не сможете понять, чем именно. По той же причине страдает воспроизводимость. О мониторинге выделенной карты — в нашем руководстве по мониторингу GPU.

Когда разделение вполне допустимо

Разделение — это компромисс, и часто правильный:

  • Интерактивные ноутбуки и прототипирование на небольших моделях, где доли в 10–20 ГБ хватает с избытком, а задержка не важна.
  • CI и smoke-тесты, которым GPU нужен на минуты, а не на часы.
  • Преподавание и практикумы, где многим студентам нужно понемногу GPU.
  • Небольшие внутренние сервисы, например модели эмбеддингов или классификации, которые можно компактно разместить на собственном GPU с помощью MIG.
  • Эпизодические пакетные задачи, которым не мешает непостоянная скорость и которые корректно перезапускаются.

Переходите на выделенный GPU, когда вам нужны вся память, стабильная задержка, долгие непрерывные прогоны, быстрая связь между несколькими GPU или чёткий ответ на вопрос, у кого есть доступ к машине. Со следующим шагом — подбором карты по размеру — поможет наше руководство о том, как выбрать GPU-сервер.

Как проверить, что вы арендуете

Что бы ни было написано в описании предложения, несколько команд покажут, что у вас на самом деле:

nvidia-smi -L
nvidia-smi --query-gpu=name,memory.total,memory.used,mig.mode.current \
  --format=csv
nvidia-smi -q | grep -i "virtualization mode"
nvidia-smi topo -m
  • nvidia-smi -L выводит список GPU, а под ними — устройства MIG, если разделение включено.
  • Значение memory.total должно соответствовать объёму всей карты; профиль vGPU покажет лишь его часть. Если memory.used заметно превышает несколько сотен мегабайт ещё до того, как вы что-либо запустили, значит, на GPU работает что-то ещё. mig.mode.current должен показывать «Disabled», а на GPU без MIG — «N/A».
  • Режим виртуализации показывает «None» на bare metal, «Pass-Through» в ВМ, которой принадлежит весь GPU, и «VGPU» в гостевой системе vGPU.
  • nvidia-smi topo -m показывает, как соединены GPU: записи NV означают NVLink, а PIX, PXB, NODE или SYS — пути через PCIe.

Проверьте и сам хост: nproc, free -g и lsblk покажут процессоры, оперативную память и диски, которые вам обещали.

Как это устроено в FullGPU

Мы сдаём в аренду только целые физические GPU, каждый из которых закреплён за одним клиентом: никакой нарезки на vGPU, никаких разделов MIG и никакого разделения по времени.

  • 8-GPU-серверы — это bare metal. Вся машина ваша: GPU, процессоры, оперативная память, NVMe и сетевые адаптеры, без гипервизора посередине.
  • Тарифы с одним GPU — это выделенная ВМ с пробросом всего GPU. Гостевой драйвер работает с физической картой, вся её память принадлежит вам, а граница ВМ изолирует вас от хоста.
  • У вас root-доступ по SSH на образах Ubuntu 22.04 или 24.04 с предустановленными драйверами NVIDIA, CUDA, Docker и NVIDIA Container Toolkit или на образах ROCm для AMD. Версии и инструменты выбираете вы.
  • Диски надёжно стираются при смене клиента (см. удаление данных), а частная сеть между вашими собственными серверами доступна по запросу.

Если вам нужна одна карта, наши серверы с одним GPU — от RTX 5090 с 32 ГБ до B300 с 288 ГБ. Если нужны NVLink и весь хост целиком, наши 8-GPU-серверы — это bare-metal-машины на NVIDIA и AMD.

Выделенная и общая память GPU

У выражения «общая память GPU» есть и второе значение. На ПК Windows показывает выделенную память GPU — видеопамять на самой карте — и общую память GPU — часть системной оперативной памяти, которую GPU может занять, когда видеопамять заканчивается. К заимствованной оперативной памяти GPU обращается через PCIe, в десятки раз медленнее, чем к собственной памяти, поэтому модель, которая частично оказалась в заимствованной памяти, резко замедляется. На сервере правило то же: веса, KV-кэш и активации должны помещаться в видеопамять. Именно поэтому то, какие модели сможет обслуживать сервер, определяет видеопамять, а не системная оперативная память; калькулятор видеопамяти проверит это для вашей модели.

Часто задаваемые вопросы

Чем выделенный GPU отличается от разделяемого?

Выделенный GPU — это целая физическая карта, закреплённая за одним клиентом, со всей её памятью и вычислительной мощностью. Разделяемый GPU делится между арендаторами с помощью профилей vGPU, разделов MIG, разделения по времени или общего хоста, и из-за этого у вас меньше памяти, ниже стабильность производительности или слабее изоляция.

Экземпляр MIG — то же самое, что выделенный GPU?

Нет. Экземпляр MIG — аппаратно изолированная часть GPU со своей памятью и вычислительными блоками, поэтому это самая надёжная форма разделения, но вы получаете лишь часть GPU: на H100 с 80 ГБ у самого маленького экземпляра 10 ГБ.

Как понять, что мой облачный GPU разделяемый?

Запустите nvidia-smi и проверьте, что полный объём памяти соответствует всей карте, режим MIG выключен, а режим виртуализации — «None» или «Pass-Through», а не «VGPU». Ещё один признак соседа — память, занятая до того, как вы что-либо запустили.

Тарифы FullGPU с одним GPU — это виртуальные машины?

Да. Тариф с одним GPU — это выделенная ВМ с пробросом всего GPU, поэтому GPU и вся его память принадлежат только вам. Наши 8-GPU-серверы — bare-metal-машины.

Когда разделяемого GPU достаточно?

Для интерактивных ноутбуков, небольших моделей, CI-тестов, преподавания и эпизодических задач, которым не мешает непостоянная задержка, доли GPU часто достаточно. Переходите на выделенный GPU, когда вам нужны вся память, стабильная задержка или долгие непрерывные прогоны.

Выделенные GPU с помесячной оплатой

Целые GPU от 449 $ в месяц, root-доступ, трафик включён. Оплата криптовалютой.

Смотреть GPU и цены Подберите GPU с помощью калькулятора видеопамяти

Развернуть GPU-сервер

Получите GPU-сервер уже в этом месяце.

Выберите конфигурацию, создайте аккаунт в той же форме и оплатите первый месяц с баланса. Сервер выдаётся менее чем за 10 минут.

  • Выдача менее чем за 10 минут
  • Отмена в любом месяце
  • Оплата криптовалютой, бонус до +50%

Вход в FullGPU

Управляйте GPU-серверами, балансом и счетами.

Впервые в FullGPU? Создать аккаунт