Google Developer Days (GDD) – это глобальное мероприятие, на котором демонстрируются новейшие продукты и платформы Google для разработчиков, призванные помочь вам быстро разрабатывать высококачественные приложения, расширять и сохранять активную пользовательскую базу, а также использовать инструменты для получения большего дохода. Конференция разработчиков Google 2018 прошла в Шанхае 20 и 21 сентября. ?Конференция разработчиков Google, 2018 г., самородки
21 сентября 2018 г. Юефэн Чжоу (разработчик программного обеспечения Google Brain) выступил с докладом «Distributed TensorFlow: API стратегии распределения», в этой статье будет дан обзор выступления.
Почему распределенное обучение?
Distribution Strategy API
- Простота в использовании - минимальные изменения кода
- Отличная производительность «из коробки»
- Универсальность — поддерживает различные распределенные архитектуры и API.
Обучите ResNet50 с помощью Keras (нераспределенный)
train_dataset = tf.data.Dataset(...)
eval_dataset = tf.data.Dataset(...)
model = tf.keras.applications.ReyNet50()
optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.1)
model.compile(loss = "categorcial_crossentropy",optimizer = optimizer)
model.fit(train_dataset, epochs = 10)
model.evaluate(eval_dataset)
Обучайте ResNet50 на нескольких графических процессорах с помощью Keras (доступно в TensorFlow r1.11)
train_dataset = tf.data.Dataset(...)
eval_dataset = tf.data.Dataset(...)
model = tf.keras.applications.ReyNet50()
optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.1)
strategy = tf.contrib.distribute.MirroredStrategy()
model.compile(loss = "categorcial_crossentropy",optimizer = optimizer,
distribute = strategy)
model.fit(train_dataset, epochs = 10)
model.evaluate(eval_dataset)
Для сравнения, мы можем обнаружить, что обучение на нескольких GPU может быть достигнуто путем изменения двух строк кода. то есть использоватьMirroredStrategy
API может реализовать обучение с использованием нескольких графических процессоров без изменения входного конвейера, модели и цикла обучения, а также легко поддерживает контрольные точки, метрики и сводки.
MirroredStrategy
Модифицируя всего две строки кода, можно провести обучение с использованием нескольких графических процессоров.MirroredStrategy
что ты сделал?
- параллелизм данных
- Зеркальные переменные
- ALL- reduce
- Синхронная тренировка
параллелизм данных
Зеркальные переменные
ALL - reduce
Синхронная тренировка
- Каждое устройство имеет модель (модель двухслойная)
- Каждое устройство получает часть данных и использует локальную зеркальную переменную для расчета
- Поменяйте местами градиенты с ВСЕМИ — уменьшите, просто суммируйте градиенты и используйте сумму для обновления локальной зеркальной переменной.
- Следующий шаг выполняется только при обновлении зеркала, что обеспечивает согласованность
Производительность нескольких графических процессоров
Обучайте ResNet50 с помощью keras на Cloud TPU (ожидается в TF r1.12)
TPUStrategy
Расширение до нескольких машин
Развернуть в кластере
Для развертывания кластера рекомендуется использовать kubernetes.
Collective ALL-Reduce Strategy
Коллективная операция имеет следующие характеристики:
- Автоматический выбор лучшего алгоритма, объединение градиентов
- Поддержка плагинов, которые могут добавить поддержку новых архитектур и алгоритмов.
- Отказоустойчивость (будущее)
Между тем, Collective поддерживает различные алгоритмы All-Reduce.
Ring All - Reduce
Hierarchical All - Reduce
Другие многомашинные архитектуры
Kubernetes
Количество PS может быть установлено
Новый распределенный метод обучения
TensorFlow
Сервис предоставляет интерфейс, а блокнот реализует распределенное обучение через интерфейс.
Пример кода выглядит следующим образом:
реализуется
Справочные ресурсы
Выше приведено все содержание этого выступления, надеюсь, оно будет вам полезно.
Узнайте больше о технических материалах Google Developers Conference 2018