Lumaktaw sa pangunahing nilalaman

Circuit cutting

Ang circuit cutting ay isang teknik para palakihin ang sukat ng mga circuit na maaaring patakbuhin sa quantum hardware, ngunit may kasamang karagdagang sampling overhead. Ipinapatupad ng addon na ito ang teknik na ito, kung saan ilang gate, wire, o pareho ay pinutol, na nagreresulta sa mas maliliit na circuit na mas angkop para sa pagpapatakbo sa hardware. Ang mga mas maliliit na circuit na ito ay pinapatakbo, at ang mga resulta ng orihinal na circuit ay ini-reconstruct sa pamamagitan ng classical post-processing. Gayunpaman, ang kapalit nito ay ang kabuuang bilang ng shots ay dapat tumaas ng isang factor na nakasalalay sa bilang at uri ng mga cut na ginawa (kilala bilang sampling overhead). Maaari ding gamitin ang circuit cutting para gumawa ng mga gate sa pagitan ng malalayong qubit na kung hindi man ay mangangailangan ng malaking SWAP overhead.

Mga mahalagang termino

  • Subcircuits: Ang hanay ng mga circuit na nagmumula sa pagputol ng mga gate sa isang QuantumCircuit at paghihiwalay ng mga disconnected na subset ng qubit sa mas maliliit na circuit. Ang mga circuit na ito ay naglalaman ng SingleQubitQPDGate na mga object at ginagamit para i-instantiate ang bawat subexperiment.

  • Subexperiment: Isang terminong ginagamit para ilarawan ang mga natatanging circuit sample na nauugnay sa isang subcircuit, na ipinapadala sa isang QPU para papatakbuhin.

I-install ang circuit cutting package

May tatlong paraan para i-install ang circuit cutting package: PyPI, pagbuo mula sa source, at pagpapatakbo sa loob ng isang containerized na kapaligiran. Inirerekomenda na i-install ang mga package na ito sa isang virtual environment para matiyak ang paghihiwalay ng mga package dependency.

I-install mula sa PyPI

Ang pinaka-direktang paraan para i-install ang qiskit-addon-cutting package ay sa pamamagitan ng PyPI:

pip install qiskit-addon-cutting

I-install mula sa source

I-click dito para malaman kung paano i-install ang package na ito nang manu-mano.

Para mag-ambag sa package na ito o para i-install ito nang manu-mano, i-clone muna ang repository:

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

at i-install ang package gamit ang pip. Para patakbuhin ang mga tutorial na nasa package repository, i-install din ang mga notebook dependency. I-install ang mga dev dependency kung plano mong mag-develop sa repository.

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

Gamitin sa loob ng Docker

Ang dockerfile na kasama sa addon repository ay maaaring gamitin para bumuo ng Docker image. Ang kasamang compose.yaml file ay nagbibigay-daan sa iyo na gamitin ang Docker image gamit ang mga sumusunod na command.

I-click dito para malaman kung paano gamitin ang package na ito sa loob ng Docker.

git clone git@github.com:Qiskit/qiskit-addon-cutting.git
cd qiskit-addon-cutting
docker compose build
docker compose up
Tala

Kung gumagamit ka ng podman at podman-compose sa halip na docker, ang mga command ay:

podman machine start
podman-compose --podman-pull-args short-name-mode="permissive" build
podman-compose up

Kapag tumatakbo na ang container, dapat makakita ka ng mensaheng katulad ng:

notebook_1  |     To access the server, open this file in a browser:
notebook_1 | file:///home/$USERNAME/.local/share/jupyter/runtime/jpserver-7-open.html
notebook_1 | Or copy and paste one of these URLs:
notebook_1 | http://e4a04564eb39:8888/lab?token=00ed70b5342f79f0a970ee9821c271eeffaf760a7dcd36ec
notebook_1 | or http://127.0.0.1:8888/lab?token=00ed70b5342f79f0a970ee9821c271eeffaf760a7dcd36ec

Ang huling URL sa mensaheng ito ang magbibigay sa iyo ng access sa Jupyter notebook interface.

Bukod dito, ang home directory ay may kasamang subdirectory na pinangalanang persistent-volume. Lahat ng trabahong nais mong i-save ay dapat ilagay sa directory na ito, dahil ito lang ang mase-save sa iba't ibang pagpapatakbo ng container.

Teoretikal na background

