В этой статье мы рассмотрим некоторые ключевые расширения и библиотеки в TensorFlow 2.x (TF 2.x). Это будет включать наборы данных TF, концентратор TF, XLA, оптимизацию модели, TensorBoard, вероятность TF, нейронное структурированное обучение, обслуживание TF, объединение TF, графику TF и ​​MLIR.

Наборы данных TensorFlow

Он поддерживает загрузку многих популярных наборов данных. Для получения полного списка ознакомьтесь с набором данных TF category. Вот пример кода для загрузки данных MNINST.

import tensorflow as tf
import tensorflow_datasets as tfds
import tensorflow.data as tfd

# Construct a tf.data.Dataset
# Data loaded into ~/tensorflow_datasets/mnist
ds = tfds.load('mnist', split='train', shuffle_files=True)

# Build your input pipeline
ds = ds.shuffle(1024).batch(32).prefetch(tfd.experimental.AUTOTUNE)
for example in ds.take(1):
    image, label = example["image"], example["label"]

assert image.shape == (32, 28, 28, 1)
assert label.shape == (32,)

TensorFlow Hub

TensorFlow Hub - это репозиторий обученных моделей машинного обучения, таких как BERT, для точной настройки и развертывания моделей. Чтобы увидеть полный список, посетите TF hub. В приведенном ниже коде мы загружаем модель для встраивания текста на основе токенов, обученную на английском корпусе Google News 200B.

#pip install --upgrade tensorflow_hub
import tensorflow_hub as hub

model = hub.KerasLayer("https://tfhub.dev/google/nnlm-en-dim128/2")
embeddings = model(["The rain in Spain.", "falls",
                      "mainly", "In the plain!"])

assert embeddings.shape == [4, 128]

Оптимизация модели

Обученная модель может быть дополнительно оптимизирована без потери точности или с незначительной потерей точности, используя обрезку веса и / или квантование. Приведенный ниже код оптимизирует уже обученную «модель» с помощью сокращения веса.

Объем памяти также можно уменьшить с помощью кластеризации весов. Сначала он группирует веса каждого слоя в N кластеров, а затем разделяет значение центроида кластера для всех весов, принадлежащих кластеру.

TensorBoard

TensorBoard - это инструмент визуализации для приложения TF. Он отображает скалярные метрики, зарегистрированные приложением (например, точность и потери), входные данные, график вычислений, а также распределения и гистограммы обучаемых параметров.

В приложении TF мы храним информацию в файлах, которые можно прочитать из приложения tenorboard.

Вероятность TensorFlow (TFP)

TFP предоставляет библиотеку для моделирования вероятностных распределений, вариационного вывода, цепи Маркова Монте-Карло и т. Д.

В приведенном ниже коде выполняется выборка 100K данных из нормального распределения и манипулирование ими для выборки 100K данных распределения Бернулли. Собрав данные, код подбирает распределение Бернулли с этими данными и находит параметры модели.

mport tensorflow as tf
import tensorflow_probability as tfp

# Pretend to load synthetic data set.
features = tfp.distributions.Normal(loc=0., scale=1.).sample(int(100e3))
labels = tfp.distributions.Bernoulli(logits=1.618 * features).sample()

# Specify model.
model = tfp.glm.Bernoulli()

# Fit model given data.
coeffs, linear_response, is_converged, num_iter = tfp.glm.fit(
    model_matrix=features[:, tf.newaxis],
    response=tf.cast(labels, dtype=tf.float32),
    model=model)
# ==> coeffs is approximately [1.618] (We're golden!)

Нейронно-структурированное обучение (NSL)

В компьютерном зрении информация кодируется в изображении. В НЛП он содержится в тексте. Однако существует обширная информация, которую можно закодировать в виде графика для описания взаимосвязей между выборками. Набор данных Cora - это граф цитирования, в котором узлы представляют статьи машинного обучения, а края - ссылки между парами статей. Мы можем использовать как узлы (содержание статьи), так и ссылку (цитирование), чтобы лучше отнести каждую статью к одной из семи категорий. На диаграмме ниже мы хотим, чтобы функции встраивания между соседями были похожими.

Например, мы можем ввести потерю соседей, чтобы компенсировать разницу (D) вложений соседей.

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

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

Обслуживание TensorFlow (TFS)

TensorFlow Serving обслуживает запросы от клиента в производственных средах для моделей машинного обучения. Приведенные ниже команды создают докер с TFS при развертывании модели для y = x / 2 + 2.

Ниже SavedModel «my_model» обслуживается через порт 8501.

Федеративный TensorFlow (TFF)

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

В федеративном обучении клиентские устройства вычисляют обновления SGD на основе локально собранных данных. Обновления модели собираются и объединяются на удаленном сервере вместо того, чтобы отправлять на этот сервер более конфиденциальные данные пользователя. Наконец, агрегированная модель отправляется обратно клиенту.

Графика Tensorflow

Tensorflow Graphics предоставляет дифференцируемую графику и геометрические слои (например, камеры, модели отражательной способности, пространственные преобразования, свертки сетки), которые можно использовать для обучения моделей машинного обучения. И мы можем использовать 3D TensorBoard для визуализации 3D-рендеринга.

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

Ниже приведен пример кода для рендеринга объекта с использованием TensorFlow Graphics.

MLIR

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

XLA

XLA, JIT-компилятор, берет графы вычислений и выполняет оптимизацию при объединении и удалении избыточных вычислительных узлов. Затем он компилирует их в последовательности ядер для целевых устройств с дальнейшей оптимизацией. Например, в устройствах с графическим процессором XLA объединяет вычислительные узлы, которые могут выполняться за одну операцию с графическим процессором.

Источники и ссылки

Компьютерные коды в этой статье заимствованы или изменены из Руководства и документов TF.

Отказ от ответственности

Эта статья представляет собой обзор расширений и библиотек TF. Однако дизайн ТФ постоянно меняется. Пожалуйста, обратитесь к последней документации для получения подробных сведений об API и реализациях.