Перейти до основного вмісту

Наближена квантова компіляція з тензорними мережами (AQC-Tensor)

Аддон Qiskit для наближеної квантової компіляції з тензорними мережами (AQC-Tensor) дозволяє компілювати початкову частину схеми в майже еквівалентне наближення цієї схеми, але зі значно меншою кількістю шарів. Це досягається за допомогою тензорних мереж методом, описаним у [1]. Основна область застосування — схеми, що моделюють часову еволюцію, але метод може бути застосовний до будь-якого класу схем, які мають доступ до:

  1. Хорошого проміжного стану, відомого як «цільовий стан», що може бути отриманий за допомогою симуляції тензорних мереж; і,
  2. Хорошої схеми, яка готує наближення до цільового стану, але з меншою кількістю шарів при компіляції на цільовий апаратний пристрій.

Техніка генерує схему-анзац на основі більшої цільової схеми, яку користувач зрештою хоче виконати на QPU. Це досягається спочатку симуляцією певної частини цільової схеми методами тензорних мереж та отриманням точного опису проміжного стану, який апроксимуватиме схема-анзац. Після знаходження цього проміжного стану він використовується як функція вартості для оптимізації параметрів схеми-анзацу. Після завершення оптимізації решта цільової схеми додається до анзацу та виконується на квантовому залізі.

Встановлення пакету AQC-Tensor

Є два способи встановити пакет AQC-Tensor: через PyPI або зібравши з вихідного коду. Рекомендується встановлювати ці пакети у віртуальне середовище, щоб забезпечити відокремлення залежностей пакетів.

Встановлення з PyPI

Найпростіший спосіб встановити пакет AQC-Tensor — через PyPI. Для використання пакету потрібно також встановити принаймні один бекенд тензорних мереж. Наступний фрагмент коду встановить аддон разом із quimb (для підтримки тензорних мереж) та jax (для автоматичного диференціювання). Якщо цікаво, перегляньте пакет на GitHub

pip install 'qiskit-addon-aqc-tensor[quimb-jax]'

Встановлення з вихідного коду

Натисни тут, щоб дізнатись, як встановити цей пакет вручну.

Якщо ти хочеш зробити внесок у цей пакет або встановити його вручну, спочатку клонуй репозиторій:

git clone git clone git@github.com:Qiskit/qiskit-addon-aqc-tensor.git

і встанови пакет через pip. Якщо плануєш запускати навчальні матеріали з репозиторію пакету, встанови також залежності для ноутбуків. Якщо плануєш розробляти в репозиторії, можливо, захочеш встановити і залежності dev.

pip install tox jupyterlab -e '.[notebook-dependencies,dev]'

Теоретичне підґрунтя

Процедура AQC-Tensor детально описана в [1]. У цьому розділі наведено огляд техніки.

Діаграма, що зображує процедуру наближеної квантової компіляції

Загалом AQC-Tensor потребує трьох речей на вході:

  1. Опис цільового стану у вигляді тензорної мережі. Його можна отримати симулюючи схему на симуляторі тензорних мереж, або він може бути отриманий іншим способом (наприклад, виконанням часової еволюції на матрично-продуктному стані за допомогою часозалежного варіаційного принципу).
  2. Параметризована схема-анзац. В ідеалі — така, що містить апаратно-ефективну зв'язність, щоб мати розумну глибину на цільовому залізі.
  3. Початкові параметри для підстановки у схему-анзац, щоб отриманий стан вже був хорошим наближенням цільового стану. (Це в принципі не є обов'язковим для AQC, але допомагає задати оптимізатору розумну початкову точку.)

Техніка полягає в ітеративній оптимізації параметрів схеми-анзацу таким чином, щоб стан, який вона генерує, був якомога ближчим до цільового стану.

Генерація анзацу

Для генерації (2) і (3) з наведеного списку пакет qiskit-addon-aqc має функцію generated_ansatz_from_circuit(), яка приймає вхідну схему і повертає параметризований анзац та початковий набір параметрів. Повернені функцією параметри такі, що при підстановці в анзац генерують стан, точно еквівалентний вхідній схемі, з точністю до глобальної фази.

Анзац, що генерується цією функцією, використовує 9 параметрів на кожен дво-кубітний блок і базується на KAK-розкладі, який параметризує будь-який дво-кубітний вентиль через три параметри з точністю до однокубітних обертань. Однокубітні обертання потім розкладаються як ZXZZXZ, кожне з яких має три параметри. Це призводить до того, що схема-анзац містить 3 параметри для кожного дво-кубітного блоку вихідної схеми плюс 3 параметри для вихідного однокубітного обертання на кожному з двох кубітів (загалом 9 параметрів). Після додавання цих блоків анзац завершується додаванням шару однокубітних обертань до кожного активного кубіту на початку схеми.

Симуляція тензорних мереж

Для отримання опису бажаного цільового стану цей аддон використовує матрично-продуктний стан (найпростіша форма тензорної мережі) та підтримує такі симулятори тензорних мереж:

Найважливішим параметром тензорної мережі є її максимальний розмір зв'язку, χ\chi. Цей параметр обмежує обсяг заплутаності, що може бути представлений тензорною мережею, а відтак і глибину, до якої може бути точно симульована дана схема.

Для схеми з LL кубітами матрично-продуктному стану потрібний розмір зв'язку щонайбільше χexact=2L/2\chi_{exact} = 2^{L/2}, щоб точно симулювати схему на будь-якій глибині. Це недосяжно для загальних схем корисного масштабу, що діють на 100+ кубітах. З цієї причини, якщо ти намагаєшся поекспериментувати з цим аддоном для іграшкової задачі з малою кількістю кубітів, важливо переконатись, що χ<2L/2\chi < 2^{L/2}. Таким чином, коли ти масштабуватимеш задачу до більшої схеми, цільовий стан залишатиметься класично симульованим.

Наступні кроки

Рекомендації

Посилання

[1] Robertson, Niall F., et al. "Approximate Quantum Compiling for Quantum Simulation: A Tensor Network based approach" arXiv preprint arXiv:2301.08609 (2023).