Исследователи в сообществе глубокого обучения разрабатывают современные алгоритмы для решения различных проблем в нашей повседневной жизни. Начиная от простого классификатора изображений Cat-Dog и заканчивая моделью искусственного интеллекта Facebook TransCoder, которая переводит один язык программирования на другой.

Многие проблемы стоят перед исследователями в этой области. Один из них — собрать соответствующий набор данных для параметров задачи. Однако, как мы обсуждали в предыдущем руководстве этой серии, у нас каждый день появляется новый поток данных. Хитрость заключается в том, чтобы легко повторно использовать набор данных с разными моделями, написанными в разных средах, без проблем совместимости. В руководстве мы рассмотрели, как мы используем единый формат всего набора данных, используя пакет набора данных Tensorflow, в одном блоке YonoArc, чтобы быть более высоким уровнем обучающего стека, с которым пользователи могут взаимодействовать, не написав ни одной строки. кода.

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

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

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

В этом руководстве мы реализуем модель классификатора CNN для набора данных CIFAR-10, передаваемого из проигрывателя наборов данных Tensorflow, реализованного в последнем руководстве. Затем мы обучаем модель и регистрируем потери, а также точность модели на панели инструментов в YonoArc. Во время обучения мы используем Нетрон, инкапсулированный в виде блока, для визуализации архитектуры реализованной модели. Кроме того, потребление ЦП/ГП проверяется с помощью связи SSH с блоком модели. Наконец, мы подвели итоги обучения.

Реализация модели

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

Давайте разработаем второй компонент в новом тренировочном цикле!

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

Как показано ниже, класс cifar_cnn представляет блочный объект CIFAR CNN в YonoArc, который вы можете свободно приобрести здесь. Конструктор содержит инициализацию значений по умолчанию для атрибутов класса, например, доступных классов в наборе данных CIFAR-10, сопоставление классов с целочисленными значениями и т. д.

В on_start(self) мы получаем значения некоторых важных параметров от пользователя, используя функцию get_property, например, импульс, скорость обучения, количество эпох, и т.д…

Модель CIFAR также создается в on_start(self) путем вызова create_model(self). Эта функция строит последовательную модель слоев, как показано выше.

В конце on_start(self) создаются некоторые необходимые объекты, например, оптимизатор, а также объекты потерь и точности.

После on_start(self) функция run(self) вызывается параллельно с функцией on_new_messages. run(self) отвечает за цикл обучения при чтении изображений и меток из очереди self.batches, которая содержит доступные данные, собранные с помощью on_new_messages функция.

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

Функция training(self) вызывается в run(self) для проведения обучения. Функция training(self) — это настраиваемая реализация цикла обучения Tensorflow, однако данные считываются из очереди self.batches с шагом предварительной обработки, выполняемым функцией batch_transform(self).

Функция batch_transform(self) преобразует сообщения ROS, которые являются форматом сообщений в YonoArc, в тензоры. Во время конвертации пакет изображений преобразуется в RGB из формата BGR из-за предыдущего преобразования в блоке плеера с помощью OpenCV. Пакет меток сопоставляется с целочисленной версией с помощью словаря self.ind2label, определенного в конструкторе блока. Перед подгонкой данных к модели изображения нормализуются.

Обычный обучающий цикл выполняется путем вызова функции train_step(self), которая выполняет как прямое, так и обратное распространение. Он рассчитывает потери, а также точность. Мы сохраняем модель в конце каждой эпохи, которая позже будет использоваться для визуализации архитектуры ИНС с помощью Netron. Модель сохраняется в виде файла .h5 с именем файла, заданным пользователем, и его местоположением.

Теперь давайте продемонстрируем, как замкнуть цикл обучения, подключив проигрыватель к блочной модели CIFAR CNN, описанной выше. Более того, мы можем видеть, как мы используем интерфейс YonoArc для установки всех необходимых параметров.

