Как ускорить глубокое обучение Python с помощью облачного графического процессора?

искусственный интеллект глубокое обучение Python AWS

нагрузка

Во второй половине дня я использовал платформу глубокого обучения Python Keras для обучения регрессионной модели с трехслойной нейронной сетью для прогнозирования цен на жилье в районе Бостона.

Это пример из книги "Глубокое обучение с помощью Python".

При запуске код имеет два больших цикла.

Первый запускает данные 100 раз (эпохи), а второй — 500 раз.

Мой ноутбук не может считать, а вентилятор продолжает издавать звуковой сигнал.

В жаркий день это выглядит так жалко.

Использование ноутбука для машинного обучения по-прежнему не является хорошей идеей.

Если бы у меня был GPU...

В этот момент каприз.

У меня нет устройства с графическим процессором nVidia, но кто сказал, что я должен запускать код на своей локальной машине?

Это уже облачная эра!

Могу ли я использовать облачный графический процессор для запуска кода машинного обучения и заставить мой ноутбук работать с меньшими усилиями?

случайная встреча

У меня возникла эта идея, потому что недавно на Youtube я увидел фрагмент Сираджа Равала.новое видео.

В этом видео он рекомендует облачную платформу GPU.FloydHub.

Я пробовал продукты AWS GPU.

Это было в онлайн-классе по глубокому обучению.

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

Я так хорошо это помню, потому что он записал десятки минут видео о том, как настроить AWS.

Хотя AWS достаточно прост, для новичков все же есть некоторые препятствия.

FloydHubЭтот сайт просто решает болевые точки пользователей.

Прежде всего, он может обернуть AWS и отфильтровать все сложные варианты.

Во-вторых, он имеет встроенные практически все основные фреймворки глубокого обучения, поставляется с собственной батареей и может использоваться «из коробки»;

Кроме того, он предоставляет богатую и краткую документацию, с которой пользователи могут быстро приступить к работе.

Как заявляет его домашняя страница:

Focus on what matters. Let FloydHub handle the grunt work.

Это переводится как:

Обратите внимание на то, что вы хотите сделать. Грязная работа, бросьте ее на FloydHub.

Мне нравится все, что предназначено для ленивых людей.

Я немедленно зарегистрировал учетную запись и сделал проверку электронной почты.

после этого яПолучите это бесплатноБлагодаря 2 часам работы графического процессора вы можете попробовать выполнять задачи машинного обучения.

Чтобы потратить драгоценное время вычислений на GPU на переднем крае, я внимательно прочитал руководство по быстрому запуску.

Через несколько минут я был уверен, что научился им пользоваться.

пытаться

Сначала я иду вFloydHub, создал новую задачу под названием "try-keras-boston-house-regression".

Затем в своем локальном блокноте Jupyter я экспортировал код в виде файла сценария Python, как показано на рисунке ниже.

Я создал новый каталог и скопировал в него файлы скриптов.

Этот скрипт Python, я просто добавил 3 строки кода в конце:

import pickle

with open('data.pickle', 'wb') as f:
    pickle.dump([all_scores, all_mae_histories], f)

Эти строки кода добавлены, потому что нам нужно записать некоторые данные в прогоне (т.е.all_scoresиall_mae_histories).

Затем перейдите в терминал и используйте команду cd, чтобы войти в эту папку.

воплощать в жизнь:

pip install floyd-cli

При этом устанавливается локальный инструмент командной строки FloydHub.

Выполните следующую команду для входа в систему:

floyd login

Вам будет предложено ввести данные своей учетной записи на FloydHub.

После того, как ввод правильный, выполните:

floyd init try-keras-boston-house-regression

Обратите внимание, что это имя должно совпадать с именем вновь созданной задачи в панели управления.

Настройка завершена, и вы можете запустить ее прямо ниже.

входить:

floyd run --gpu --env tensorflow-1.8 "python 03-house-price.py"

Это предложение означает:

  • использовать вычисления на графическом процессоре;
  • В операционной среде используется Tensorflow 1.8 и соответствующий Keras (2.1.6).

Если вы хотите использовать другие платформы или версии глубокого обучения, вы можете обратиться кэта ссылка.

FloydHub отреагировал на нашу команду так:

Операция завершена?

Да, это так просто.

Ваша задача уже выполняется в облаке.

результат

Затем я вернулся к своим делам.

Пейте чай, читайте книги и смотрите на номера подписок WeChat.

Несмотря на почасовую оплату, вам не нужно следить за процессом работы в облаке, потому что вы боитесь переплатить.

Как только задача будет завершена, она перестанет работать сама по себе, не вычитая лишней минуты вашего драгоценного времени работы графического процессора.

Когда я вернулся к компьютеру, задание было выполнено.

В течение всего процесса память графического процессора очень загружена (занятость составляет более 90%).

Тем не менее, графический процессор кажется очень неторопливым и колеблется более чем на десять процентов.