Sa proseso ng circuit cutting, may dalawang uri ng cut: ang gate o "space-like" na cut, kung saan ang cut ay dumadaan sa isang gate na nagpapatakbo sa dalawa (o higit pang) qubit, at ang wire o "time-like" na cut, na direktang nagputol sa isang qubit wire (karaniwang isang single-qubit identity gate na nahati sa dalawang piraso).

Ang diagram sa ibaba ay nagpapakita ng halimbawa ng pagputol ng mga gate para ang circuit ay mahati sa dalawang mas maliliit na piraso na may mas kaunting qubit.

Diagram ng gate cutting sa pamamagitan ng pagsasama ng isang mas malaking circuit at pagputol nito sa dalawang mas maliit na may label na "A" at "B"

May tatlong sitwasyon na dapat isaalang-alang kapag naghahanda ng circuit cutting workflow, na nakasentro sa availability ng classical communication sa pagitan ng mga circuit execution. Ang una ay kung saan available lang ang local operations (LO), habang ang dalawa pa ay nagpapakilala ng classical communication sa pagitan ng mga execution na kilala bilang local operations and classical communication (LOCC). Ang mga LOCC na sitwasyon ay nahahati sa alinman sa near-time, isang-direksyon na komunikasyon sa pagitan ng mga circuit execution, o real-time, bi-directional na komunikasyon (na maaaring makita sa isang multi-QPU na kapaligiran).

Kahit na maaaring gamitin ang circuit cutting para mag-execute ng mga quantum circuit na mas malaki kaysa sa posible sa kasalukuyang available na hardware, may kasamang gastos ito. Dahil ang teknik ay maaaring i-frame bilang isang quasi-probability decomposition (QPD) na problema, may exponential sampling overhead na kinakailangan para ma-reconstruct ang mga resulta. Ang overhead na ito ay ang factor kung saan dapat tumaas ang kabuuang bilang ng shots para ang quasi-probability decomposition ay magresulta sa parehong dami ng error, ϵ\epsilon, tulad ng makukuha mo sa pamamagitan ng pagpapatakbo ng orihinal na circuit. Ang bawat cut gate ay nag-aambag sa overhead na ito, at ang dami ng overhead na idinagdag ay nakasalalay sa uri ng gate na pinutol (makikita ang higit pang detalye tungkol sa overhead sampling sa huling appendix ng [1]).

Halimbawa, ang isang cut na CNOT gate ay nagdudulot ng sampling overhead na 9 [2,6] at ang isang circuit na may nn wire cut ay nagdudulot ng sampling overhead na O(16n)\mathcal{O}(16^n) kapag ang classical communication ay hindi available (ang LO na sitwasyon). Nababawasan ito sa O(4n)\mathcal{O}(4^n) kapag naging available na ang classical communication (LOCC na sitwasyon) [4]. Gayunpaman, ang wire cutting gamit ang classical communication (LOCC) ay hindi sinusuportahan ng package na ito.

Pormal na, ang QPD na problema ng circuit cutting ay maaaring ipahayag tulad ng sumusunod:

U=iaiFi, \mathcal{U} = \sum_i a_i \mathcal{F}_i,

kung saan ang U\mathcal{U} ay ang quantum channel na nagpapatupad ng nais na operasyon, at ang bawat aia_i ay isang totoong coefficient na katumbas ng isang channel, Fi\mathcal{F}_i, na maaaring i-execute sa hardware.

Ang mga resultang katumbas ng nais na channel U\mathcal{U} ay nakukuha sa pamamagitan ng pagbuo muna ng mga coefficient, aia_i, pagkatapos ay pag-execute ng mga subexperiment para makuha ang mga resulta ng iba't ibang channel Fi\mathcal{F}_i para ma-reconstruct ang mga expectation value na katumbas ng U\mathcal{U}.

Isang maikling halimbawa: pagputol ng RZZGate

Bilang isang pangunahing halimbawa, isaalang-alang ang decomposition ng isang cut na RZZGate (makikita ang mga detalye sa [2]). Ang isang quantum circuit na naglalaman ng RZZGate ay maaaring i-simulate sa pamamagitan ng pagsasagawa ng anim na subexperiment kung saan ang RZZGate ay pinalitan ng mga single-qubit na operasyon lamang (ito ang mga Fi\mathcal{F}_i mula sa equation sa itaas). Ang mga resulta ng circuit na ito ay ini-reconstruct sa pamamagitan ng pagsasama ng mga resulta ng bawat subexperiment kasama ang isang hanay ng mga coefficient (ang mga aia_i mula sa equation sa itaas), na maaaring positibo o negatibo.

