В последние годы машинное обучение и глубокое обучение получили широкое распространение, а тензорный поток как новый фреймворк для числовых вычислений и нейронных сетей, выпущенный Google, также привлек большое внимание. существующий кластер искры.Углубленное обучение может быть выполнено без необходимости создания отдельного кластера для глубокого обучения.Чтобы получить глубокое понимание принципа и практики распределенной среды глубокого обучения искры и тензорного потока, Пегас пригласил человек на работу в Baidu вечером 10 апреля. , Tencent, г-н Ли Шупэн, который отвечал за многие исследования и разработки в области больших данных, провел онлайн-трансляцию в прямом эфире.Он в основном представил основные принципы искры и глубокого обучения. , новейшее направление развития комбинации искры и глубокого обучения, и как объединить структуру с открытым исходным кодом tensorflowonspark., построить распределенную модель обучения классификации изображений.
Ниже приводится запись обмена:
На картинке выше показана аудитория и возможная польза от этого прямого эфира, вы можете это понять.
один. Ценность больших данных
В чем ценность больших данных? Основываясь на своем предыдущем опыте работы над проектами и основных сценариях приложений больших данных в Интернете, г-н Ли примерно подытожил следующие три значения.
два. Основная проблема вычислений
В сочетании с упомянутыми выше сценариями ценности и применения больших данных мы обобщаем их в вычислительный поток: сначала посредством обработки данных и извлечения из хранилища данных получаются уточненные данные и признаки, а затем выполняется дальнейшее обучение модели для получения модель. .
Основная проблема этого вычислительного потока может быть резюмирована как функция y=f(x). На первом этапе ETL данных и запросов он в основном решает сценарии приложений, такие как стыковка источника данных, интеграция данных в реальном времени, нормализация данных и создание функций.Его вычислительная среда представлена spark, а ввод - f () \ x , выход y, который очень подходит для распределенных вычислений данных. Второй этап обучения модели в основном включает в себя моделирование модели, обратный расчет, обновление градиента, настройку гиперпараметров, оценку эффекта и др. Его вычислительная структура представлена тензорным потоком, вход — x\y, выход — f(), Подробнее основное внимание уделяется моделированию моделей и распределенным обновлениям параметров.
Далее мы представим и обрисуем в общих чертах некоторые основные принципы для двух вышеуказанных фреймворков.
три. обзор искры
1. Основная абстракция искры: RDD
Почему абстракциям нравятся RDD? Главным образом благодаря своей согласованности, эффективному параллелизму и отказоустойчивому механизму RDD скрывает сложность распространения, делая разработку программы такой же простой, как написание отдельной программы.
RDD также предоставляет некоторые операции, такие как преобразование и действие.Путем инкапсуляции бизнеса операции RDD и логики вычислений мы сформируем большой граф расчета DAG (см. Справа на рисунке ниже).
2. Экология больших данных Spark:
Эта часть посвящена экологии данных spark, включая библиотеки поддерживаемых компонентов, среды развертывания и источники данных.
3. Spark SQL и Spark Streaming:
Давайте кратко представим эти два важных компонента.Первый — искра sql.Его типичный сценарий применения — многомерный анализ OLAP.Он предоставляет абстрактный интерфейс DataFrame, который эквивалентен RDD, как показано на следующем рисунке.
Spark Streaming — это компонент обработки spark в реальном времени. Типичный сценарий его применения — обработка функций в реальном времени. Он предоставляет абстрактный интерфейс Dstreams. Интуитивно понятно, что Dstreams — это непрерывный RDD, как показано на следующем рисунке.
4. Обзор глубокого обучения
Далее давайте узнаем о глубоком обучении.
1. Модель глубокого обучения:
Первая модель — это очень классическая модель многослойного персептрона (MLP). Впервые эта модель имеет входной слой, два скрытых слоя после входного слоя и, наконец, выходной слой. Особенность этой модели в том, что она полностью связная, а перед окончательным выводом есть функция Softmax, функция которой заключается в преобразовании итоговых весов в наиболее интуитивную вероятность. Теоретически MLP, нейронная сеть со скрытыми слоями, может вместить все функции, но требует много вычислений, поэтому традиционная модель MLP не подходит для углубления структуры сети на более глубоком уровне.
Что действительно подталкивает нейронную сеть к более глубокой модели сетевой структуры, так это сверточная нейронная сеть CNN, которая обычно используется в классификации изображений и других областях.Здесь есть понятие — рецептивное поле.Так называемое рецептивное поле — это учет пространственных локальность.Более близкие поля изображения имеют более сильные корреляции, а более дальние пиксели на изображении имеют более слабые корреляции.Основываясь на рассмотрении рецептивного поля, он заменяет полностью связанные слои операциями свертки.
Особенность операции свертки заключается в том, что она может абстрагировать локальные особенности и значительно сократить объем вычислений, чтобы углубить нейронную сеть и обогатить семантическое выражение.
2. Моделирование и обучение модели Tensorflow:
После введения модели глубокого обучения давайте вернемся к нашей части тензорного потока, Во-первых, давайте разберемся, как тензорный поток выполняет моделирование модели. Как показано на рисунке ниже, X — это тензор, W и b — это переменные, Matmul, Add и ReLU — все это операторы, и, наконец, они образуют график графа нейронной сети.
Во-вторых, давайте взглянем на основную проблему обучения тензорному потоку - подгонка f(), которая в основном соответствует f() посредством вычисления обратного градиента, Цель вычисления обратного градиента - вычислить градиенты и обновить параметры, которые включают функцию потерь и Минимизируйте потери. Итак, как рассчитать градиент? В основном за счет цепного образования (см. правую часть рисунка ниже). Вывод цепочки - это всего лишь один результат прямого и обратного расчета.В процессе обучения мы обычно вычисляем в пакетах, поэтому будут задействованы batch_size и epoch.
Наконец, мы объединяем пример кода, чтобы просмотреть точки знаний, упомянутые выше:
Возьмем в качестве примера многослойную модель персептрона MLP. Во-первых, нам нужно создать модель. Определение модели — это два скрытых слоя плюс последний выходной слой. После определения модели нам нужно определить функцию потерь, здесь она это ваша метка и определение потери перекрестной энтропии для вывода прогноза, а затем выберите оптимизатор оптимизатора для обучения оптимизации,
Перед началом обучения вам нужно вызвать sess.run(init) для случайной инициализации весов.После инициализации войдите в нашу фазу обучения.
3.Распределенный механизм обучения Tensorflow:
Я только что представил, как тензорный поток определяет модель и как выполнить обратный расчет Затем, как это работает в сценариях с крупномасштабными данными?
Сам Tensorflow предоставляет некоторые параллельные механизмы.Первый — это модельный параллельный механизм, который основан на разбиении графа (как показано в левом нижнем углу рисунка выше).Он разделит большой граф на множество частей, и каждая часть будет работать на много устройств. ,рассчитать. Обычно граф разбивается, когда узел не может хранить всю модель.
В большем количестве сценариев наш объем данных будет относительно большим.В настоящее время принят механизм параллельных данных.В этом механизме тензорный поток имеет две роли: одна - сервер параметров, который отвечает за хранение и обмен параметрами, и другой — рабочий узел, отвечающий за расчеты конкретной модели. Каждый рабочий узел будет отвечать за обновление расчета параметров модели, соответствующих осколкам данных в его домене, и в то же время они будут передавать рассчитанные им градиенты на сервер параметров, а сервер параметров суммирует все градиенты. , а затем дальнейшая обратная связь со всеми узлами, в зависимости от того, как сервер параметров объединяет параметры, он делится на синхронное обновление и асинхронное обновление. Эти два метода обновления имеют свои преимущества и недостатки. Асинхронное обновление может быстрее выполнить весь расчет градиента, в то время как для синхронного обновления это может быть больше. Чтобы быстро выполнить конвергенцию, какой метод выбрать, зависит от фактического сценария приложения.
пять. Глубокое обучение на Spark
После введения только что мы знаем, что spark — это общая распределенная вычислительная среда, а глубокое обучение, представленное tensorflow, — это распределенная среда обучения моделей, которая больше фокусируется на вычислении градиента, так зачем их интегрировать? В чем смысл интеграции? Смысл в том, чтобы добиться лучшего распределенного обучения и передачи данных.
Для сценария распределенного обучения Yahoo открыла платформу с открытым исходным кодом TensorflowOnSpark, которая в основном понимает, что тензорный поток можно комбинировать со искрой для распределенного обучения. Существуют и другие механизмы, такие как CaffeOnSpark, MMLSpark (CNTK) и PaddleOnSpark.
Основная проблема, решаемая TensorflowOnSpark, заключается в использовании искры в качестве базового механизма мобилизации распределенного тензорного потока и использовании исполнителя искры для мобилизации процесса тензорного потока, поэтому нет необходимости вручную создавать сеть во время обучения тензорного потока. Он также предоставляет API, Вызвав такой API, как TFCluster.run, вы можете быстро получить распределенную среду обучения tensorflow.
Кроме того, TensorflowOnSpark также предоставляет механизм параллелизма данных на основе RDD, как показано на следующем рисунке. Этот механизм очень удобен для интеграции с существующим механизмом обработки RDD spark и может лучше интегрироваться с spark sql или spark streaming.
Затем он переходит в другое направление, называемое искровым глубоким обучением, которое было инициировано компанией-основателем искры — Data Bricks, Его основная цель — предоставить некоторые высокоуровневые API, компонентизовать базовую модель и в то же время Ожидается Совместимость с базовой структурой глубокого обучения.
Вот пример «Переноса обучения как конвейера» для понимания всеми, как показано на следующем рисунке:
TensorflowOnSpark Pipeline разработал два API, один — TFEstimator, а другой — TFModel, После предоставления этих двух вы можете напрямую интегрировать их в конвейер искрового глубокого обучения для дальнейшего обучения.
6. Практический пример TensorflowOnSpark
В последней части давайте представим практический пример. Мы хотим решить проблему классификации изображений. Здесь мы используем набор данных kaggle, называемый распознаванием цветов. Существует 5 категорий и более 4000 изображений, включая тюльпаны, подсолнухи, одуванчики, розы и ромашки. Заранее сохраните эти данные в MongoDB. Наш практический пример — это распределенное решение, включающее распределенный сбор данных, распределенное обучение и распределенную оценку.
Следующие изображения являются примерами кода для краткого понимания:
Ниже приведена демонстрация эффекта, слева — изображение, справа — результат прогнозирования модели, результат прогнозирования — значение вероятности, тип цветка определяется в соответствии с размером значения вероятности:
Вышеупомянутые шесть частей являются основным содержанием этого обмена. Далее идет время вопросов и ответов. Давайте посмотрим на вопросы.
1. Весь процесс обучения требует ручного труда? Требуется ли для повышения точности ручное вмешательство?
Г-н Ли: Весь процесс обучения не требует ручного участия. Повышение точности связано с оптимизацией гиперпараметров. Конвейер глубокого обучения предоставляет механизм поиска по сетке, который может выполнять некоторый автоматический выбор гиперпараметров.
2. Тренировочный процесс только для статических изображений? Возможна ли динамическая сцена?
Учитель Ли: Если вашей динамической сценой является видео, вы также можете превратить кадры в изображения. Классификация видео — еще одна проблема приложения, но базовый уровень также должен полагаться на существующую модель классификации изображений. Сценарии применения самой классификации изображений очень широкий, например, в сочетании с дронами.
3. Подходит ли этот фреймворк для автоматической классификации текста?
Г-н Ли: Фреймворк также подходит для других областей, таких как классификация текста. Разница заключается в схеме данных и модели. Процесс обучения включает в себя некоторые процессы нормализации изображения, но нет сопоставления с шаблоном. Вы можете понять, что все извлечение признаков автоматически выполняется методом глубокого обучения.
Выше приведено все содержание этой прямой онлайн-трансляции, Я считаю, что благодаря этому исследованию я должен получить более подробное и глубокое понимание алгоритмов глубокого обучения и машин. Друзья, которые хотят узнать все больше и больше подробностей, вы можете обратить внимание на сервисный номер: FMI Pegasus Network, нажмите на строку меню Pegasus Live, вы можете узнать.