Найти в Дзене
Борис Державец

Виртуальные машины с графическим ускорением на Proxmox, XCP-ng ? Вот что вам стоит знать

Приобретение Broadcom компании VMware заставило многих искать альтернативы. Двумя крупнейшими бенефициарами повышения цен Broadcom, по крайней мере, в том, что касается бесплатности и открытого исходного кода, стали гипервизоры Proxmox VE и XCP-ng. В то же время интерес к корпоративному ИИ возрос. Поскольку многие переходят на эти платформы виртуализации, дружественные к FOSS, мы решили, что, по крайней мере, некоторые из вас могут быть заинтересованы в передаче одного или двух графических процессоров на свои виртуальные машины для экспериментов с локальными рабочими нагрузками искусственного интеллекта. В этом руководстве мы рассмотрим, что нужно для передачи графического процессора виртуальным машинам, работающим на любой платформе, и рассмотрим некоторые наиболее распространенные ошибки, с которыми вы можете столкнуться. Ограничения и предпосылки Прежде чем вносить какие-либо изменения в конфигурацию наших гипервизоров, важно понять некоторые ограничения этих платформ. Во-первых,

Приобретение Broadcom компании VMware заставило многих искать альтернативы. Двумя крупнейшими бенефициарами повышения цен Broadcom, по крайней мере, в том, что касается бесплатности и открытого исходного кода, стали гипервизоры Proxmox VE и XCP-ng. В то же время интерес к корпоративному ИИ возрос. Поскольку многие переходят на эти платформы виртуализации, дружественные к FOSS, мы решили, что, по крайней мере, некоторые из вас могут быть заинтересованы в передаче одного или двух графических процессоров на свои виртуальные машины для экспериментов с локальными рабочими нагрузками искусственного интеллекта. В этом руководстве мы рассмотрим, что нужно для передачи графического процессора виртуальным машинам, работающим на любой платформе, и рассмотрим некоторые наиболее распространенные ошибки, с которыми вы можете столкнуться.

Ограничения и предпосылки Прежде чем вносить какие-либо изменения в конфигурацию наших гипервизоров, важно понять некоторые ограничения этих платформ. Во-первых, в этом руководстве будет рассмотрен транзит PCIe. Это означает, что вы будете ограничены одним графическим процессором на виртуальную машину. Некоторые карты Nvidia могут поддерживать возможности vGPU на Proxmox через собственный проприетарный драйвер, однако для этого требуется лицензия на виртуальную рабочую станцию, и поэтому это выходит за рамки данного руководства. На момент написания XCP-ng не поддерживает разбиение в стиле vGPU на Nvidia и поддерживает только сквозную передачу PCIe на виртуальную машину. Мы сосредоточимся в первую очередь на гостях Linux. Он должен нормально работать для других операционных систем, включая Windows Server, но ваш опыт может отличаться. В этом руководстве предполагается, что вы используете XCP-ng 8.2 с Xen Orchestra 5.92 или Proxmox VE 8.2 и в системе уже установлена ​​видеокарта Nvidia или AMD.

Включение сквозной передачи PCIe на XCP-ng

Для начала мы начнем с XCP-ng — потомка проекта Citrix Xen Server — поскольку из двух гипервизоров проще передавать через него устройства PCIe, по крайней мере, по опыту этого стервятника. По умолчанию видеокарты назначаются Dom0 (виртуальной машине управления) и используются для вывода на дисплей. Однако, сделав пару быстрых изменений конфигурации, мы можем указать Dom0 игнорировать карту, чтобы мы могли использовать аппаратное обеспечение для ускорения в другой виртуальной машине — вы можете настроить отображение через другой графический процессор, через центральный процессор или материнскую плату. интегрированная графика. Прежде чем начать, убедитесь, что IOMMU включен в BIOS. Сокращенно от блока управления памятью ввода-вывода, иногда называемого Intel VT-d или AMD IOV. Он используется гипервизором для строгого контроля за тем, к каким аппаратным ресурсам может напрямую обращаться каждая гостевая виртуальная машина, что в конечном итоге позволяет данной виртуальной машине напрямую взаимодействовать с графическим процессором. . На оборудовании сервера и рабочей станции IOMMU обычно включен по умолчанию. Но если вы используете потребительское оборудование или столкнулись с проблемами, возможно, вам стоит проверить BIOS, чтобы убедиться, что оно включено.

Picture 1
Picture 1

Затем подключитесь к хосту XCP-ng через KVM или SSH, как показано выше, и перейдите в командную оболочку. Отсюда мы будем использовать lspci, чтобы найти наш графический процессор:

lspci -v | grep VGA

lspci -v | grep audio

Если VGA не работает, попробуйте вместо этого одно из следующих действий:

lspci -v | grep 3D

lspci -v | grep NVIDIA

lspci -v | grep AMD

Вам должно быть представлено что-то вроде этого: 03:00.0 3D-контроллер: Nvidia Corporation GP104GL [Tesla P4] (ред. a1) . Затем запишите идентификатор, присвоенный графическим вычислениям и аудиовыходам графического процессора.

