Мой хороший друг в УофТ, Геннадий Пехименко, рассказал мне об инструменте профилирования машинного обучения — 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 к машине с помощью команды, представленной в консоли, и установите все зависимости. На самом деле нам нужны три вещи:
- x11vnc — VNC-сервер
- Xvfb — виртуальный фреймбуфер
- Окружение рабочего стола. Я выбрал 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 с тестами пользовательского интерфейса на дешевых облачных графических процессорах.
Некоторые полезные ссылки, которые я нашел во время этого путешествия:
- https://stackoverflow.com/questions/12050021/how-to-make-xvfb-display-visible
- https://www.e2enetworks.com/help/knowledge-base/how-to-install-remote-desktop-xrdp-on-ubuntu-18-04/
- https://code.visualstudio.com/docs/setup/linux
Первоначально опубликовано на https://nurlybayev.family.