Эта страница была переведа с помощью Cloud Translation API.
Switch to English

TensorFlow Quantum design

TensorFlow Quantum (TFQ) предназначен для задач обучения квантовой машине эпохи NISQ. Он привносит примитивы квантовых вычислений, такие как создание квантовых схем, в экосистему TensorFlow. Модели и операции, созданные с помощью TensorFlow, используют эти примитивы для создания мощных квантово-классических гибридных систем.

Используя TFQ, исследователи могут построить график TensorFlow, используя квантовый набор данных, квантовую модель и классические параметры управления. Все они представлены в виде тензоров в одном вычислительном графе. Результаты квантовых измерений, приводящих к классическим вероятностным событиям, получены TensorFlow ops. Обучение проводится с использованием стандартного API Keras . Модуль tfq.datasets позволяет исследователям экспериментировать с новыми и интересными квантовыми наборами данных.

Cirq

Cirq - это основа квантового программирования от Google. Он предоставляет все основные операции, такие как кубиты, логические элементы, схемы и измерения, для создания, изменения и запуска квантовых цепей на квантовом компьютере или моделируемом квантовом компьютере. TensorFlow Quantum использует эти примитивы Cirq для расширения TensorFlow для пакетного вычисления, построения модели и вычисления градиента. Чтобы быть эффективным с TensorFlow Quantum, неплохо быть эффективным с Cirq.

TensorFlow Квантовые примитивы

TensorFlow Quantum реализует компоненты, необходимые для интеграции TensorFlow с аппаратным обеспечением квантовых вычислений. С этой целью TFQ вводит два примитива типа данных:

  • Квантовый контур : представляет собой заданные Cirq квантовые цепи ( cirq.Circuit ) внутри TensorFlow. Создавайте пакеты цепей разного размера, аналогично пакетам с различными реальными точками данных.
  • Сумма Паули . Представляет линейные комбинации тензорных произведений операторов Паули, определенных в Cirq ( cirq.PauliSum ). Подобно схемам, создавайте группы операторов различного размера.

Фундаментальные операции

Используя примитивы квантовой схемы в tf.Tensor , tf.Tensor Quantum реализует tf.Tensor , которые обрабатывают эти схемы и выдают значимые выходные данные.

Операции TensorFlow написаны на оптимизированном C ++. Эти операции производят выборку из цепей, вычисляют ожидаемые значения и выводят состояние, созданное данными цепями. Написание гибких и производительных операций сопряжено с некоторыми трудностями:

  1. Схемы не одного размера. Для смоделированных цепей вы не можете создавать статические операции (например, tf.matmul или tf.add ), а затем заменять разные числа для цепей разных размеров. Эти операции должны учитывать динамические размеры, которые статический размер вычисляемого графа TensorFlow не позволяет.
  2. Квантовые данные могут вызвать совершенно другую структуру схемы. Это еще одна причина для поддержки динамических размеров в операциях TFQ. Квантовые данные могут представлять структурное изменение базового квантового состояния, которое представлено модификациями исходной схемы. Поскольку новые точки данных меняются местами во время выполнения, вычислительный граф TensorFlow не может быть изменен после его построения, поэтому требуется поддержка этих различных структур.
  3. cirq.Circuits похожи на вычисления графиков тем, что они представляют собой последовательность операций, а некоторые могут содержать символы / заполнители. Важно сделать это максимально совместимым с TensorFlow.

Из соображений производительности Eigen (библиотека C ++, используемая во многих операциях TensorFlow) не очень подходит для моделирования квантовых цепей. Вместо этого имитаторы цепей, используемые в эксперименте по квантовому превосходству , используются в качестве верификаторов и расширяются как основа операций TFQ (все написано с инструкциями AVX2 и SSE). Были созданы ОП с идентичными функциональными сигнатурами, которые используют физический квантовый компьютер. Переключение между имитируемым и физическим квантовым компьютером так же просто, как и изменение одной строки кода. Эти circuit_execution_ops.py расположены в circuit_execution_ops.py .

Слои

Слои TensorFlow Quantum предоставляют разработчикам выборки, ожидания и вычисления состояния с помощью интерфейса tf.keras.layers.Layer . Удобно создать слой схемы для классических параметров управления или для операций считывания. Кроме того, вы можете создать слой с высокой степенью сложности, поддерживающий пакетную схему, значение параметра пакетного управления и выполнять операции пакетного считывания. См. tfq.layers.Sample для примера.

Дифференциаторы

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

Чтобы решить эту проблему, модуль tfq.differentiators предоставляет несколько стандартных методов дифференцирования. Пользователи также могут определить свой собственный метод для вычисления градиентов - как в «реальном мире» настройки расчета ожиданий на основе выборки, так и в точном аналитическом мире. Такие методы, как конечная разница, часто бывают самыми быстрыми (настенные часы) в аналитической / точной среде Хотя медленнее (время настенных часов), более практичные методы, такие как сдвиг параметров или стохастические методы , часто более эффективны. tfq.differentiators.Differentiator и присоединяется к существующему оператору с помощью generate_differentiable_op или передается в конструктор tfq.layers.Expectation или tfq.layers.SampledExpectation . Для реализации пользовательского дифференциатора наследуйте от класса tfq.differentiators.Differentiator . Чтобы определить операцию градиента для выборки или вычисления вектора состояния, используйте tf.custom_gradient .

Datasets

По мере того как область квантовых вычислений расширяется, появляется все больше комбинаций квантовых данных и моделей, что затрудняет структурированное сравнение. Модуль tfq.datasets используется в качестве источника данных для задач квантового машинного обучения. Это обеспечивает структурированные сравнения для модели и производительности.

Есть надежда, что при большом вкладе tfq.datasets модуль tfq.datasets будет расширяться, чтобы сделать исследования более прозрачными и воспроизводимыми. Тщательно продуманные проблемы: квантовое управление, фермионное моделирование, классификация вблизи фазовых переходов, квантовое зондирование и т. Д. - все это отличные кандидаты на добавление в tfq.datasets . Чтобы предложить новый набор данных, откройте проблему GitHub .