Google AI представила библиотеку TensorNetwork для эффективных вычислений в квантовых системах

С помощью новой библиотеки TensorNetworks от GoogleAI стало общедоступным использование тензорных сетей, которые играют большую роль в современной квантовой физике. Однако, помимо применения в квантовых системах, тензорные сети все чаще находят применение в машинном обучении. Библиотека была разработана в сотрудничестве с институтом теоретической физики Периметр и компании X. TensorNetwork использует TensorFlow в качестве движка и оптимизирован для GPU. Это может позволяет ускорить вычисления до 100x по сравнению с вычислениями на CPU.

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

Разработчики библиотеки представили ее работу в двух статьях. В первой статье представлен API библиотеки и обзор тензорных сетей для аудитории, не относящейся к физикам. Во второй статье представлен конкретный случай использования в физике, демонстрируя ускорение, получаемое при использовании GPU.

Что такое тензорные сети?

Схематическое обозначение тензоров
Схематическое обозначение тензоров

Тензоры — это многомерные массивы, классифицированные по иерархии в соответствии с их порядком: например, обычное число — это тензор нулевого порядка (также известный как скаляр), вектор — тензор первого порядка, матрица — тензор второго порядка, и так далее. В то время как тензоры низкого порядка легко могут быть представлены явным массивом чисел или математическим символом, таким как Tijnklm(где число индексов представляет порядок тензора), эта запись становится очень громоздкой, когда мы начинаем говорить о тензорах высокого порядка. В этот момент полезно начать использовать схематическое обозначение, где просто рисуется круг (или какая-либо другая фигура) с количеством линий или ножек, выходящих из него — количество ножек совпадает с порядком тензора. В этих обозначениях скаляр — это просто круг, вектор имеет один выход, матрица — два выхода и т.д. Каждая ветвь тензора также имеет размерность, равную размерности этой ножки (этого измерения). Например, вектор, представляющий скорость объекта в пространстве, будет трехмерным тензором первого порядка. Преимущество представления тензоров таким способом заключается в кратком кодировании математических операций, например, умножении матрицы на вектор для создания другого вектора или умножении двух векторов на скаляр.

Тензорные сети на практике

Тензор высокого порядка T представлен через множество тензоров низкого порядка в тензорной сети Metrix Product State
Тензор высокого порядка T представлен через множество тензоров низкого порядка в тензорной сети Matrix Product State

Рассмотрим коллекцию черно-белых изображений, каждое из которых можно рассматривать как список значений N пикселей. Один пиксель одного изображения может быть закодирован в двумерный вектор, и, комбинируя эти коды пикселей вместе, мы можем создать 2N -мерное кодирование всего изображения. Мы можем преобразовать этот многомерный вектор в Nмерный тензор, а затем сложим все тензоры в нашей коллекции изображений, чтобы получить полный тензор Ti1, i2, …, iN.

Это очень затратно: кодирование изображений примерно с 50 пикселями уже заняло бы петабайты памяти. Вот где приходят на помощь тензорные сети. Вместо того, чтобы непосредственно сохранять или манипулировать тензором T, мы вместо этого представляем T как сжатие множества меньших составляющих тензоров в форме тензорной сети. Это оказывается намного более эффективно. Например, популярная сеть Matrix Product State (MPS) будет описывать T, как N намного меньших тензоров, так что общее число параметров будет только линейным по N, а не экспоненциальным.

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

Производительность при использовании в физике

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

Аппроксимация квантовых состояний является типичным вариантом использования тензорных сетей в физике и хорошо подходит для иллюстрации возможностей библиотеки TensorNetwork. Во второй статье разработчиками описан алгоритм древовидной тензорной сети (TTN) для аппроксимации основного состояния периодической квантовой спиновой цепочки (1D) или решеточной модели на тонком торе (2D) и реализуем алгоритм с использованием TensorNetwork. При сравнении использования CPU и GPU, наблюдается значительное ускорение вычислений, вплоть до 100 раз, при использовании GPU и библиотеки TensorNetwork.

python data visualization

Обзор пакетов для визуализации данных на Python

Есть много способов построения графиков на Python, но какой из них лучше? Когда вы делаете визуализацию, важно задать несколько вопросов о цели построения графика: пытаетесь ли вы создать первичное представление ваших данных для дальнейшего анализа, или пытаетесь произвести впечатление на презентации? В этой статье…
javascript библиотеки машинное обучение

11 JavaScript-библиотек для машинного обучения

Javascript-библиотеки используют для определения, обучения и запуска моделей глубокого обучения, визуализации данных полностью в браузере. Они значительно облегчают жизнь разработчику. Ниже представлены изящные библиотеки, которые объединяют Javascript, машинное обучение, глубокие нейронные сети и даже NLP. 1. Brain.js Brain.js — Javascript библиотека для искусственных нейронных…
tensorflow 2.0

Google объявила о выходе TensorFlow 2.0

Google анонсировала TensorFlow 2.0 — новую версию программной библиотеки для создания моделей машинного обучения. Компания опубликовала подробный пост с описанием обновлений фреймворка. Итак, какие улучшения предлагает TensorFlow 2.0? Новая архитектура С момента создания в TensorFlow интегрируется ряд приложений и библиотек (смотри рисунок ниже). Теперь…

Библиотека моделей обработки языка PyText от Facebook теперь доступна open source

Команда Facebook AI Research открыла исходный код PyText — библиотеки для создания моделей обработки естественного языка. Социальная сеть ежедневно применяет модели, разработанные с помощью фреймворка, для работы с миллиардами прогнозов. PyText позволил повысить точность диалоговых моделей Facebook на 10%. «Мы планируем использовать PyText в качестве нашей…
azure ml туториал что это

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

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

TensorFlow туториал. Часть 3: работа с данными

Пора переходить к работе с реальными данными! Мы будем работать с дорожными знаками Бельгии. Дорожный трафик — понятная тема, но не помешает уточнить, какие данные включены в датасет, перед тем как приступить к программированию. Перед прочтением статьи рекомендуем изучить: TensorFlow туториал. Часть 1: тензоры…
tensorflow hub библиотека

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

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

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

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