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

TensorFlow глубокое обучение Python Keras

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

сомневаться

"Как ускорить глубокое обучение Python с помощью облачного графического процессора?«В статье я познакомил вас с сервисом среды глубокого обучения FloydHub.

После публикации статьи некоторые читатели в фоновом режиме задали два вопроса:

  1. У меня нет кредитной карты в иностранной валюте, и по истечении бесплатного времени я не могу ее продлить. Есть ли аналогичная домашняя услуга?
  2. Я хочу использовать свой собственный набор данных для обучения, как мне это сделать?

На первый вопрос мне ответил читатель.

Я посмотрел, вотRussell Cloud, действительно является облачным сервисом глубокого обучения GPU, похожим на FloydHub.

Но после благодарностей я узнал, что он разработчик Russell Cloud.

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

Из-за этого зеленого канала ответ был очень быстрым. Пользовательский опыт хороший.

Преимущества этой домашней услуги заключаются в следующем:

Во-первых, вы можете платить с помощью Alipay и WeChat, вам не нужны кредитные карты Visa или Mastercard, что очень удобно;

Во-вторых, Russell Cloud основан на Alibaba Cloud с высокой скоростью доступа и стабильным соединением. При загрузке и выгрузке крупномасштабных данных преимущества более очевидны. Напротив, FloydHub столкнулся с двумя прерываниями при загрузке около 500 МБ данных.

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

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

После решения первой проблемы я использую Russell Cloud, чтобы показать вам, как загрузить собственный набор данных и провести обучение глубокому обучению.

регистр

Перед использованием перейдите в Russell CloudрегистрБесплатный аккаунт.

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

После успешной регистрации у вас есть 1 час бесплатного использования графического процессора.

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

У меня на руках только эти 5 доступных пригласительных ссылок. Вы можете ввести его напрямую, если хотите.

Посмотрим, кто быстрее.

После регистрации войдите в консоль, вы увидите свою информацию.

Существует столбец Token, который является вашей регистрационной информацией. Ниже я расскажу, как им пользоваться.

Вам нужно загрузить инструмент командной строки, зайдя в терминал и выполнив:

pip install -U russell-cli

Затем вам необходимо авторизоваться:

russell login

В это время, согласно подсказке, введите токен прямо сейчас, и вход в систему завершен.

В отличие от FloydHub, в большинстве случаев для проверки личности и проекта Russell Cloud используется этот метод токена.

Если вы не знакомы с операциями командной строки терминала, обратитесь к моему "Как установить среду выполнения Python Anaconda? (видеоурок)», который содержит видео-объяснение подробных шагов реализации основных функций терминала.

окрестности

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

вы можете просто нажатьздесьЗагрузите zip-пакет и разархивируйте его.

Распакованный каталог содержит две подпапки.

cats_dogs_small_vgg16Содержит наш скрипт запуска. Есть только один файл.

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

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

данные

Еще одна папка в разархивированном каталоге,cats_and_dogs_small, который содержит набор данных, который мы хотим использовать и загрузить.

Как показано на рисунке выше, данные изображения разделены на 3 категории.

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

Открытый тренировочный наборtrain, следующее содержит два каталога, а именно «кошка» и «собака».

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

Открытымtestиvalidationкаталог, вы увидите структуру каталогов иtrainтакой же.

Сначала создайте свой первый набор данных в Russell Cloud.

На главной странице нажмите кнопку «Консоль».

Выберите «Создать набор данных» в столбце «Набор данных».

Как показано выше, заполните имя набора данных как «cats_and_dogs_small".

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

Вернитесь к терминалу и используйтеcdКоманда для входа в разархивированную папкуcats_and_dogs_smallкаталог, выполнить:

russell data init --id 你的数据集ID
russell data upload

Пожалуйста, замените «идентификатор вашего набора данных» выше на ваш реальный идентификатор набора данных.

Выполните эти две команды, и данные будут загружены в Russell Cloud.

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

Обратите внимание, что в правой части рисунка выше есть кнопка «Копировать», нажмите ее, чтобы скопировать токен этой версии набора данных.

Важно отметить, что отсюда копируется информация, а не ID первой страницы набора данных.

Я потерял много времени из-за этой ошибки.

бегать

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

Вы должны дать проекту имя.

можно вызвать напрямуюcats_dog_small_vgg16.

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

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

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