Para sa ilang napiling parameter na θ\theta para sa RZZGate, ang anim na subexperiment ay ang mga sumusunod:

  1. Na may coefficient na a1=cos2(θ/2)a_1 = \cos^2(\theta/2), huwag gumawa ng anuman (III\otimes I)
  2. Na may coefficient na a2=sin2(θ/2)a_2 = \sin^2(\theta/2), magsagawa ng ZGate sa bawat qubit (ZZZ\otimes Z)
  3. Na may coefficient na a3=sin(θ)/2a_3 = -\sin(\theta)/2, magsagawa ng projective measurement sa ZZ basis sa unang qubit at isang SS sa pangalawa (MzSM_z\otimes S). Kung ang resulta ng measurement ay 11, i-flip ang sign ng kontribusyon ng resultang iyon sa panahon ng reconstruction.
  4. Na may coefficient na a4=sin(θ)/2a_4 = \sin(\theta)/2, magsagawa ng projective measurement sa ZZ basis sa unang qubit at isang SS^\dagger sa pangalawa (MzSM_z\otimes S^\dagger). Kung ang resulta ng measurement ay 1, i-flip ang sign ng kontribusyon ng resultang iyon sa panahon ng reconstruction.
  5. Katulad ng 3. (a5=a3a_5=a_3), ngunit i-swap ang mga qubit (gawin ang SMzS\otimes M_z sa halip).
  6. Katulad ng 4. (a6=a4a_6=a_4), ngunit i-swap ang mga qubit (gawin ang SMzS^\dagger\otimes M_z sa halip).

Reference table ng sampling overhead

Ang sumusunod na talahanayan ay nagbibigay ng sampling overhead factor para sa iba't ibang two-qubit na instruction, kung isang instruction lamang ang pinutol.

Mga InstructionMga KAK decomposition angleSampling overhead factor
CSGate, CSdgGate, CSXGate(π/8,0,0)\left(\pi/8, 0, 0\right)3+2(2)2.8283+2\sqrt(2) \approx 2.828
CXGate, CYGate, CZGate, GHGate, ECRGate(π/4,0,0)\left(\pi/4, 0, 0\right)32=93^2=9
iSwapGate, DCXGate(π/4,π/4,0)\left(\pi/4, \pi/4, 0\right)72=497^2 = 49
SwapGate(π/4,π/4,π/4)\left(\pi/4, \pi/4, \pi/4\right)72=497^2 = 49
RXXGate, RYYGate, RZZGate, RZXGate(θ/2,0,0,)\left(\lvert\theta/2\rvert, 0, 0, \right)(1+2sin(θ))2\left(1 + 2\lvert\sin(\theta)\rvert\right)^2
CRXGate, CRYGate, CRZGate, CPhaseGate(θ/4,0,0)\left(\lvert\theta/4\rvert, 0, 0\right)(1+2sin(θ/2))2\left(1 + 2\lvert\sin(\theta/2)\rvert\right)^2
XXPlusYYGate, XXMinusYYGate(θ/4,θ/4,0)\left(\vert\theta/4\rvert, \lvert\theta/4\rvert, 0\right)(1+4sin(θ/2)+2sin2(θ/2))2\left(1 + 4\lvert\sin(\theta/2)\rvert + 2\sin^2(\theta/2)\right)^2 (independent of β\beta)
Move (cut wire sa LO na sitwasyon)N/A42=164^2 = 16

Mga susunod na hakbang

Mga sanggunian

[1] Christophe Piveteau, David Sutter, Circuit knitting with classical communication, https://arxiv.org/abs/2205.00016

[2] Kosuke Mitarai, Keisuke Fujii, Constructing a virtual two-qubit gate by sampling single-qubit operations, https://arxiv.org/abs/1909.07534

[3] Kosuke Mitarai, Keisuke Fujii, Overhead for simulating a non-local channel with local channels by quasiprobability sampling, https://arxiv.org/abs/2006.11174

[4] Lukas Brenner, Christophe Piveteau, David Sutter, Optimal wire cutting with classical communication, https://arxiv.org/abs/2302.03366

[5] K. Temme, S. Bravyi, and J. M. Gambetta, Error mitigation for short-depth quantum circuits, https://arxiv.org/abs/1612.02058

[6] Lukas Schmitt, Christophe Piveteau, David Sutter, Cutting circuits with multiple two-qubit unitaries, https://arxiv.org/abs/2312.11638

[7] Jun Zhang, Jiri Vala, K. Birgitta Whaley, Shankar Sastry, A geometric theory of non-local two-qubit operations, https://arxiv.org/abs/quant-ph/0209120