В данном случае это 03:00.0. Мы будем использовать это, чтобы указать XCP-ng скрыть его от Dom0 при последующих загрузках. Как вы можете видеть в приведенной ниже команде, мы подключили идентификатор нашего графического процессора после 0000:, чтобы скрыть это конкретное устройство от управляющей виртуальной машины:

/opt/xensource/libexec/xen-cmdline --set-dom0 "xen-pciback.hide=(0000:03:00.0)"

После этого нам просто нужно перезагрузить машину, и наш графический процессор будет готов к передаче на нашу виртуальную машину. перезагрузить

Передача графического процессора виртуальной машине в XCP-ng

Поскольку Dom0 больше не контролирует графический процессор, вы можете перейти к подключению его к другой виртуальной машине. Начните с развертывания новой виртуальной машины в Xen Orchestra, как обычно. В этом уроке мы будем использовать последнюю версию Ubuntu Server 24.04.

-3

Как только ваша ОС будет установлена ​​на новую виртуальную машину, выключите виртуальную машину и перейдите на вкладку «Дополнительно» виртуальной машины в веб-интерфейсе Orchestra, прокрутите вниз до графических процессоров и нажмите кнопку «+», чтобы выбрать ее, как показано выше. После добавления он появится как транзитный. После этого вы можете продолжить и запустить свою виртуальную машину. Чтобы проверить, успешно ли мы прошли через наш графический процессор, на этот раз мы можем запустить lspci изнутри гостевой виртуальной машины Linux.

lspci -v

Если ваш графический процессор появился в списке, вы готовы установить драйверы. В зависимости от вашей ОС и оборудования для этого может потребоваться загрузка пакетов драйверов с веб-сайта производителя. Если вы используете виртуальную машину Ubuntu 24.04 с картой Nvidia, вы можете просто запустить: sudo apt update && sudo apt install nvidia-driver-550-server И если вам нужен набор инструментов CUDA, вы также можете запустить: sudo apt install nvidia-cuda-toolkit

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

Если что-то пошло не так, ознакомьтесь с документацией XCP-ng по сквозной передаче устройств здесь. Включение сквозной передачи PCIe на Proxmox VE

Включение сквозной передачи PCIe на Proxmox VE немного сложнее.

Как и в случае с XCP-ng, это означает, что нам нужно указать Proxmox не инициализировать видеокарту, которую мы хотим передать в нашу виртуальную машину. К сожалению, с Proxmox ситуация выглядит как «все или ничего», поскольку мы делаем это путем внесения в черный список модуля драйвера для нашей конкретной марки графического процессора. Для начала установите карту графического процессора на свой сервер и загрузитесь в консоль управления Proxmox. Но прежде чем идти дальше, убедитесь, что Proxmox видит наш графический процессор. Для этого мы будем использовать утилиту lspci для вывода списка установленных периферийных устройств.

-4

В консоли управления Proxmox выберите свой узел на боковой панели, откройте оболочку, как показано на рисунке выше, а затем введите:

lscpi -v | grep VGA

lspci -v | grep audio

Если ничего не происходит, попробуйте одно из следующих действий:

lspci -v | grep 3D

lspci -v | grep NVIDIA

lspci -v | grep AMD

Вы должны увидеть распечатку, похожую на эту, с изображением вашей видеокарты: 2e:00.0 VGA-совместимый контроллер:

Nvidia Corporation AD102GL [L6000 / RTX 6000 Ada Generation] (версия a1) (prog-if 00 [VGA-контроллер])

Подсистема: NVIDIA Corporation AD102GL [поколение RTX 6000 Ada] 2e:00.1 Аудиоустройство: Аудиоконтроллер высокой четкости NVIDIA Corporation AD102 (версия a1)

-5
    Picture Main
Picture Main

Теперь, когда мы установили, что Proxmox действительно видит карту, мы можем перейти к включению IOMMU и занесению драйверов в черный список. Мы продемонстрируем это на системе AMD с графическим процессором Nvidia, но мы также поделимся инструкциями для карт AMD. Включение IOMMU Прежде чем мы сможем пройти через наше устройство PCIe, нам необходимо включить IOMMU как в BIOS, так и в загрузчике Proxmox. Как мы упоминали ранее в разделе о XCP-ng, IOMMU — это механизм, который гипервизор использует, чтобы сделать графический процессор доступным для гостей виртуальных машин, работающих в системе. По нашему опыту, IOMMU должен быть включен по умолчанию на большинстве серверов и рабочих станций, но обычно отключен на потребительских платах. После того, как вы активировали IOMMU в BIOS, нам нужно указать Proxmox использовать его. В консоли управления Proxmox откройте оболочку. Следующий бит зависит от того, как вы настроили загрузочный диск. Обычно Proxmox по умолчанию использует Grub для установок с одного диска и Systemd-boot для установок на зеркальных дисках.

Если документ интересен, дальше читайте оригинал ( English is a must ). Объем перевода и редактирования слишком большой. Сожалею.

A guide to passing GPUs through to Proxmox, XCP-ng VMs

Оригинальная статья