🌍 Вы также можете прочитать эту статью на турецком языке - нажмите здесь. А для последующих руководств по TPU в Google Colab - нажмите здесь!

В 2015 году Google основал свой первый центр TPU для поддержки таких продуктов, как Google Calls, Translation, Photos и Gmail. Чтобы сделать эту технологию доступной для всех специалистов по обработке данных и разработчиков, вскоре после этого они выпустили Cloud TPU, призванный предоставить простой в использовании, масштабируемый и мощный облачный процессор для запуска передовых моделей в облаке.

По словам команды Google, создавшей бесплатный TPU от Colab:

«Искусственные нейронные сети, основанные на приложениях AI, используемых для обучения TPU, в 15 и 30 раз быстрее, чем процессоры и графические процессоры!»

Но прежде чем мы перейдем к сравнению TPU с процессорами и графическими процессорами и реализацией, давайте определим TPU более конкретно.

Что такое ТПУ?

TPU расшифровывается как Tensor Processing Unit. Он состоит из четырех независимых фишек. Каждый чип состоит из двух вычислительных ядер, называемых тензорными ядрами, которые включают в себя скалярные, векторные и матричные блоки (MXU).

Кроме того, было унифицировано каждое тензорное ядро ​​с памятью на 8 ГБ (HBM). Каждое из 8 ядер TPU может независимо выполнять учетные записи пользователей (операции XLA). Пути межсоединений с высокой пропускной способностью позволяют микросхемам напрямую связываться друг с другом.

XLA - это экспериментальный компилятор JIT (Just in Time) для бэкэнда TensorFlow. Наиболее важным отличием и особенностью от ЦП (центральных процессоров) и графических процессоров (графических процессоров) является то, что оборудование TPU специально разработано для линейной алгебры, которая является строительным блоком глубокого обучения. Иногда это называют матричной или тензорной машиной.

Теперь, когда вы немного лучше понимаете, что такое TPU, давайте посмотрим, как он сравнивается с другими распространенными процессорами.

Сравнение CPU, GPU и TPU: когда следует использовать каждый из них?

🔮 CPU:

  • Быстрое прототипирование, требующее максимальной гибкости
  • Простые модели, которые не нужно много тренировать
  • Небольшие модели с небольшими эффективными размерами кластера
  • В моделях преобладают специальные операции TensorFlow, написанные на C ++
  • Доступные модели с ограниченным вводом / выводом или пропускной способностью сети хост-системы

🔮 GPU:

  • Модели TensorFlow с внешним инструментом, требующим высокой вычислительной мощности
  • Слишком ресурсоемкие модели или модели, которые слишком сложно изменить
  • Модели со значительным количеством специальных операций TensorFlow, которые должны хотя бы частично выполняться в процессорах.
  • Модели операций TensorFlow недоступны в Cloud TPU (см. Список доступных операций TensorFlow)
  • Он используется в более крупных моделях с большим эффективным размером кластера.

🔮 ТПУ:

  • Модели с расчетами плотных матриц
  • Модели без специальных операций TensorFlow в основном цикле обучения
  • Модели, которым нужно тренироваться неделями или месяцами
  • Очень большие модели с очень большими эффективными размерами кластера

Подпишитесь на Deep Learning Weekly и присоединяйтесь к более чем 14 000 ваших коллег. Еженедельный доступ к последним новостям индустрии глубокого обучения, исследованиям, библиотекам кода, руководствам и многому другому.

Бесплатная служба Google Colab TPU 🚀

Использовать Google Colab TPU довольно просто. Используя Keras, давайте попробуем несколько разных классических примеров. И тогда мы сможем оценить результаты!

Используя библиотеку TensorFlow + Keras для оценки производительности Google Colab TPU, мы можем рассмотреть два хорошо известных набора данных и основные методы глубокого обучения:

🔵 Сверточная нейронная сеть (CNN), обученная на наборе данных MNIST

🔵 Визуализация и развертывание CNN (MNIST), обученной TPU, с помощью ML Engine

Вы можете найти все исходные коды в конце этого поста, а также взглянуть на визуализацию и развертывание моделей!

Сначала вам нужно будет выбрать TPU в Google Colab на вкладке Время выполнения. Нажав на Изменить тип среды выполнения, вы сможете выбрать TPU в раскрывающемся меню «Аппаратный ускоритель».

Базовые функции TensorFlow, необходимые для использования TPU

Во-первых, вам нужно создать модель TPU с помощью Keras:

