Я помню, как впервые запустил модель глубокого обучения на мощном графическом процессоре (NVIDIA GTX 1080). Модель пронизывала каждую тренировочную эпоху так быстро, что мне казалось, что я только что перешел с управления седаном на спортивную машину. 🚙
Скорость обучения была захватывающей; эксперименты с разными моделями шли намного быстрее, чем обычно. Но после этого проекта ускоренное глубокое обучение стало редкой роскошью. Время вычислений на хорошем графическом процессоре может быть дорогостоящим. Наши наборы данных или модели обычно достаточно малы, поэтому время обучения может быть медленным, но не настолько медленным, чтобы оправдать затраты на облачные вычисления / создание специальной машины.
Итак, я старался как есть, оплачивая время вычислений Paperspace по мере необходимости, когда ускорение графического процессора действительно необходимо, и копил облачные кредиты на какой-то момент в далеком будущем, когда я смогу потратить все это на P100.
До этого!
По сути, PlaidML ускоряет выполнение глубокого обучения на ноутбуке / встроенном устройстве / или другом вычислительном оборудовании, которое традиционно несовместимо с рабочими нагрузками глубокого обучения.
Говоря простым языком, если у вас есть ноутбук Mac / Windows / Linux или даже Raspberry Pi, вы можете установить PlaidML и обучить модель глубокого обучения с помощью графического процессора вашего устройства.
Когда я наткнулся на этот твит, он прозвучал потрясающе, поэтому я решил исследовать и написать о PlaidML - что это такое, как он работает и как начать работу, на примере моего Macbook Pro 2017 года.
Что такое PlaidML?
PlaidML - это тензорный компилятор с открытым исходным кодом, который может ускорить процесс обучения моделей глубокого обучения и получения прогнозов из этих моделей.
Но ...
Что такое тензорный компилятор? Раз уж мы говорим об этом, что такое компилятор?
Компиляторы - это компьютерные программы, которые преобразуют инструкции более высокого уровня в машинный код более низкого уровня, чтобы эти инструкции могли быть прочитаны и выполнены компьютером.
В этом контексте тензорные компиляторы устраняют разрыв между тензорными операциями, используемыми в глубоком обучении (свертки и т. Д.), И кодом платформы и чипа, необходимым для выполнения этих операций с хорошей производительностью.
Как работает PlaidML?
Для выполнения этого преобразования из высокоуровневых тензорных операций в низкоуровневый машинный код PlaidML использует свой язык Tile для генерации точно адаптированного кода OpenCL, OpenGL, LLVM или CUDA на лету, поэтому этот код можно запускать на OpenCL / OpenGL. / LLVM / CUDA-совместимое устройство. Люди (Intel AI), выпустившие PlaidML, написали в блоге сообщение, в котором более подробно объясняется, как все это работает. См. Здесь.
Начало работы с PlaidML
(большая часть того, что следует ниже, взята из раздела Быстрый старт на странице github PlaidML и адаптирована для работы на Macbook Pro 2017 года.
Шаг 1. Проверьте, какая видеокарта установлена на вашем компьютере.
В моем Macbook Pro 2017 года установлены Intel HD Graphics 630 и Radeon Pro 560. Оба используют OpenCL, поэтому они совместимы с PlaidML. (полный список компьютеров Mac, совместимых с OpenCL. Также как начать работу с другими операционными системами, такими как Windows и Linux)
Шаг 2. Установите PlaidML (с разумным использованием виртуальных сред)
virtualenv plaidml
source plaidml/bin/activate
pip install plaidml-keras plaidbench
Шаг 3. Настройте PlaidML
plaidml-setup
Шаг 4. Выберите ускоритель
Я собираюсь использовать видеокарту Intel.
Шаг 5. Уф, это сработало! Теперь, чтобы сохранить настройки
Шаг 6. Запустите тесты
PlaidML поставляется с инструментом командной строки plaidbench
для тестирования производительности различных карт в разных средах.
Здесь мы можем запустить тест мобильной сети с одной линией на видеокартах Radeon и Intel, чтобы сравнить их производительность.
plaidbench keras mobilenet
Похоже, обе карты обеспечивают одинаковую производительность логического вывода. Хорошо знать!