Vai al contenuto principale

Backpropagazione degli operatori (OBP)

La backpropagazione degli operatori (OBP) è una tecnica per ridurre la profondità di un circuito eliminando operazioni dalla sua coda, al costo di un numero maggiore di misurazioni degli operatori. Esistono diversi modi per eseguire la backpropagazione degli operatori; questo pacchetto utilizza un metodo basato sulla teoria delle perturbazioni di Clifford [1].

Man mano che si propaga un operatore più in profondità attraverso un circuito, la dimensione dell'osservabile da misurare cresce esponenzialmente. Ciò comporta un overhead di risorse sia classiche che quantistiche. Tuttavia, per alcuni circuiti, la distribuzione risultante degli osservabili di Pauli aggiuntivi è più concentrata rispetto allo scaling esponenziale nel caso peggiore. Questo implica che alcuni termini di un osservabile con coefficienti piccoli possono essere troncati per ridurre l'overhead quantistico. L'errore introdotto da questa operazione può essere controllato per trovare un compromesso adeguato tra precisione ed efficienza.

Installazione

Puoi installare il pacchetto OBP in uno dei due modi seguenti: tramite PyPI o compilando dal sorgente. Considera l'installazione di questi pacchetti in un ambiente virtuale per garantire la separazione tra le dipendenze dei pacchetti.

Installazione da PyPI

Il modo più diretto per installare il pacchetto qiskit-addon-obp è tramite PyPI.

pip install qiskit-addon-obp

Compilazione dal sorgente

Gli utenti che desiderano contribuire a questo pacchetto o che vogliono installarlo manualmente possono farlo clonando prima il repository:

git clone git@github.com:Qiskit/qiskit-addon-obp.git
```_

e installando il pacchetto tramite `pip`. Il repository contiene anche notebook di esempio. Se intendi sviluppare nel repository, installa le dipendenze `dev`.

Adatta le opzioni alle tue esigenze:

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

Fondamenti teorici

La procedura OBP implementata in questo pacchetto è descritta in dettaglio in [1]. Quando si utilizza la primitiva Estimator, l'output di un workload quantistico è la stima di uno o più valori di aspettazione O\langle O \rangle rispetto a uno stato preparato tramite un QPU. Questa sezione riassume la procedura.

Per iniziare, scrivi la misurazione del valore di aspettazione di un osservabile OO in termini di uno stato iniziale ψ|\psi\rangle e di un circuito quantistico UQU_Q:

OUψ=ψUOUψ.\langle O \rangle_{U|\psi\rangle} = \langle\psi | U^\dagger O U |\psi \rangle.

Per distribuire questo problema tra risorse classiche e quantistiche, dividi il circuito UU in due sottocircuiti, UCU_C e UQU_Q, simula classicamente il circuito UCU_C, quindi esegui il circuito UQU_Q su hardware quantistico e usa i risultati della simulazione classica per ricostruire la misurazione dell'osservabile OO.

Diagramma OBP che illustra la suddivisione di un circuito in due sottocircuiti, il calcolo classico di uno dei sottocircuiti e la misurazione dell'altro circuito tramite hardware quantistico

Il sottocircuito UCU_C deve essere scelto in modo da essere simulabile classicamente e calcolerà il valore di aspettazione

OUCOUC,\langle O' \rangle \equiv U_C^\dagger O U_C,

che è la versione dell'operatore iniziale OO evoluta attraverso il circuito UCU_C. Una volta determinato OO', viene preparato il workload quantistico in cui lo stato ψ|\psi\rangle viene inizializzato, gli viene applicato il circuito UQU_Q, e poi viene misurato il valore di aspettazione OO'. Puoi dimostrare che ciò equivale a misurare O\langle O \rangle scrivendo:

ψUQOUQψ=ψUQUCOUCUQψ=ψUOUψ=OUψ \langle \psi | U_Q^\dagger O' U_Q \psi \rangle = \langle \psi | U_Q^\dagger U_C^\dagger O U_CU_Q \psi \rangle = \langle\psi | U^\dagger O U |\psi \rangle = \langle O \rangle_{U|\psi\rangle}

Infine, per misurare il valore di aspettazione O\langle O' \rangle, è necessario che esso sia scomponibile in una somma di stringhe di Pauli

O=PcPP,O' = \sum_P c_P P,

dove cPc_P sono i coefficienti reali della decomposizione e PP è una stringa di Pauli composta dagli operatori II, XX, YY e ZZ. Ciò garantisce che tu possa ricostruire il valore di aspettazione di OO tramite

ψUQOψ=PcPψUQPUQψ.\langle \psi | U_Q^\dagger O' |\psi \rangle = \sum_P c_P \langle \psi | U_Q^\dagger P U_Q | \psi \rangle.

Troncamento dei termini

Questo schema offre un compromesso tra la profondità del circuito richiesta per UQU_Q, il numero di esecuzioni del circuito su hardware quantistico e la quantità di risorse di calcolo classico necessarie per calcolare OO'. In generale, più si sceglie di eseguire la backpropagazione attraverso un circuito, maggiore è il numero di stringhe di Pauli da misurare e l'overhead di mitigazione degli errori, entrambi con crescita esponenziale (insieme alle risorse classiche necessarie per simulare UCU_C).

Fortunatamente, la decomposizione di OO' può spesso contenere coefficienti molto piccoli che possono essere troncati dalle misurazioni finali usate per ricostruire OO senza introdurre un errore significativo. Il pacchetto qiskit-addon-obp offre la funzionalità per specificare un budget di errore, che può ricercare automaticamente i termini troncabili entro una certa tolleranza di errore.

Teoria delle perturbazioni di Clifford

Infine, il pacchetto qiskit-addon-obp affronta la backpropagazione degli operatori basandosi sulla teoria delle perturbazioni di Clifford. Questo metodo ha il vantaggio che l'overhead introdotto dalla backpropagazione di vari gate scala con la non-cliffordness di UCU_C (ovvero, quanto di UCU_C è composto da istruzioni non-Clifford).

Questo approccio all'OBP inizia suddividendo il circuito simulato, UCU_C, in slices (sezioni):

UC=s=1SUs=US...U2U1,U_C = \prod_{s=1}^S \mathcal{U}_s = \mathcal{U}_S...\mathcal{U}_2\mathcal{U}_1,

dove SS rappresenta il numero totale di slices e Us\mathcal{U}_s indica una singola slice del circuito UCU_C. Ognuna di queste slices viene poi applicata analiticamente in sequenza per misurare l'operatore backpropagato OO' e può o meno contribuire alla dimensione complessiva della somma, a seconda che la slice sia un'operazione Clifford o non-Clifford. Se viene allocato un budget di errore, il troncamento avviene tra l'applicazione di ogni slice.

Passi successivi

Raccomandazioni

Riferimenti

[1] Fuller, Bryce, et al. "Improved Quantum Computation using Operator Backpropagation." arXiv:2502.01897 [quant-ph] (2025).