Istruzioni calibrate in modo specifico
Per impostazione predefinita, i gate quantistici e le operazioni di lettura sui computer quantistici IBM® sono calibrati per ottenere prestazioni ottimali nei casi d'uso generali. Alcuni carichi di lavoro, tuttavia, traggono vantaggio da istruzioni i cui parametri sono regolati in modo diverso. Ad esempio, MidCircuitMeasure (measure_2) è un'operazione di lettura pensata per le misure a metà circuito, e i gate cz più lenti possono migliorare i risultati di alcuni flussi di lavoro di mitigazione degli errori.
Le istruzioni calibrate in modo specifico sono di due tipi, e vi si accede in modo diverso:
-
Istruzioni con firme diverse sono calibrate insieme alle istruzioni standard nella calibrazione predefinita, quindi le aggiungi ai tuoi circuiti come qualsiasi altra istruzione. Di solito sono identificate da un suffisso, come
measure_2. -
Calibrazioni alternative sostituiscono parti della calibrazione predefinita con parametri regolati in modo diverso. Ne selezioni una passando un
calibration_idquando recuperi il backend.
Per scoprire come vengono calibrati i computer quantistici IBM, consulta Monitora, calibra ed esegui il benchmark.
Istruzioni con firme diverse
Queste istruzioni sono calibrate con il set di istruzioni standard, quindi non devi fare nulla di particolare per recuperare un backend che le supporta. Per usarne una, aggiungi al tuo circuito la corrispondente istruzione di qiskit-ibm-runtime.
| Istruzione | Descrizione | Caso d'uso tipico | Uso in Qiskit | Famiglia di processori |
|---|---|---|---|---|
measure_2 | Impulso di misura più breve | Misure a metà circuito | MidCircuitMeasure (v0.43.0 o successiva) | Heron, Nighthawk r2 |
reset_2 | Impulso di reset condizionale più breve che usa measure_2 | Reset del qubit a metà circuito | MidCircuitReset (v0.49.0 o successiva) | Heron |
measure_reset | Misura come measure che esegue anche il reset del qubit* | Misura e reset di un qubit | MeasureReset (v0.50.0 o successiva) | Heron, Nighthawk r2 |
measure_reset_2 | Misura più breve come measure_2 che esegue anche il reset del qubit* | Misura e reset di un qubit a metà circuito | Inizializza MeasureReset con name="measure_reset_2" (v0.50.0 o successiva) | Heron, Nighthawk r2 |
xslow | Gate di bit-flip (X) con durata estesa | Postselezione e mitigazione degli errori. È il valore predefinito dell'opzione x_pulse_type nei passi di postselezione | Tutte |
. | XSlowGate (v0.50.0 o successiva) | Tutte |
* Sui processori Heron, il reset è condizionato al risultato della misura. Sui processori Nighthawk r2, il reset è incondizionato.
Poiché queste istruzioni non sono supportate da tutti i backend, controlla le istruzioni supportate dal backend prima di usarle:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>")
print(backend.supported_instructions)
Per trovare tutti i backend che supportano un'istruzione, usa:
service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)
Usa instruction_signatures per vedere le firme di queste istruzioni calibrate in modo specifico:
print(backend.configuration().instruction_signatures)
Calibrazioni alternative
Le calibrazioni alternative sostituiscono parti della calibrazione predefinita con parametri regolati in modo diverso. Ogni calibrazione alternativa ha un ID di calibrazione e la sua disponibilità dipende dalla QPU.
Per usare una calibrazione alternativa, passa il suo calibration_id quando recuperi il backend. Il target del backend, e quindi il transpiler, usa le proprietà delle istruzioni di quella calibrazione, e i job dei primitive che esegui sul backend vengono eseguiti con essa.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")
print(backend.calibration_id)
Le calibrazioni alternative non sono disponibili su tutte le QPU.
Calibrazioni dei gate lenti
Le calibrazioni dei gate lenti regolano il gate cz in modo che sia più lento rispetto alla calibrazione predefinita. I gate cz più lenti potrebbero migliorare le prestazioni nei flussi di lavoro di stima di osservabili su larga scala con mitigazione degli errori, ma aumentano anche la durata totale del circuito, il che causa una decoerenza aggiuntiva.
Sui processori Heron, le calibrazioni dei gate lenti sono disponibili anche con due modalità di controllo del bias dei sistemi a due livelli (TLS):
-
Il bias TLS DC è ottimizzato per le migliori prestazioni istantanee. La calibrazione predefinita usa il bias TLS DC.
-
Il bias TLS AC modula il bias TLS per stabilizzare nel tempo gli errori del dispositivo, mantenendo stabile il modello di rumore del dispositivo durante flussi di lavoro lunghi. Per i dettagli, consulta "Noise stabilization" in Observable Estimation in the Absence of Classical Verification.
I processori Nighthawk non usano il bias TLS, quindi hanno una sola calibrazione dei gate lenti.
| ID di calibrazione | Famiglia di processori | Bias TLS | Consigliato per |
|---|---|---|---|
| Nessuno (calibrazione predefinita) | Tutte | DC (Heron) | Uso generale. Particolarmente consigliato per i carichi di lavoro le cui bitstring possono essere distillate classicamente, come i circuiti con picchi e i flussi di lavoro SQD o SKQD, e per i carichi di lavoro con rilevamento degli errori. |
slow_gates_dc | Heron | DC | Flussi di lavoro di stima di osservabili su larga scala, in particolare quelli che usano mitigazione euristica degli errori come l'estrapolazione a rumore zero (ZNE). |
slow_gates_ac | Heron | AC | Flussi di lavoro che richiedono tassi di errore stabili durante sessioni lunghe. Fortemente consigliato per i flussi di lavoro che prevedono l'apprendimento del rumore, come l'amplificazione probabilistica degli errori (PEA) e la cancellazione probabilistica degli errori (PEC). |
slow_gates | Nighthawk | Non applicabile | Flussi di lavoro di stima di osservabili che usano la mitigazione degli errori, come ZNE, PEA e PEC. |
Ad esempio:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")
# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
Quando usi slow_gates_ac, invia tutti i job del flusso di lavoro a un'unica sessione in modo che vengano eseguiti mentre il rumore del dispositivo rimane stabile.
Controlla le durate dei gate
Poiché le calibrazioni dei gate lenti aumentano le durate del gate cz, confronta le durate con la calibrazione predefinita per capire l'effetto sul tuo circuito. Usa il target del backend per trovare la durata, in secondi, del gate cz su una specifica coppia di qubit:
default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
"<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk
qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)
Poiché il target riflette la calibrazione selezionata, esegui il transpile dei tuoi circuiti sul backend che usa lo stesso calibration_id con cui prevedi di eseguirli.
Passi successivi
- Scopri come eseguire circuiti dinamici con misure a metà circuito.
- Usa la postselezione per filtrare i risultati influenzati dal rumore correlato.
- Leggi come i computer quantistici IBM vengono monitorati, calibrati e sottoposti a benchmark.