Какие deep learning фреймворки использует VK и почему

На прошедшем в Казани 14 марта VK Tech Talks первым выступил Даниил Гаврилов с докладом на тему deep learning фреймворков и их применению.

Есть два основных фреймворка, которые сейчас используются во «ВКонтакте», и они в некоторой степени представляют собой два основных способа решить задачу: написать функцию и взять к ней производную, чтобы получить модель.

Первый из них: TensorFlow — библиотека, которая была представлена Google ещё в 2014 году. При помощи TensorFlow описывается граф вычислений, который мы компилируем где-то на бекэнде TensorFlow'а:

Какие deep learning фреймворки использует VK и почему, image #1

Вот простейший пример:

Какие deep learning фреймворки использует VK и почему, image #2

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

Также, имея этот граф, можно легко посчитать производные к тем или иным параметрам.

Плюсы и минусы статичных графов вычислений:

Какие deep learning фреймворки использует VK и почему, image #3

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

Какие deep learning фреймворки использует VK и почему, image #4

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

Если мы попытаемся написать какую-нибудь достаточно простую функцию, как в первом примере, то она будет выглядеть примерно так:

Какие deep learning фреймворки использует VK и почему, image #5
Какие deep learning фреймворки использует VK и почему, image #6
1 of 2

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

Плюсы и минусы динамических графов вычислений:

Какие deep learning фреймворки использует VK и почему, image #7

Что выходит в сравнении?

Возьмём и построим небольшой график на плоскости с осями: research по x и production по y. TensorFlow будет находиться во второй четверти координатной оси, а PyTorch в четвёртой четверти.

Какие deep learning фреймворки использует VK и почему, image #8
Какие deep learning фреймворки использует VK и почему, image #9
1 of 2

Что изменилось к 2019 году?

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

Какие deep learning фреймворки использует VK и почему, image #10

Теперь TensorFlow Eager находится рядом с PyTorch.

Какие deep learning фреймворки использует VK и почему, image #11

Torch в свою очередь представляет компиляцию своих моделей. Если мы возьмем код на Python и с помощью специальных декораторов напишем его в, так называемый, Torchscript, который представляет собой сабмодуль Python, который на самом деле представляет собой статичный граф. И мы при помощи метода самого Python'а используем статичный граф, который в последствии можем импортировать в произвольном месте.

Какие deep learning фреймворки использует VK и почему, image #12

Теперь же PyTorch JIT находится рядом с TensorFlow:

Какие deep learning фреймворки использует VK и почему, image #13

В действительности можно заметить, что обе эти библиотеки пришли примерно к одному и тому же, потому что, если мы с Вами напишем модуль на Torch'e:

Какие deep learning фреймворки использует VK и почему, image #14

После этого пишем то же самое на TensorFlow 2.0, то мы получим примерно такую же картину:

Какие deep learning фреймворки использует VK и почему, image #15

Однако, не смотря на то, что TensorFlow в 2019 году начал выглядеть, как PyTorch, происходит небольшая проблема, что внутри он все равно остаётся TensorFlow.

Какие deep learning фреймворки использует VK и почему, image #16

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

Какие deep learning фреймворки использует VK и почему, image #17

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

Какие deep learning фреймворки использует VK и почему, image #18

На самом то деле, проблема не в статичных графах, а в DSL:

Какие deep learning фреймворки использует VK и почему, image #19

Можем заметить, что PyTorch в свою очередь эти статичные графы строит с помощью методов языков и самого языка, оборачивая его в Torchscript.

Какие deep learning фреймворки использует VK и почему, image #20

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

Какие deep learning фреймворки использует VK и почему, image #21

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

Какие deep learning фреймворки использует VK и почему, image #22

Так, например выглядит то, что можно сейчас найти про Swift на TensorFlow:

Какие deep learning фреймворки использует VK и почему, image #23

Может возникнуть вопрос: зачем вообще тащить этот Swift в разработку? Google добавила возможность импортировать Python и произвольные библиотеки в Swift.

Какие deep learning фреймворки использует VK и почему, image #24

Самое главное, что Swift for TensorFlow очень активно развивается и сейчас уже есть реальные примеры того, что с ним можно сделать, и есть не просто сам Swift, который перестраивается для того, чтобы работать с TensorFlow'ом, также есть различные модели и модуль для глубокого обучения, которые написаны на Swift'e.

Какие deep learning фреймворки использует VK и почему, image #25

Вот и всё!

Посмотреть полную версию доклада можно в трансляции мероприятия:

Какие deep learning фреймворки использует VK и почему, image #26
The Brown Room
независимое интернет-издание о социальных сетях
и современных технологиях

Автор: Сергей Котов
Корректор: Арсений Метелев

242 views·2 shares