1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors_Qihoo360-tensornet

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

TensorNet — это распределённая обучающая среда, построенная на основе TensorFlow и предназначенная для оптимизации в таких масштабных разреженных сценариях, как рекламные рекомендации. Цель TensorNet — предоставить разработчикам, использующим TensorFlow, возможность быстро и удобно обучать сверхбольшие модели с разреженными параметрами, превышающими сотни миллиардов.

Архитектура обучения TensorNet

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

  1. TensorNet использует разные серверы параметров для управления разреженными и плотными параметрами отдельно.
  2. В TensorNet нет отдельных узлов сервера параметров. Каждый рабочий узел поддерживает разреженный и плотный сервер параметров. Это избавляет разработчиков от необходимости управлять узлами ps и worker, что упрощает процесс разработки.
  3. В TensorNet разреженные параметры распределяются по различным узлам с помощью распределённой хеш-таблицы на основе хэш-значений. Этот подход более гибкий, чем метод, требующий от разработчика вручную распределять тензоры по узлам ps в TensorFlow. Он не только снижает вероятность возникновения горячих точек в сети, но и облегчает работу разработчиков.
  4. В TensorNet все плотные параметры модели объединяются, а затем распределённо разделяются между различными машинами. При каждом извлечении и отправке параметров выполняется только один сетевой запрос. По сравнению с методом, при котором каждый тензор требует отдельного сетевого запроса в TensorFlow, это значительно сокращает количество сетевых запросов и ускоряет обучение модели.

Оптимизация обучения TensorNet в автономном режиме

Основная оптимизация TensorNet заключается в минимизации встраивания модели.

Как показано на рисунке, для простейшей модели wide&deep, если в рекламной системе есть 3 миллиарда пользователей, необходимо определить матрицу внедрения размером 3 миллиарда измерений. Во время обучения модели необходимо выполнить операцию embedding_lookup на этой матрице размером 3 миллиарда, чтобы получить информацию о внедрении текущего пакета пользователей, а затем выполнить более сложные операции над внедрением.

Очевидно, что матрица внедрения слишком велика для разреженного сценария с высоким измерением, и она занимает много памяти. Когда признаков слишком много, одна машина не может вместить всю модель.

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

На рисунке показано, что при размере batch_size, равном 1024, для признака userid в TensorNet требуется определить матрицу внедрения с размером, равным максимальному количеству пользователей в текущем пакете. Основные шаги обработки TensorNet во время обучения модели следующие:

  • При определении модели размер матрицы внедрения для признака userid устанавливается равным максимальному значению количества пользователей в одном пакете.
  • Во время обучения модели получают всех пользователей в текущем пакете.
  • Пользователи сортируются, и каждому пользователю присваивается индекс в порядке их появления. Индекс начинается с 0, как показано на рисунке «виртуальный разреженный признак».
  • Затем из сервера параметров извлекается соответствующий вектор внедрения для каждого пользователя, и он помещается в матрицу внедрения в соответствии с его индексом.
  • «Виртуальный разреженный признак» используется в качестве входных данных для модели после преобразования.

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

Оптимизация вывода TensorNet

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

При использовании TensorNet для построения модели её можно разделить на две части, как показано на рисунке. Часть embedding_lookup_graph используется только во время автономного обучения, а часть inference_graph используется во время онлайн-вывода. Конкретные шаги см. в следующих документах: подготовка к выводу — разделение модели, развёртывание tf-графа в режиме онлайн с использованием XLA, экспорт разреженной матрицы внедрения признаков.

Документы

  1. Компиляция и развёртывание.
  2. Быстрый старт с wide deep.
  3. Запуск в кластере.
  4. Подготовка к выводу — разделение модели.
  5. Развёртывание tf-графа в режиме онлайн с использованием XLA.
  6. Экспорт разреженной матрицы внедрения признаков.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

TensorNet — это распределённая обучающая среда, оптимизированная для масштабных разреженных сценариев, таких как рекламные рекомендации. Она построена на основе TensorFlow. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors_Qihoo360-tensornet.git
git@api.gitlife.ru:oschina-mirror/mirrors_Qihoo360-tensornet.git
oschina-mirror
mirrors_Qihoo360-tensornet
mirrors_Qihoo360-tensornet
master