Метод таков:

Скопируйте идентификационную информацию со страницы выше.

Вернитесь к терминалу и используйтеcdКоманда для входа в разархивированную папкуcats_dogs_small_vgg16каталог, выполнить:

russell init --id 你刚才复制的ID

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

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

russell run "python cats_dogs_small_vgg16_augmentation_freeze_russell.py" --gpu --data 92e239eca8e649928610d95d54bb3602:cats_and_dogs_small --env tensorflow-1.4

Объясните параметры этой команды:

  • runСледующие кавычки заключают в себе часть, представляющую собой фактическую выполняемую команду;
  • gpuОн сообщает Russell Cloud, что вы выбираете среду выполнения GPU, а не CPU;
  • dataСледующая числовая строка (перед двоеточием) является соответствующим идентификатором версии набора данных, которую вы только что создали; после двоеточия — это имя, которое вы дали каталогу монтирования набора данных. Предположим, что имя каталога монтирования здесь — «картошка», тогда в коде местоположение вашего набора данных — «/input/potato»;
  • env— это имя интегрированной среды библиотеки глубокого обучения. Здесь мы указываем Tensorflow 1.4. Дополнительные параметры см.Документация.

После ввода вышеуказанной команды Russell Cloud синхронизирует код вашего проекта с облаком, а затем выполнит код в соответствии с указанными вами параметрами.

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

Вам нужно перейти на веб-страницу, просмотреть «Журнал выполнения» в разделе «Задачи» и просмотреть текущие выходные данные в смоделированном терминале, предоставленном системой.

Чтобы сохранить результаты, полученные методом глубокого обучения, вам необходимо сохранить модель с помощью следующего оператора:

saved_model = output_dir / 'cats_and_dogs_small_finetune.h5'
model.save(saved_model)

history.historyОбъект содержит некоторые данные оценки в процессе обучения, такие как точность (acc) и значение потерь (loss), которые также необходимо сохранить.

Здесь вы можете использоватьpickleЧто нужно сделать:

import pickle
with open(Path(output_dir, 'data.pickle'), 'wb') as f:
	pickle.dump(history.history, f)

Будьте осторожны, вы, должно быть, обнаружили, что в приведенном выше коде естьoutput_dir, его реальный путьoutput/.

Это выходной путь по умолчанию, предоставленный нам Russell Cloud. Данные, находящиеся в нем, также будут сохранены в облачном хранилище после завершения операции.

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

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

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

Улучшать

При реальном использовании Russell Cloud вы можете столкнуться с некоторыми проблемами.

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

Во-первых, обновление версии среды глубокого обучения недостаточно своевременно.

На момент написания этой статьи стабильной версией Tensorflow уже является версия 1.8, а самая высокая поддерживаемая версия Russell Cloud — всего лишь 1.6. Самая высокая версия в документе по-прежнему 1.4. Keras по умолчанию фактически использует Python 3.5 + Tensorflow 1.1.

Будьте осторожны, чтобы не использовать Keras по умолчанию напрямую, иначе некоторые отличные функции, появившиеся в версиях после Python 3.6, будут недоступны. Например, когда вы передаете путь PosixPath (вместо строки) в качестве параметра адреса файла некоторым функциям, будет сообщено об ошибке. Это не вина вашего кода, это то, что среда выполнения слишком старая.

Во-вторых, когда на экране слишком много вывода (например, я прогнал 100 эпох, каждая из которых показывает 100 прогресса обучения), смоделированный терминал на веб-странице «Журнал выполнения» закрывается, что может привести к зависанию. Обходной путь заключается в прямой загрузке файла журнала, его чтении и анализе.

В-третьих, многие кодовые базы Keras и Tensorflow (например, с использованием предварительно обученных моделей) автоматически вызывают функцию загрузки для загрузки данных из github. Однако из-за того, что соединение между домашним сервером и github недостаточно стабильно, иногда не удается загрузить его, что приводит к истечению времени ожидания программы и аварийному завершению работы.

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

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

резюме

В этой статье вам рекомендуется отечественный облачный сервис глубокого обучения GPU Russell Cloud. Если вы предпочитаете читать китайские документы, у вас нет кредитной карты в иностранной валюте или у вас проблемы с доступом к FloydHub и Google Colab, вы можете попробовать.

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

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

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

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