tf.contrib.tpu.keras_to_tpu_model:

Оценщик TPU:

Оценщики следует добавлять на уровне модели TensorFlow. Стандартные оценщики могут запускать модели на процессорах и графических процессорах. Но вам нужно использовать tf.contrib.tpu.TPUEstimator для обучения модели с помощью TPU.

Рабочие конфигурации TPU:

Оптимизация TPU:

🔵 Сверточная нейронная сеть: CNN обучена на наборе данных MNIST

Изучая основы глубокого обучения, рекомендуется сравнить время обучения на хорошо известном наборе данных (в данном случае MNIST) с простой моделью CNN - относительно распространенным вводным проектом для начинающих - с графическим процессором Google Colab и TPU.

🏆 В конце этого примера вы можете видеть, что каждая эпоха занимает всего 3 секунды при использовании TPU по сравнению с графическим процессором Google Colab (Tesla K80), где каждая эпоха занимает 11 секунд. Оказывается, наша модель обучается примерно в 4 раза быстрее.

После завершения установки необходимой библиотеки вам нужно будет выполнить следующий процесс адресации TPU:

Когда процесс завершится гладко, вы должны увидеть:

Found TPU at: grpc://10.41.118.242:8470

Мы завершаем загрузку набора данных MNIST, s разделение данных на обучение и тестирование, установку параметров, создание модели глубокого обучения и методы оптимизации.

Примечание. В этом руководстве я сосредоточился исключительно на том, как использовать TPU в Google Colab - эти другие процессы, хотя, конечно, важны, здесь мы не будем рассматривать Почта.

Затем необходимо использовать tf.contrib.tpu.keras_to_tpu_model, чтобы сделать модель пригодной для использования TPU во время обучения.

Чтобы просмотреть структуру модели, которая будет работать в TPU Google Colab:

tpu_model.summary()

Когда мы начинаем тренировочный процесс:

Чтобы сохранить веса обученной модели:

tpu_model.save_weights('./MNIST_TPU_1024.h5', overwrite=True)

🔵 Визуализация и развертывание CNN, обученной TPU (MNIST), с помощью ML Engine

Здесь мы видим, что точность и потери для наборов для обучения и проверки достигают хороших результатов за очень короткое время. Кроме того, 168 контрольных цифр выборки из 10000 привели к неверным прогнозам и показаны красным цветом и отсортированы первыми на втором изображении ниже.

Мы рассмотрели очень быструю реализацию того, что мы можем делать с TPU в Google Colab. На следующем этапе мы можем попытаться обучить более крупные модели с большими наборами данных, чтобы полностью использовать возможности TPU.

🌈 Бесплатный доступ к TPU Google Colab действительно открыл для себя совершенно новый мир глубокого обучения!

🌊 Исходные коды



Существуют и другие распространенные модели и реализации ноутбуков Colab, которые можно использовать с TPU.

Они включают:

🔵 Сверточная нейронная сеть (CNN), обученная на наборе данных Fashion MNIST

🔸 Если аналогичное сравнение скорости будет выполнено для Fashion MNIST, ситуация не будет сильно отличаться!

Каждая эпоха занимает примерно 7 секунд, а результат составляет всего 102 секунды для обучения 15 эпох с TPU.

С графическим процессором это занимает 196 секунд, а с центральным процессором - 11 164 секунды (~ 3 часа). Это показывает, что TPU примерно в 2 раза быстрее, чем GPU, и в 110 раз быстрее, чем CPU.



🔵 Сеть Долгосрочная память (LSTM), обученная на наборе данных Шекспира



🔵 Визуализация и развертывание CNN, обученной TPU (MNIST), с помощью ML Engine



🐰 Полный репозиторий GitHub для этого проекта:



«ayyucekizrak / Udemy_DerinOgrenmeyeGiris
Udemy Derin Örenmeye Giriş Kursunun Uygulamaları ve Daha Fazlası - ayyucekizrak / Udemy_DerinOgrenmeyeGithub.com











Спасибо Мартину Гёрнеру за то, что позволили нам опубликовать работу на турецком! (Команда переводчиков: Башак Булуз, Явуз Комечоглу и я)

Если вы хотите обучить ИНС с помощью TPU Google Colab, вот еще один чрезвычайно полезный ресурс:



🎉 Благодарности и ссылки

Я хотел бы поблагодарить Явуза Комечоглу за его вклад. 🙏

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

Независимая редакция, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по обработке данных и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.