mysurik.ru

Проброс GPU в Proxmox: неделя танцев с бубном ради Stable Diffusion

vp7spjvp7spjvp7s

Проброс GPU в виртуальную машину — это моя эпопея на целую неделю. Я хотел, чтобы виртуальная машина с Windows видела видеокарту NVIDIA для машинного обучения. Думал, что достаточно подключить видеокарту и всё заработает. Ага, не тут-то было. Эта неделя танцев с бубном многому меня научила, и сейчас я расскажу, как всё прошло.

С чего всё началось

У меня на сервере стояла виртуальная машина, на которой я хотел гонять нейросети. Для этого нужна видеокарта, а не слабый процессор. В сервере была встроенная графика Intel и дискретная видеокарта NVIDIA. Идеальный сценарий: встроенную оставить хосту, а дискретную пробросить в виртуальную машину.

Я наивно полагал, что процесс займёт полчаса. На деле я потратил неделю, читая вики Proxmox, пробуя разные настройки и собирая систему заново. В итоге всё заработало, но путь был тернистым.

Первый шаг: включение IOMMU

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

IOMMU включается в двух местах: в BIOS и в ядре Linux. В BIOS я нашёл настройку виртуализации и включил её. В ядре нужно добавить параметр загрузки. Без обоих шагов ничего не заработает. Когда я это сделал, стало ясно, куда двигаться дальше.

Отдельная видеокарта — обязательное условие

Пробросить в виртуальную машину видеокарту, которую использует сам хост, не получится. Нужна отдельная карта, не занятая хостовой системой. У меня было удобно: встроенная Intel для хоста и дискретная NVIDIA для виртуальной машины. Это идеальная комбинация для проброса.

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

Настройка конфигурации виртуальной машины

Дальше нужно было отредактировать конфигурацию виртуальной машины. Я добавил PCI-устройство, указав идентификатор видеокарты. В Proxmox это делается в настройках виртуальной машины, в разделе оборудования. Добавил PCI-устройство с нужным ID и сохранил.

После этого запустил виртуальную машину. На этапе загрузки видеокарта уже была видна. Осталось установить драйверы в гостевой системе. Для Windows я поставил драйверы NVIDIA, и видеокарта заработала на полную мощность.

Стабильность и драйверы

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

Я заметил, что после проброса видеокарты хост перестал видеть её в системе. Это нормально: видеокарта передана виртуальной машине. Если нужно вернуть её хосту, достаточно убрать PCI-устройство из конфигурации виртуальной машины и перезагрузить хост.

Результат: Stable Diffusion работает

Я пробросил NVIDIA GTX 1060 в виртуальную машину с Linux и запустил Stable Diffusion. Скорость генерации изображений оказалась такой же, как на нативной системе. Это был момент, ради которого стоило мучиться неделю. Нейросети работали на полную мощность.

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

Какие ошибки я видел по пути

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

Вторая частая ошибка — код 43 в Windows. Это значит, что система не может инициализировать видеокарту. Чаще всего помогает правильная настройка скрытия гипервизора или обновление драйверов. Я с этим столкнулся, но обошёл, подобрав нужные параметры.

Скрытие следов гипервизора

Некоторые программы, особенно игры и некоторые версии драйверов, отказываются работать в виртуальной машине. Для этого в Proxmox есть настройки, которые скрывают следы гипервизора. Я включил их, чтобы драйверы NVIDIA работали корректно.

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

Проброс GPU в контейнер

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

В итоге для Stable Diffusion я использовал контейнер, а виртуальную машину оставил для других экспериментов. Гибкость Proxmox позволяет выбрать подходящий вариант. Контейнер экономит ресурсы, а виртуальная машина даёт больше изоляции.

Совет новичкам

Мой главный совет — читайте вики Proxmox по PCI Passthrough. Там всё расписано, но читать нужно внимательно. Я пропустил несколько важных деталей, из-за чего и потратил неделю. Если бы я сразу вник в документацию, уложился бы в пару часов.

