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?

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_id quando 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.

IstruzioneDescrizioneCaso d'uso tipicoUso in QiskitFamiglia di processori
measure_2Impulso di misura più breveMisure a metà circuitoMidCircuitMeasure (v0.43.0 o successiva)Heron, Nighthawk r2
reset_2Impulso di reset condizionale più breve che usa measure_2Reset del qubit a metà circuitoMidCircuitReset (v0.49.0 o successiva)Heron
measure_resetMisura come measure che esegue anche il reset del qubit*Misura e reset di un qubitMeasureReset (v0.50.0 o successiva)Heron, Nighthawk r2
measure_reset_2Misura più breve come measure_2 che esegue anche il reset del qubit*Misura e reset di un qubit a metà circuitoInizializza MeasureReset con name="measure_reset_2" (v0.50.0 o successiva)Heron, Nighthawk r2
xslowGate di bit-flip (X) con durata estesaPostselezione e mitigazione degli errori. È il valore predefinito dell'opzione x_pulse_type nei passi di postselezioneTutte

. | 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)
nota

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 calibrazioneFamiglia di processoriBias TLSConsigliato per
Nessuno (calibrazione predefinita)TutteDC (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_dcHeronDCFlussi 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_acHeronACFlussi 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_gatesNighthawkNon applicabileFlussi 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")
suggerimento

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​

Raccomandazioni