Обучение Tensorflow в Yonohub

Конвейер обучения в YonoArc легче понять. Блок, который передает данные (изображения, метки) с определенной частотой кадров, которую вы можете выбрать. Набор данных можно выбрать из выпадающего списка в блоке, который включает более 50 наборов данных классификации изображений, предлагаемых пакетом Tensorflow Dataset.

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

Блок модели публикует два значения каждую эпоху: Loss и Accuracy. Оба значения можно визуализировать с помощью блока «Линейные диаграммы», который выводит данные в режиме реального времени на панель инструментов.

Теперь мы готовы запустить наш обучающий конвейер. Блок игрока мгновенно загрузит выбранный нами набор данных CIFAR-10. После завершения загрузки будет отправлено уведомление об этом. Вы можете нажать кнопку воспроизведения, которая недавно добавлена ​​в этот блок проигрывателя, чтобы позволить пользователю определить, когда начинать тренировку. Следовательно, данные начинают передаваться между двумя блоками, и через некоторое время блок модели выдаст предупреждение о текущей эпохе. Вы можете постоянно проверять на приборной панели ход обучения.

Визуализируйте архитектуру ANN

Во время обучения архитектуру ИНС можно визуализировать с помощью блока Netron. Netron — это средство просмотра нейронных сетей, моделей глубокого обучения и машинного обучения. Мы инкапсулируем пакет Netron в блок YonoArc, чтобы его можно было легко перетаскивать во время тренировки.

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

В настройках блока появится интерактивный URL-адрес, который будет использоваться для открытия веб-приложения Netron в новой вкладке. Архитектура модели показана красиво и удобочитаемо, как показано ниже.

Потребление процессора/графического процессора

Тем не менее, есть одна недостающая часть эффективного тренировочного цикла. Эффективность разработанного алгоритма можно постоянно проверять в процессе обучения. Мы добавили канал связи SSH в блок модели, чтобы пользователи могли получить доступ к машине, на которой работает модель.

Два свойства добавляются в блок модели, чтобы установить этот канал. Имя пользователя и пароль для пользователя блока. Тем не менее, вы можете использовать значения свойств по умолчанию. Два объекта устанавливаются перед запуском конвейера.

С вашего локального терминала вы можете ввести следующую команду:

sudo ssh [username]@[URL] -p [port]

Вам нужно заменить [username] на значение, которое вы вставили в свойство блока. [URL], а также [port] можно заменить на URL: Port, который указан в настройках блока модели.

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

Кроме того, вы можете использовать команду nvidia-smi для просмотра потребления графического процессора,

Проверить результаты тренировки

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

Обучение в Йонохабе

Вы можете следовать следующему видеоруководству, чтобы воспроизвести шаги, необходимые для получения вышеуказанных результатов. Однако вы можете загрузить .arc-файл пайплайна и открыть его в YonoArc прямо здесь, даже не беспокоясь о настройке вышеуказанных параметров. Хотя все блоки, использованные в статье, вам нужно свободно приобрести в YonoStore.

Вывод

Теперь у вас есть обученный классификатор в наборе данных CIFAR-10, использующий новый способ обучения. YonoArc упрощает идею обучения, используя концепцию «разделяй и властвуй». Разделение игрока и модели на два отдельных блока делает тренировочный цикл более удобным для повторного использования в дальнейшем. Это облегчает идею вставки различных пакетов утилит, таких как Netron, во время обучения.

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

О Йонохабе

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

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

Если вам понравилась эта статья, подпишитесь на нас в Твиттере по адресу @yonohub, напишите нам напрямую или найдите нас в LinkedIn. Я хотел бы услышать от вас, могу ли я помочь вам или вашей команде, как использовать Yonohub.

Ссылка

[1] https://venturebeat.com/2020/06/08/facebooks-transcoder-ai-converts-code-from-one-programming-language-into-another/

[2] https://arxiv.org/pdf/2006.03511.pdf