Сборка Caffe в Google Colaboratory: бесплатная видеокарта в облаке |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-06-04 22:30 Google Colaboratory — это не так давно появившийся облачный сервис, направленный на упрощение исследований в области машинного и глубокого обучения. Используя Colaboratory, можно получить удаленный доступ к машине с подключенной видеокартой, причем совершенно бесплатно, что сильно упрощает жизнь, когда приходится обучать глубокие нейросети. Можно сказать, что она является некоторым аналогом гугл-документов для Jupyter Notebook. В Colaboratory предустановлены Tensorflow и практически все необходимые для работы Python-библиотеки. Если какой-то пакет отсутствует, он с легкостью устанавливается на ходу через
pip или apt-get . Но что если необходимо собрать проект из исходников и подключиться к GPU? Оказывается, это может быть не настолько просто, что я выяснил в ходе сборки SSD-Caffe. В этой публикации я дам краткое описание Colaboratory, опишу встреченные трудности и способы их решения, а также приведу несколько полезных приемов. Весь код доступен в моем Colaboratory Notebook. Коротко о Colaboratory Грубо говоря, Colaboratory позволяет запускать Jupyter Notebook на удалённой машине. Файлы Colaboratory представляют собой обычные .ipynb «ноутбуки» и хранятся в Гугл-диске. Также есть набор функций, позволяющий загружать файлы с удаленной машины на Гугл-диск и обратно. Этими файлами можно так же делиться с другими, можно писать к ним комментарии, как в Гугл-документах.
Еще несколько замечаний по поводу Colaboratory:
Сборка SSD-Caffe Я хотел попробовать Single Shot Detector (SSD), а именно его Caffe реализацию в Google Colaboratory, но для этого проект нужно было собрать из исходников. Кстати, если вам подойдёт любая версия Caffe, есть способ намного проще (это даже работает, хотя запускать что-либо я не пробовал):
Сборка SSD-Caffe из исходников — это довольно длинный квест из нескольких шагов, пройти который можно только при помощи костылей. Шаг 1: установка зависимостей Здесь мы должны загрузить все зависимости для Caffe с помощью apt . Однако, прежде чем делать это, надо разрешить apt загружать исходный код зависимостей. В руководстве по установке Caffe сказано, что для этого необходима «deb-src строка в файле sources.list». К сожалению, подробностей там нет, поэтому я просто раскомментировал все deb-src строки в файле /etc/apt/sources.list :
И это сработало. Осталось только загрузить зависимости:
Шаг 2: нужен другой компилятор Здесь проблема заключается в следующем: g++-7 , который по умолчанию является основным, почему-то несовместим с CUDA-компилятором nvcc , поэтому придется использовать что-то другое. Я скачал g++-5 и сделал его компилятором по умолчанию:
Шаг 3: придётся собрать boost Если попытаться собрать Caffe на этом этапе, проблемы возникнут при попытке подключить boost, поскольку он собран другим компилятором, так что его исходники придётся скачать и тоже собрать с помощью g++-5 (подробнее на сайте boost):
Шаг 4: настройка Makefile Клонируем Caffe с GitHub:
И меняем необходимые поля в Makefile.config — я изменил путь к CUDA, поменял опцию BLAS, поменял версию OpenCV на третью, добавил Python layer, а также добавил все пути к библиотекам, которые установлены, но почему-то не нашлись (всё это удобно сделать с помощью Python):
Также в самом Makefile пришлось заменить все теги -isystem на -I : оба отвечают за поиск заголовков, но обрабатываются немного по-разному, и без этой замены проблемы возникали уже при подключении stdlib (здесь подробнее):
Шаг 5: сборка Остался последний костыль — подправить файл c++config.h , иначе возникают проблемы с nan-типами (подробнее):
Теперь, собственно, можно собрать Caffe:
Последние две строки добавляют пути библиотек, а именно boost и Caffe. Теперь Caffe можно использовать (нужно только указать к ней путь в PYTHONPATH):
Чтобы проверить работоспособность, я протестировал проект Mobilenet-SSD: код также есть в моем Colaboratory Notebook. В частности, я замерял время предсказания для одной картинки, и ускорение на GPU составило примерно 3.8. Бонус: несколько полезных приёмов По Google Colaboratory есть отличный туториал на Medium. Также в самой Colaboratory есть файлы с примерами почти всего, что может понадобиться. Монтировать Гугл-диск в файловую систему виртуальной машины:
Этот код вернёт ссылку и выдаст окно ввода. Нужно перейти по ссылке, скопировать код и ввести его в окно. Мне почему-то приходится делать это два раза. Дальше:
После этого можно использовать свой Гугл-диск как обычный каталог. Кроме того, все изменения в этом каталоге автоматически синхронизируются с Гугл-диском. Установка Keras:
Установка PyTorch:
Сменить рабочий каталог:
Стереть все изменения и перезапустить машину:
Загрузить файл на локальную машину:
Получить словарь из файлов, загруженных на Гугл-диск:
Приглушить вывод команды терминала (перенаправить в переменную):
В целом, Google Colaboratory предоставляет неплохую возможность производить обучение нейросетей в облаке. Правда, этого может быть недостаточно для совсем больших сеток. Другой плюс — это возможность запускать код независимо от локальной операционной системы (что хорошо для воспроизводимости), а также совместно работать над одним проектом. В качестве подвоха — GPU может быть недоступна, в том числе надолго. Источник: habr.com Комментарии: |
|