Мой хороший друг в УофТ, Геннадий Пехименко, рассказал мне об инструменте профилирования машинного обучения — Skyline, который разработали его студенты. Оригинальная реализация представляет пользовательский интерфейс в виде плагина Редактор Atom. Тем не менее, они работают над переносом его на плагин VSCode. Он попросил меня дать ему пробный запуск.

В настоящее время Skyline поддерживает модели, написанные на PyTorch и обученные на графических процессорах Nvidia. Это имеет смысл, поскольку PyTorch становится все более популярной средой, а Nvidia доминирует в мире обучения машинному обучению благодаря CUDA Toolkit.

Первая проблема заключается в том, что у меня нет графического процессора Nvidia. Даже если бы я купил карту с графическим процессором Nvidia и захотел использовать ее в качестве eGPU, я бы не смог этого сделать, потому что Nvidia не поставляет драйверы для OSX. Это связано с какой-то длительной враждой между двумя компаниями.

Традиционные облачные провайдеры довольно дороги. Экземпляр AWS P3 по требованию на момент написания этой статьи стоит 3,06 доллара США в час. Есть такие сервисы, как Paperspace, где можно арендовать облачный GPU за 0,45 доллара в час, что является значительным улучшением. Однако мой взгляд упал на эту новую компанию под названием vast.ai, где они построили платформу, которая позволяет владельцам графических процессоров одалживать свое оборудование и зарабатывать деньги. В результате цены заметно ниже, чем даже у Paperspace.

Вторая проблема, с которой я столкнулся, заключается в том, что для тестирования плагина VSCode мне нужно запустить VSCode в среде рабочего стола с облачными графическими процессорами, являющимися безголовыми экземплярами Linux. Итак, я провел выходные, изучая это, и оказалось, что это возможно. Ниже приведена документация того, что мне пришлось сделать, чтобы заставить его работать.

Перво-наперво. Зарегистрируйтесь на обширном.ai. Добавьте немного денег на свой счет. Сгенерируйте пару ключей SSH и загрузите открытый ключ в свою учетную запись, чтобы иметь возможность подключиться к виртуальной машине в облаке.

cs ~/.ssh 
ssh-keygen -t rsa -f vastai 
cat vastai.pub | pbcopy 

Аренда дешевого GPU с хорошей сетью

SSH к машине с помощью команды, представленной в консоли, и установите все зависимости. На самом деле нам нужны три вещи:

  1. x11vnc — VNC-сервер
  2. Xvfb — виртуальный фреймбуфер
  3. Окружение рабочего стола. Я выбрал MATE, но работает и Xfce.
# Your connection string will be different 
ssh -p 12345 [email protected] -L 8080:localhost:8080 
apt-get update
apt-get install x11vnc xvfb mate-core mate-desktop-environment mate-
notification-daemon

Создайте виртуальный буфер кадров с помощью Xvfb и запустите среду рабочего стола.

export DISPLAY=:0
Xvfb $DISPLAY -screen 0 1024x768x16 &
mate-session &

Запустите VNC-сервер

x11vnc -display $DISPLAY -bg -forever -nopw -quiet -listen localhost -xkb

На вашей локальной машине. Настройте SSH-туннель.

VASTAI_PORT=12345 # Replace with SSH port supplied by Vast AI
ssh -N -T -L 5900:localhost:5900 -p $VASTAI_PORT [email protected] &

Направьте средство просмотра VNC на файл localhost:5900. Я использовал Real VNC Viewer.

Выгода

Теперь я могу протестировать плагин на разных графических процессорах!

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

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

Некоторые полезные ссылки, которые я нашел во время этого путешествия:

  1. https://stackoverflow.com/questions/12050021/how-to-make-xvfb-display-visible
  2. https://www.e2enetworks.com/help/knowledge-base/how-to-install-remote-desktop-xrdp-on-ubuntu-18-04/
  3. https://code.visualstudio.com/docs/setup/linux

Первоначально опубликовано на https://nurlybayev.family.