Кажется, что в нашей нейронной сети еще слишком мало слоев и структура недостаточно сложна.

Работа на графическом процессоре не доставляет удовольствия.

Прокрутите вниз, чтобы увидеть вывод.

Вывод программы, включая некоторые записи о создании и вызове ресурсов графического процессора, доступен здесь.

ОткрытымFilestab, давайте посмотрим на результаты.

Прежде чем добавить 3 строки кода, сгенерированный файл записи рассола находится здесь.

Похоже, что FloydHub действительно помог нам завершить сложный процесс расчета.

Мой ноутбук, всегда крутой и прохладный, ждет, чтобы сорвать плоды победы.

Выберите Загрузить, чтобы загрузить файл рассола локально. Поместите его в тот же каталог, что и наш блокнот Jupyter.

Вернитесь к интерфейсу среды выполнения Jupyter Lab.

Откройте новый файл ipynb.

Мы вводим следующий код, чтобы увидеть, соответствует ли текущая запись нашим потребностям.

import pickle
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

with open('data.pickle', 'rb') as f:
    [all_scores, all_mae_histories] = pickle.load(f)

num_epochs = 500
average_mae_history = [
    np.mean([x[i] for x in all_mae_histories]) for i in range(num_epochs)
]

plt.plot(range(1, len(average_mae_history) + 1), average_mae_history)
plt.xlabel('Epochs')
plt.ylabel('Validation MAE')
plt.show()

Эти коды, только для рисования, сами по себе не имеют сложных операций.

Это результат запуска:

Результаты визуализации согласуются с книгой.

Докажите, что код машинного обучения без проблем работает в облаке.

Мы также можем проверить оставшееся свободное время.

Что ж, осталось еще более 1 часа вычислительного времени GPU, возвращайтесь и играйте.

Workspace

Мы только что показали, как использовать его из командной строки. Если вы знакомы с операциями командной строки, рекомендуется использовать этот метод. Потому что там больше контроля.

Но для новичков я рекомендую вам использовать другойПолегчеМетоды.

Щелкните вкладку «Рабочее пространство» над домашней страницей.

Вы увидите 2 уже доступных образца рабочей области.

Попробуйте открыть первый из них и посмотреть, что внутри.

Нажмите зеленую кнопку «Возобновить» в правом верхнем углу, и вы увидите, что система серьезно готовит для нас среду.

После завершения подготовки вы увидите знакомый интерфейс лаборатории Jupyter.

Дважды щелкните в области файла слеваdog-breed-classification.ipynb,Открытым.

Вот полный пример дискриминации кошек и собак.

Давай сделаем это. Способ состоит в том, чтобы выполнить «Выполнить» -> «Перезапустить ядро» и «Выполнить все ячейки» в строке меню:

Вы обнаружите, что это ничем не отличается от локального выполнения.

Единственная разница в том, что вы используете GPU-ускорение!

Что делать, если вы хотите создать собственное рабочее пространство?

Очень просто, вернитесь на страницу нашего проекта, этот примерэта ссылка.

Вы увидите, что под каждым проектом вы можете использовать кнопку «Создать рабочую область», чтобы создать новую рабочую область.

FloydhubВас спросят, какой метод использовать для создания новой рабочей области.

Здесь мы выбираем «Начать с нуля» слева.

Выберите среду для использования ниже.

Мы изменили его на Tensorflow 1.9 и среду GPU.

Нажмите кнопку «Создать рабочую область», чтобы завершить создание.

нажмитеtry-keras-boston-house-regression workspaceэта ссылка.

Мы видим, что интерфейс Jupyter Lab для нас готов.

В этой среде готовы конфигурации Tensorflow и GPU.

Вам не нужно думать о том, как выполнять команды CLI, просто введите в него код Python, как обычно, и вызовите команды Keras и Tensorflow.

Это удобнее?

использоватьFloydhub, начните свое путешествие по глубокому обучению.

резюме

Для выполнения задач глубокого обучения вам не обязательно покупать оборудование самостоятельно. В основном зависит от конкретных потребностей.

Если вам не нужно запускать код глубокого обучения 24 часа в сутки, 7 дней в неделю, а лишь изредка сталкиваться с задачами, требующими больших вычислительных ресурсов, этот облачный GPU больше подходит.

Если вы тратите деньги на оборудование для глубокого обучения, существует только возможность его амортизации. А если коэффициент использования низкий, то это тоже пустая трата ресурсов.

При той же цене аренды вычислительная мощность, которую вы можете получить, становится все сильнее и сильнее.

В этом сила закона Мура.

Пользовались ли вы другими облачными сервисами GPU? Как цена и простота использования соотносятся с FloydHub?

Если вы интересуетесь наукой о данных, добро пожаловать в мою серию руководств. Индекс публикуется как "Как эффективно начать работу с наукой о данных?".

Лайк пожалуйста лайк. Вы также можете подписаться на мой публичный аккаунт в WeChat и закрепить его."Юшу Чжилань" (нкваншуйи).