После нескольких дней проклятий и ругани мне удалось запустить мое приложение Unity и выполнить рендеринг на «безголовом» Linux-компьютере - машине без физического дисплея. И даже в облаке Amazon!

В конце концов, все сложности оказались не из-за Unity, а скорее проблемы с настройкой ОС и драйверов. Как только мне удалось запустить образец OpenGL glxgears без монитора, запустился и Unity.

TL; DR: Принесите мне готовый к использованию образ диска Amazon, который использует графический процессор.

Зачем кому-то запускать приложения Unity без монитора?

Если вы работаете с машинным обучением - обучаете агентов играть в игры на Unity или управляете Udacity Self-Driving Car Simulator, глядя на пиксели. Если вы дополняете обучающие наборы синтетическими изображениями или просто визуализируете много кадров для вашего фильма - вы можете запустить его на удаленном сервере, в облаке или, по крайней мере, скрыть раздражающие окна со своего рабочего стола.

Вам по-прежнему нужен цикл рендеринга для запуска и графический процессор для работы, поэтому обычный подход к запуску Unity в качестве сервера не сработает.

Linux спешит на помощь!

Запуск приложения Unity с графикой на сервере без монитора

Предполагая, что у вас установлен Linux (я тестировал Ubuntu14.04), и драйверы NVIDIA уже установлены и работают.

Остальное очень просто - настройте виртуальный дисплей, запустите X-сервер и убедитесь, что приложение запускается на том же дисплее, что и X:

Запуск приложения Unity за пределами экрана на локальном компьютере

Полезно, чтобы скрыть раздражающие окна, пока ваши агенты DeepQ учатся.

Установите XDummy и VirtualGL. XDummy создаст новый виртуальный дисплей за пределами экрана, а VirtualGL перехватит входящие вызовы OpenGL, выполняя их на реальном графическом процессоре. См. Инструкции:

Запустите приложение Unity с графикой в ​​Amazon Cloud!

Теперь самое интересное и полезное - запуск Unity в Amazon Elastic Compute Cloud (Amazon EC2).

Amazon предлагает несколько вариантов графических процессоров: старые экземпляры g2 и более быстрые экземпляры p2. До сих пор я тестировал следующее на экземпляре с одним графическим процессором g2.2xlarge с Ubuntu 14.04.

Самая сложная часть - найти правильный драйвер NVIDIA, который может поддерживать графические процессоры в облаке. Пока что я обнаружил, что 367.57 и 340.46 работают с графическим процессором GRID K520, который находится внутри экземпляра g2. Однако есть одна проблема с установщиком - он забывает добавить идентификатор шины в конфигурацию - необходимо вручную исправить файл.

Вам нужно будет отключить драйверы Nouveau, поставляемые с Ubuntu. Бедному К520 они не годятся.

Помимо этого - создайте и установите X-сервер, настройте виртуальный дисплей и запустите X.

Ваше приложение должно быть готово к запуску на том же экране, что и X. См. Полные инструкции:

Если вы хотите узнать больше об установке драйвера NVIDIA, перейдите по ссылке: https://askubuntu.com/questions/429596/how-to-choose-the-vga-when-setting-up-the-x-server/534622 # 534622

Готовый к использованию загрузочный образ Amazon

Если вас не беспокоят описанные выше действия, ничего страшного. Я создал образ загрузочного диска (AMI), который может запускать для вас Unity или любое другое приложение OpenGL на Amazon.

Образ содержит Ubuntu 14.04, драйверы NVIDIA 367.57. При загрузке запускается X-сервер с виртуальным дисплеем. Конечно, все вызовы OpenGL будут выполняться на GPU.

Образ называется: Ubuntu 14.04 с настройкой виртуального дисплея для OpenGL с ускорением на GPU и доступен в следующих местах: us-west-1, us-west-2 и восток США.

Чтобы найти его в облаке Amazon, просто введите Ubuntu GPU в поле поиска AMI или воспользуйтесь ссылкой: https://console.aws.amazon.com/ec2/v2/home?region= us-west-1 # LaunchInstanceWizard: ami = ami-921c40f2

PS: Для тестирования вы можете загрузить мое небольшое приложение Unity, которое отображает некоторые блоки, делает снимки экрана и записывает их на диск: https://www.dropbox.com/s/abycjktjzmkrmb4/ auto.zip?dl=0