Также не бойтесь экспериментировать. Проброс GPU — сложная тема, но решаемая. Действуйте по шагам, проверяйте каждый этап и не отчаивайтесь при ошибках. В конце вас ждёт рабочая видеокарта в виртуальной машине, а это того стоит.

Подготовка системы к пробросу

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

Также я советую проверить, что в BIOS включены все нужные технологии виртуализации. Не только IOMMU, но и поддержка аппаратной виртуализации процессора. Если эти настройки выключены, никакие конфигурации не помогут. Начало с BIOS экономит время.

Тестирование на простых устройствах

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

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

Мои впечатления от результата

Когда я наконец увидел работающую генерацию изображений на видеокарте в виртуальной машине, эмоции были непередаваемые. Неделя разбирательств, ошибок и перезагрузок — и всё это ради одного экрана с результатом. Это был настоящий урок терпения и упорства.

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

Ресурсы, которые помогают

В разбирательствах мне помогали форумы и сообщества Proxmox. Там люди делятся конфигурациями и решениями типовых проблем. Я нашёл несколько готовых примеров, которые подстроил под своё железо. Если вы застряли, поищите на форумах — скорее всего, кто-то уже решал вашу проблему.

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

Планы на будущее

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

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

Чек-лист перед пробросом

Для тех, кто будет повторять мой путь, я собрал чек-лист. Проверьте, что в BIOS включён IOMMU и поддержка виртуализации. Убедитесь, что видеокарта, которую вы пробрасываете, не используется хостовой системой. Обновите Proxmox и прочитайте документацию по PCI Passthrough. Сделайте резервную копию конфигурации.

Этот чек-лист сэкономит вам дни. Я прошёл весь путь без него и потратил неделю. С ним вы уложитесь в пару вечеров. Учитесь на моих ошибках, а не на своих.

Почему стоит пробовать

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

Когда я сравниваю время, потраченное на настройку, и пользу, которую получаю сейчас, выбор очевиден. Неделя разбирательств окупилась годами удобной работы. Если вам нужна видеокарта в виртуальной машине — дерзайте, это реально.

Терпение — главный инструмент

Если из всего этого опыта я вынес одну главную мысль, то это важность терпения. Проброс GPU — не та задача, которая решается с первого раза. Ошибки, перезагрузки и чтение документации — это нормальный путь. Главное не сдаваться и идти по шагам.

Когда я рассказываю про свою неделю разбирательств, многие удивляются. Но именно эта неделя дала мне понимание, как всё устроено. Теперь любые проблемы с пробросом я решаю быстро. Упорство окупается знаниями.

Последний совет

Начните с изучения документации и чек-листа, который я составил выше. Затем действуйте по шагам и проверяйте каждый этап. Если что-то не работает — не ищите лёгких путей, а разбирайтесь в причине. Именно разбор причин дал мне опыт.

В итоге вы получите рабочую видеокарту в виртуальной машине и удовольствие от сделанного. Поверьте, это того стоит. Удачи вам в пробросе GPU — и пусть ваша неделя танцев будет короче моей.

Итог

Проброс GPU в Proxmox — это трудоёмкий, но выполнимый процесс. Включите IOMMU, убедитесь, что видеокарта отдельная, настройте PCI-устройство и установите драйверы. У меня всё заработало, и теперь я использую видеокарту для нейросетей прямо из виртуальной машины.

Для AI-генерации на CPU я в итоге завернул ComfyUI в Docker — там отдельная история. Если хочешь увидеть, как собирался весь мой Proxmox-зоопарк — вот сводный гайд. Там и про GPU проброс, и про LXC, и про бэкапы, и про NPM. Пробуйте, экспериментируйте и делитесь опытом — так мы все учимся быстрее. Надеюсь, моя неделя танцев с бубном сэкономит вам хотя бы вечер разбирательств.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *