Facebook представила фреймворк PyTorch BigGraph

pytorch bigraph

На конференции SysML компания Facebook представила PyTorch BigGraph (PBG) — распределенную систему для обучения векторного представления графов. Особенность этой системы в том, что она рассчитана на большие графы, содержащие до миллиардов вершин и триллионов ребер.

Документация по фреймворку находится в открытом доступе.

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

PBG позволяет быстрее создавать векторные представления графовых структур для больших графов в моделях PyTorch. Метод обучения векторных представлений для графов похож на аналогичный для текста — word2vec. Обучение происходит таким образом, чтобы пары вершин, между которыми есть ребра, находились друг к другу ближе, чем не соединенные ребром вершины.

Проблема

Большинство методов построения векторных представлений не подходят для применения к очень большим графовым структурам. К примеру, для модели с двумя миллиардами узлов и сотней параметров векторного представления на узел (выраженных числами с плавающей точкой), потребовалось 800 Гб памяти только для хранения параметров, поэтому требования стандартных методов превышают объем памяти типичных облачных серверов. Для решения этой проблемы и был разработан BigGraph.

pytorch biggraph
Визуализация модели

Принцип работы

PBG использует четыре подхода:

  • Разбиение графа. Теперь модель не потребуется выгружать в память полностью.
  • Многопоточные вычисления на каждой машине.
  • Распределенное выполнение на нескольких машинах (необязательно), все из них работают над разными частями графа.
  • Порционное создание выборки отрицательных ребер для каждого положительного ребра. Позволяет обрабатывать > 1 миллиона ребер/сек на каждой машине.

PBG произвольно делит структуру графа на P разделов с таким объемом, чтобы два раздела могли поместиться в памяти.embedding

Если ребро (edge) имеет начальную вершину (node) в разделе p1 и конечную вершину в разделе p2, то он помещается в ячейку (bucket) (p1, p2). Затем ребра графа разбиваются на P2 ячеек в зависимости от их начальной и конечной вершин. После разделения вершин и ребер обучение может выполняться для одной ячейки за раз. Обучение ячейки (p1, p2) требует только того, чтобы векторные представления для разделов p1 и p2 были сохранены в памяти. Структура PBG гарантирует, что у ячеек есть обученное ранее векторное представление хотя бы для одного из разделов.

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

ludwig uber

Uber открыла доступ к своему фреймворку глубокого обучения Ludwig

Компания Uber открыла доступ к фреймворку глубокого обучения Ludwig, который позволяет создавать модели без написания кода. Ludwig создан на базе TensorFlow и должен помочь опытным разработчикам быстрее улучшать модели, а также сделать машинное обучение доступным для начинающих специалистов. Разработчики Uber создавали инструмент в течение последних двух лет, чтобы…

Hotels-50K: датасет с миллионом фотографий номеров отелей

Датасет Hotels-50K содержит миллион изображений из 50 000 отелей в разных странах. Датасет c номерами отелей создан с целью сопоставлять фотографии со снимками жертв human traffic (торговли людьми) из незаконной онлайн-рекламы, и помогать полиции определять, в каком отеле находятся похищенные люди. Датасет пригодится и для…
EmoPy распознавание эмоций

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

EmoPy — набор инструментов для распознавания эмоций на Python, который содержит несколько моделей с открытым исходным кодом, показывающих точность до 92% для трех эмоций и 68% для семи. Модели предлагается использовать в качестве предобученных и повышать точность для конкретного датасета.  По словам разработчиков, цель…
выбор признаков нейронной сети питон

Open source инструмент на Python для выбора признаков нейронной сети

Поиск и выбор наиболее полезных признаков в датасете — одна из наиболее важных частей машинного обучения. Ненужные признаки уменьшают скорость обучения, ухудшают возможности интерпретации результатов и, что самое важное, уменьшают производительность работы.  Перевод статьи «A Feature Selection Tool for Machine Learning in Python» by William…
kaggle competition

Как попасть в топ 2% соревнования Kaggle

Статья основана на реальном опыте участия в соревнованиях на Kaggle, автор — Abhay Pawar. Ссылка на оригинал в подвале статьи.  Участвовать в соревнованиях Kaggle весело и захватывающе! За последние пару лет я разработал несколько простых способов создания более совершенных моделей машинного обучения. Эти простые, но…

