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?

Qiskit Paulice

qiskit-paulice è un pacchetto per incorporare controlli di Pauli efficienti dal punto di vista hardware in circuiti Clifford arbitrari su connettività di qubit arbitrarie, usando codici stabilizzatori spazio-temporali. Questi controlli possono essere usati per rilevare errori logici durante l'esecuzione del circuito. Post-selezionare solo i campioni senza errori rilevati può migliorare la fedeltà degli stati campionati con un processore quantistico, al costo di alcuni qubit ancilla e di un aumento dell'overhead di campionamento. Questo metodo è particolarmente adatto all'hardware a breve termine, poiché ha un overhead in qubit e gate molto più contenuto rispetto al calcolo quantistico fault-tolerant, pur avendo un overhead di campionamento migliore rispetto ai metodi di mitigazione degli errori come ZNE o PEC [1].

Sebbene i controlli di Pauli spazio-temporali possano essere usati per implementare routine autonome di rilevamento degli errori, sono rilevanti anche nel contesto della mitigazione e della correzione degli errori. Il rilevamento degli errori può integrare tecniche di mitigazione come la cancellazione probabilistica degli errori (PEC) catturando parte del rumore che affligge gate e misure, riducendo l'impatto del canale di rumore da invertire e quindi l'overhead di campionamento. Possono anche essere visti come un primo passo verso una fault tolerance pratica, poiché implementare codici stabilizzatori per proteggere i qubit di dati dagli errori logici è un concetto centrale della correzione degli errori tradizionale. Poiché questo metodo fornisce accesso a singolo shot allo stato quantistico, può essere usato sia in flussi di lavoro basati sul campionamento sia in quelli basati sui valori di aspettazione.

Per iniziare​

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

Esempi di casi d'uso​

Questa tecnica è stata usata per migliorare la fedeltà dei campioni di circuiti dominati da gate Clifford, usando 97 qubit fisici per codificare 2415 gate di entanglement logici su 70 qubit logici [2].

Discussione tecnica​

Trovare buoni insiemi di controlli di Pauli spazio-temporali​

Quantum circuit cartoon

Un insieme di controlli di Pauli spazio-temporali è “buono” se ogni controllo è valido, di basso peso ed efficace.

Un controllo è composto da un certo numero di rotazioni di Pauli controllate, PP, posizionate su alcune linee del circuito, ww: {(P1,w1),...,(Pk,wk)}\{(P_1,w_1), ..., (P_k,w_k)\}. Per un dato controllo, i controlli si trovano su un singolo qubit ancilla e le rotazioni avvengono sulle linee di un singolo qubit target. Per i circuiti Clifford, un controllo è valido se il suo prodotto retropropagato è uno stabilizzatore dello stato preparato dal circuito ideale: ∏iB(Pi,wi)∈S\prod_{i}B(P_i,w_i) \in S, dove B(P,w)B(P,w) è il retropropagatore di PP da ww all'inizio del circuito e SS è l'insieme di tutti gli stabilizzatori del circuito.

Un controllo è di basso peso se richiede pochi gate di entanglement per essere implementato. L'algoritmo di selezione dei controlli favorirà i controlli di basso peso che offrono il rilevamento degli errori più efficace.

Un controllo è efficace se cattura molto più errore di quanto ne introduca. Un controllo di Pauli è composto da un certo numero di gate di entanglement e introduce quindi del rumore di gate aggiuntivo nel calcolo. È importante assicurarsi che ogni controllo aggiuntivo porti una capacità di rilevamento degli errori in più. L'efficacia di un insieme di controlli può essere approssimata componendo gli errori di Pauli scoperti dai controlli in un canale di rumore post-selezionato e calcolandone l'impatto. Minimizzare l'overhead di campionamento necessario per implementare il canale di rumore inverso non scoperto è un'ottima euristica per selezionare buoni controlli, poiché dà un'indicazione di quanto errore i controlli non possono rilevare. Un approccio più lento ma più realistico consiste nell'eseguire un campionamento Monte Carlo dallo stato rumoroso e calcolare empiricamente il tasso di errore logico della distribuzione post-selezionata. Entrambi gli approcci sono disponibili come funzioni di costo integrate nella funzione qiskit_paulice.add_pauli_checks.

Post-selezione dei campioni in base ai dati di sindrome​

In questo pacchetto un controllo è implementato tramite gate di entanglement tra un qubit ancilla e un qubit target. Ogni ancilla parte in ∣0⟩|0\rangle, quindi ZancZ_\text{anc} stabilizza il suo stato di input. Propagando in avanti ZancZ_\text{anc} dall'inizio dell'ancilla attraverso l'intero circuito con i controlli si ottiene un operatore di Pauli in uscita, che potrebbe avere peso maggiore ed estendersi nel circuito di payload. Gli indici dei qubit su cui questo operatore di uscita ha termini non identità sono detti supporto del controllo, e il controllo è superato se i bit, bb, nel supporto del controllo hanno parità pari: ⨁i=1bi=0\bigoplus_{i=1} b_i = 0. Un campione viene mantenuto se ogni controllo produce 00 per il suo controllo di parità.

Funzionalità del software​

  • Creazione automatica del modello di rumore dai dati di benchmark del backend

  • Ricerca dei controlli accelerata con Rust

  • 3 algoritmi integrati per la ricerca dei controlli

  • Supporto per il doping di gate RZ

  • Supporto per combinare il rilevamento degli errori con la mitigazione degli errori

Problemi noti​

  • Il rumore di inattività non è fornito tramite NoiseModel.get_backend e viene ignorato durante la scelta dei controlli

  • Sebbene molti passaggi stocastici dell'algoritmo siano controllabili con un seed casuale, alcune funzionalità hanno una casualità non controllabile con un seed. In particolare, i seguenti valori degli argomenti di add_pauli_checks causeranno una scelta dei controlli non deterministica: cost="LER", method="genetic" e method="windowed_genetic". Per un comportamento deterministico usa add_pauli_checks(..., cost="gamma", method="windowed"), che sono i valori predefiniti.

Lavori futuri​

  • Gestione del rumore di inattività nella scelta dei controlli

  • Casualità controllabile per la funzione di costo basata sul tasso di errore logico e per gli algoritmi di ricerca genetici

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.

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é potranno coesistere con le nuove. Ogni miglioramento sostanziale, modifica non retrocompatibile o deprecazione sarà documentata nelle note di rilascio.

Riferimenti​

  1. Simon Martiel, Ali Javadi-Abhari, Low-overhead error detection with spacetime codes, arXiv:2504.15725 [quant-ph].

  2. Simon Martiel, et al., Sampling hard circuits with verifiably high fidelity, arXiv:2607.25941 [quant-ph].