Vai al contenuto principale
Questo progetto è in fase beta. Hai trovato un bug? Apri una issue su GitHub. Hai una domanda o un'idea? Chiedi su GitHub Discussions — apprezziamo il tuo feedback!
Com'è la qualità della traduzione su questa pagina?

Propagazione di Pauli

Il pacchetto pauli-prop fornisce un'interfaccia Python accelerata con Rust per eseguire la propagazione di Pauli.

La propagazione di Pauli è un framework per approssimare l'evoluzione di operatori nella base di Pauli sotto l'azione di altri operatori, come i gate dei circuiti quantistici e i canali di rumore. Questo approccio può essere efficace quando ci si aspetta che gli operatori coinvolti rimangano sparsi nella base di Pauli.

Le subroutine di questo pacchetto possono essere usate per implementare tecniche di mitigazione degli errori come il lightcone shading [6] e il propagated noise absorption [7], la operator backpropagation [8] per la riduzione della profondità dei circuiti e la simulazione classica dei valori di aspettazione [1-5].

Per iniziare​

Una semplice guida per iniziare rapidamente con questo pacchetto è disponibile nella guida rapida.

Esempi di casi d'uso​

La propagazione di Pauli può essere usata come motore di livello più basso per implementare una varietà di tecniche. Alcuni esempi in cui è stata usata sono:

  • Lightcone shading per ridurre l'overhead di campionamento della probabilistic error cancellation (PEC) per mitigare i valori di aspettazione in un modello di Ising a campo trasverso 1D e 2D [6] [qiskit-addon-slc documentazione]

  • Assorbimento delle informazioni del modello di rumore in un'osservabile target per mitigare i valori di aspettazione in un modello di Ising a campo trasverso 2D [7] [qiskit-addon-pna documentazione]

  • Rimozione dei gate finali per produrre circuiti di Trotter a profondità minore per l'evoluzione temporale di un modello di spin 2D [8] [qiskit-addon-obp documentazione]

Discussione tecnica​

Dettagli del software​

  • Interfaccia Python accelerata con Rust

  • Supporto per simulazioni con rumore [guida]

  • Possibilità di troncare i termini durante l'evoluzione in base a una tolleranza assoluta sui coefficienti, a un numero fisso di termini nell'operatore in evoluzione, o a una combinazione di entrambi

  • Possibilità di eseguire la propagazione di Pauli sia nel quadro di Schrödinger sia in quello di Heisenberg

  • Tecnica innovativa per approssimare la coniugazione di un operatore somma di Pauli tramite un altro operatore di Pauli. Questa implementazione euristica genera in modo greedy i contributi al prodotto che si prevede siano più significativi. Consulta l'Appendice B di [7] per maggiori informazioni.

  • Single-thread

Requisiti computazionali​

Sia il costo in memoria sia quello in tempo delle routine di propagazione di Pauli in genere scalano con la dimensione a cui è consentito crescere all'operatore evoluto.

propagate_through_rotation_gates(): Quando l'operatore di Pauli viene propagato nella base di Pauli sotto l'azione di una sequenza di NN gate di rotazione di Pauli di un circuito a MM qubit, il numero di termini crescerà come O(2N)\mathcal{O}(2^N) verso un massimo di 4M4^M componenti di Pauli univoche. Per controllare l'uso della memoria, l'operatore viene troncato dopo l'applicazione di ciascun gate, il che introduce un certo errore proporzionale alle grandezze dei coefficienti dei termini troncati. I requisiti di memoria sono lineari nella dimensione dell'operatore evoluto e il tempo di esecuzione scala linearmente sia con la dimensione dell'operatore sia con il numero di gate.

propagate_through_operator(): Coniuga un operatore nella base di Pauli tramite un altro accumulando in modo greedy i termini nella somma, ∑i,j,kGi†OjGk\sum_{i,j,k}G^{\dagger}_iO_jG_k, dove i,j,ki,j,k sono indici sparsi sulla base di Pauli. Questa implementazione ordina i coefficienti di ciascun operatore per grandezza decrescente, poi cerca nello spazio degli indici 3D i termini con i coefficienti più grandi, partendo dall'origine (0,0,0)(0,0,0) e accumulando le terne (i,j,k)(i,j,k) fino a un cutoff specificato. Il tempo speso nella ricerca può spesso essere reso trascurabile aumentando la dimensione del passo di ricerca nello spazio (i,j,k)(i,j,k), il che fornisce un'accelerazione cubica per questa subroutine. Nel nostro profiling, può essere speso un tempo significativo nell'ordinare gli operatori e nell'eseguire la moltiplicazione di Pauli per generare i termini del nuovo operatore.

Contribuire​

Il codice sorgente è disponibile su GitHub.

La guida per gli sviluppatori si trova in CONTRIBUTING.md nella radice del repository di questo progetto. Partecipando, ci si aspetta che tu rispetti il codice di condotta di Qiskit.

Usiamo le issue di GitHub per tenere traccia di richieste e bug.

Come citare questo pacchetto​

Se usi questo pacchetto nella tua ricerca, usa il file CITATION.bib nel repository di questo progetto per citare i riferimenti appropriati.

Licenza​

Apache License 2.0

Politica di deprecazione​

Seguiamo il versionamento semantico. Occasionalmente potremmo introdurre modifiche non retrocompatibili per migliorare l'esperienza utente. Quando possibile, manterremo le vecchie interfacce e le contrassegneremo come deprecate, finché possono coesistere con le nuove. Ogni miglioramento sostanziale, modifica non retrocompatibile o deprecazione sarà documentata nelle note di rilascio.

Riferimenti​

  1. [Tomislav Begušić, Johnnie Gray, Garnet Kin-Lic Chan, Fast and converged classical simulations of evidence for the utility of quantum computing before fault tolerance, arXiv:2308.05077 [quant-ph].

  2. Nicolas Loizeau, et al., Quantum many-body simulations with PauliStrings.jl, arXiv:2410.09654 [quant-ph].

  3. Manuel S. Rudolph, et al., Pauli Propagation: A Computational Framework for Simulating Quantum Systems, arXiv:2505.21606 [quant-ph].

  4. Hrant Gharibyan, et al., A Practical Guide to using Pauli Path Simulators for Utility-Scale Quantum Experiments, arXiv:2507.10771 [quant-ph].

  5. Lukas Broers, et al., Scalable Simulation of Quantum Many-Body Dynamics with Or-Represented Quantum Algebra, arXiv:2506.13241 [quant-ph].

  6. Andrew Eddins, Minh C. Tran, Patrick Rall, Lightcone shading for classically accelerated quantum error mitigation, arXiv:2409.04401 [quant-ph].

  7. Andrew Eddins, et al., Computing noise-canceling observables via Pauli propagation, arXiv:2606.20441 [quant-ph].

8 Bryce Fuller, et al., Improved Quantum Computation using Operator Backpropagation, arXiv:2502.01897 [quant-ph].