BERT от Google AI: open source модель обработки естественного языка

Разработчики Google AI выложили в открытый доступ исходный код BERT (Bidirectional Encoder Representations from Transformers). Модель предназначена для предварительного обучения алгоритмов обработки естественного языка. После тренировки на больших наборах данных, модели смогут лучше справляться с последующими специфическими задачами. Особенности BERT В блоге компании отмечают,…
azure ml туториал что это

Azure ML туториал: создание простой модели машинного обучения

Перед вами пошаговое руководство по созданию модели машинного обучения с использованием Microsoft Azure ML, перевод статьи «Tutorial – Build a simple Machine Learning Model using AzureML«. Ссылка на оригинал — в подвале статьи. Насколько тяжело построить модель машинного обучения на языках программирования R или Python? Для…
pytorch туториал

Туториал по PyTorch: от установки до готовой нейронной сети

Если вы уже пробовали создавать собственные глубокие нейронные сети с помощью TensorFlow и Keras, то, вероятно, знакомы с чувством разочарования при отлаживании этих библиотек. Хотя они имеют API на Python, всё еще трудно выяснить, что именно пошло не так при ошибке. Они также плохо…
как создать чат бота на python

Как создать чат-бота с нуля на Python: подробная инструкция

Аналитики Gartner утверждают, что к 2020 году 85% взаимодействий клиентов с сервисами сведется к общению с чат-ботами. В 2018 году они уже обрабатывают около 30% операций. В этой статье мы расскажем, как создать своего чат-бота на Python. Возможно, вы слышали о Duolingo: популярном приложении для изучения иностранных языков, в…
lidar

Как стирается граница между цифровой камерой и лидаром

Когда Ouster начали разрабатывать свой лидар три года назад, было очевидно, что исследования в сфере глубокого обучения для камер превзошли исследования по лидарам. Данные лидара обладают невероятными преимуществами: богатая пространственная информация и высокая светочувствительность. Однако им не хватает исходного разрешения и эффективной структуры массива…
Stock market prediction python

Анализ данных на Python — построение модели фондового рынка со Stocker

В Data Science легко увлечься разнообразием данных и бесплатными инструментами с открытым исходным кодом. Проведя немного времени с финансовой библиотекой quandl и библиотекой прогнозирования Prophet, я решил попробовать исследовать несколько простых курсов акций. Парочка дней и 1000 строк кода Python привели меня к полноценному…
DeepLabCut

DeepLabCut — новый инструмент для оценки позы и захвата движений

Исследователи из Гарварда разработали DeepLabCut — инструмент для автоматической оценки позы и разметки движущихся частей тела животных и людей. Обычно, чтобы отследить движения, исследователи записывают видео и вручную покадрово размечают изображения. В новом подходе учёные предлагают технологию для автоматизации и ускорения этого процесса. Идея состояла в…
введение в машинное обучение примеры и модели для новичков

Введение в машинное обучение

Перевод статьи разработчика алгоритмов машинного обучения, бизнес-консультанта и популярного автора Ганта Лаборде «Machine Learning: from Zero to Hero».  Начнешь c “Зачем?”, придешь к “Я готов!” Если вы мало знаете об основах машинного обучения, то эта статья как раз для вас. Я буду постепенно излагать…
tensorflow hub библиотека

Введение в TensorFlow Hub: библиотеку модулей машинного обучения для TensorFlow

Репозиторий с общим кодом — одна из фундаментальных идей в разработке программного обеспечения. Библиотеки делают программистов гораздо более эффективными. В некотором смысле они даже меняют сам процесс решения проблем программирования. Как выглядит идеальная библиотека с точки зрения разработчика алгоритмов машинного обучения? Мы хотим делиться предобученными моделями.…
NLP Architeckt

NLP Architect от Intel: open source библиотека моделей обработки естественного языка

Вы заметили, что всё больше компаний ставят на свой сайт виджет с ботом? Чат-боты сегодня повсюду. И это только один из многих примеров применения технологий обработки естественного языка (Natural Language Processing, NLP) и понимания естественного языка (Natural Language Understanding, NLU). Потенциал NLP и NLU кажется безграничным. Сейчас…