Vai al contenuto principale

Visualizza i dettagli del backend

Package versions

The code on this page was developed using the following requirements. We recommend using these versions or newer.

qiskit-ibm-runtime~=0.46.1

Questa pagina spiega come trovare informazioni sui backend disponibili.

Elenca o filtra i backend

Elenca i backend disponibili

Puoi usare Qiskit o IBM Quantum Platform per visualizzare un elenco dei backend disponibili, oppure per cercare un backend specifico.

Nomi delle QPU

Le QPU ospitate su IBM Cloud® hanno nomi che iniziano con ibm_*. A ogni QPU viene assegnato il nome di una città - ad esempio, ibm_kingston. Questo nome non indica dove è effettivamente ospitata la QPU.

Usa il metodo QiskitRuntimeService.backends(), come mostrato nel blocco di codice successivo. Questo metodo restituisce un elenco di istanze IBMBackend.

Per eseguire il codice seguente, assicurati di esserti già autenticato al servizio. Consulta Configura il tuo account IBM Cloud per ulteriori dettagli.

Per cercare un backend specifico, usa il metodo QiskitRuntimeService.backend() (nota che è al singolare: backend), che accetta il nome del backend come parametro di input e restituisce un'istanza IBMBackend che rappresenta quel particolare backend:

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()

service.backends()
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
service.backend("ibm_fez")
<IBMBackend('ibm_fez')>
# Optionally pass in an instance, region, or both, to
# further filter the backends.
service = QiskitRuntimeService()

service.backends(simulator=False, operational=True, min_num_qubits=100)
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
nota

Se sei connesso a un'istanza o una regione specifica, o se hai inizializzato il servizio con un'istanza o regione specifica usando QiskitRuntimeService(), vengono restituiti solo i backend disponibili in quell'istanza o regione.

Filtra i backend

Puoi filtrare i backend disponibili in base alla loro configurazione o stato. Per filtri più generali, imposta l'argomento filters su una funzione che accetta un oggetto backend e restituisce True se soddisfa i tuoi criteri. Consulta la documentazione API per ulteriori dettagli.

Il codice seguente restituisce solo i backend che soddisfano questi criteri e sono disponibili nell'istanza attualmente selezionata:

  • Sono dispositivi quantistici reali (simulator=False)
  • Sono attualmente operativi (operational=True)
  • Hanno almeno cento qubit (min_num_qubits=100)

Un metodo simile è QiskitRuntimeService.least_busy(), che accetta gli stessi filtri di backends() ma restituisce il backend che corrisponde ai filtri e ha il minor numero di job in coda:

service.least_busy(operational=True, min_num_qubits=100)
<IBMBackend('ibm_fez')>

Informazioni statiche del backend

Alcune informazioni su un backend non cambiano regolarmente, come il nome, la versione, il numero di qubit che ha, il tipo di processore (il nome della famiglia di uccelli, che indica la topologia e il numero approssimativo di qubit), e i tipi di funzionalità supportate. Queste informazioni sono disponibili come attributi dell'oggetto backend. Per un elenco completo degli attributi, consulta la documentazione API di IBMBackend. Trova ulteriori informazioni sul versioning nella sezione Versioning delle QPU di seguito.

La regione di un backend (la posizione del data center in cui i tuoi dati ed esperimenti saranno ospitati ed elaborati) è elencata nella sua scheda informativa dettagliata nella pagina Risorse di calcolo su IBM Quantum Platform.

backend = service.backend("ibm_fez")

print(
f"Name: {backend.name}\n"
f"Version: {backend.backend_version}\n"
f"No. of qubits: {backend.num_qubits}\n"
f"Processor type: {backend.processor_type}\n"
)
Name: ibm_fez
Version: 1.3.37
No. of qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}

Versioning delle QPU

Ogni QPU ha un numero di versione nel formato X.Y.Z (major.minor.revision). Un circuito compilato per un dato numero di versione è garantito per funzionare su quella QPU. Se il numero di revisione cambia, il circuito continuerà a funzionare. Se il numero major o minor cambia, il circuito non è garantito per funzionare, sebbene possa farlo.

Il numero di versione della revisione si incrementerà per correzioni che non interrompono il circuito compilato esistente.

L'esempio di codice precedente in questa sezione mostra come trovare la versione di un backend. Su IBM Quantum Platform, puoi visualizzare la versione nella scheda informativa dettagliata di una QPU (fai clic sul nome della QPU nella tabella Risorse di calcolo per aprire la scheda).

Le condizioni in cui un numero di versione o revisione può cambiare sono elencate nella tabella seguente.

Versione majorVersione minorVersione revisione
Modifiche campioneCicli di riscaldamento / raffreddamentoAggiornamenti software della QPU
Modifiche importanti all'elettronica di controlloSostituzione di alcuni componenti elettronici, se il sostituto influisce apprezzabilmente sul funzionamentoCalibrazioni manuali per migliorare le fedeltà
Spostamento della QPU in una nuova posizione, se ne risultano cambiamenti significativi nel comportamentoDisattivazione di un gate per un certo periodo di tempo a causa di problemi di calibrazione, e le correzioni non possono essere facilmente effettuate via softwarePiccole modifiche elettroniche che non influiscono sul funzionamento
Modifica della direzione di un gate CNOT

Istruzioni supportate

Ogni famiglia di processori supporta nativamente un insieme limitato di istruzioni. Questo insieme include gate a singolo e a due qubit, nonché operazioni non unitarie come misura e reset. Ogni gate nel circuito deve essere tradotto (dal transpiler) negli elementi dell'insieme di istruzioni supportate da una QPU prima di poter essere eseguito sulla QPU.

Puoi visualizzare gli insiemi di istruzioni supportati per una QPU con Qiskit. La pagina Risorse di calcolo di IBM Quantum Platform elenca solo i gate unitari supportati (gate base) per una QPU.

Tabella delle istruzioni supportate

Categoria di operazioneNome
gate a singolo qubitRZ, SX, X, ID, delay
gate a due qubitCZ, ECR
gate frazionariRX (singolo qubit), RZZ (due qubit)
Istruzioni non unitariemeasure, reset, measure_*, delay
Flusso di controlloif_else (feedforward classico)
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.backend("ibm_kingston")

print(f"Backend: {backend.name}")
print(f" Processor type: {backend.processor_type}")
print(f" Supported instructions: {backend.supported_instructions}")
Backend: ibm_kingston
Processor type: {'family': 'Heron', 'revision': '2'}
Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']

Informazioni dinamiche del backend

I backend hanno anche proprietà che cambiano ogni volta che il backend viene calibrato, come la durata di vita del qubit e i tassi di errore delle operazioni. Le proprietà del backend si aggiornano dopo il completamento della sequenza di calibrazione. Queste proprietà possono essere utilizzate per ottimizzare i circuiti quantistici o per costruire modelli di rumore per un simulatore classico. Consulta la guida Job di calibrazione per ulteriori informazioni.

Su IBM Quantum Platform, puoi scaricare i dati di calibrazione come file CSV. Fai clic su una QPU nella pagina Risorse di calcolo per visualizzare la sua scheda informativa dettagliata, quindi fai clic sull'icona di download nell'angolo in alto a destra della sezione Dati di calibrazione.

Recupera dati storici

Puoi recuperare dati storici delle proprietà del backend in Qiskit con il seguente codice:

backend.properties(datetime=<datetime>)

Proprietà dei qubit

Vai all'elenco delle proprietà dei qubit

backend.properties().qubit_property() restituisce informazioni sugli attributi fisici dei qubit. Contiene un dizionario di varie proprietà del qubit, ognuna abbinata al suo valore e al timestamp dell'ultima calibrazione.

I seguenti esempi di codice mostrano come elencare tutte le proprietà, o recuperare proprietà specifiche, di un particolare qubit.

Visualizza le proprietà dei qubit

T1 (Relaxation time)

Il tempo T1T_1 rappresenta la durata media in cui un qubit rimane nel suo stato eccitato 1|1\rangle prima di decadere al suo stato fondamentale 0|0\rangle per rilassamento energetico. Questo parametro è usato per caratterizzare il comportamento di rilassamento energetico del qubit, ed è espresso in unità di secondi (s).

Visualizza con Qiskitbackend.properties().t1(<qubit>)
Visualizza su IBM Quantum PlatformSezione Dati di calibrazione, menu a tendina qubit; trova il valore mediano di T1T_1 nella sezione Dettagli
T2 (Dephasing time)

Il tempo T2T_2 indica la scala temporale su cui un qubit mantiene la coerenza di fase di una sovrapposizione tra gli stati 0|0\rangle e 1|1\rangle. Tiene conto sia del rilassamento energetico che dei processi di pura defasatura, fornendo informazioni sulle proprietà di coerenza del qubit. T2T_2 è riportato da una sequenza di eco di Hahn.

Visualizza con Qiskitbackend.properties().t2(<qubit>)
Visualizza su IBM Quantum PlatformSezione Dati di calibrazione, menu a tendina qubit; trova il valore mediano di T2T_2 nella sezione Dettagli
# fundamental physical properties of qubit 1

backend = service.backend("ibm_fez")

backend.qubit_properties(1)
QubitProperties(t1=0.00018243651954462543, t2=0.00020405172321184844, frequency=None)
# Retrieve qubit properties
qubit_index = 126 # Replace with your qubit index
qubit_props = backend.properties().qubit_property(qubit_index)

# Access specific properties
t1 = qubit_props.get("T1", (None,))[0]
t2 = qubit_props.get("T2", (None,))[0]
readout_error = qubit_props.get("readout_error", (None,))[0]
prob_meas0_prep1 = qubit_props.get("prob_meas0_prep1", (None,))[0]
prob_meas1_prep0 = qubit_props.get("prob_meas1_prep0", (None,))[0]
readout_length = qubit_props.get("readout_length", (None,))[0]

print(f"Qubit {qubit_index} Properties:")
print(f" T1: {t1} seconds")
print(f" T2: {t2} seconds")
print(f" Readout Error: {readout_error}")
print(f" P(0 | 1): {prob_meas0_prep1}")
print(f" P(1 | 0): {prob_meas1_prep0}")
print(f" Readout Length: {readout_length} seconds")
Qubit 126 Properties:
T1: 0.0001248478211384773 seconds
T2: 7.96150033446492e-05 seconds
Readout Error: 0.0244140625
P(0 | 1): 0.029052734375
P(1 | 0): 0.019775390625
Readout Length: 1.56e-06 seconds

Proprietà delle istruzioni

Vai all'elenco delle proprietà delle istruzioni

L'attributo backend.target è un oggetto qiskit.transpiler.Target: un oggetto che contiene tutte le informazioni necessarie per transpilare un circuito per quel backend. Questo include errori e durate delle istruzioni. Ad esempio, la cella seguente ottiene le proprietà per un gate cz che agisce tra i qubit 1 e 0.

La cella seguente mostra le proprietà per un'operazione di misurazione (incluso l'errore di lettura) sul qubit 0.

Visualizza le proprietà delle istruzioni

prob-meas0-prep1

Questo parametro indica la probabilità di misurare un qubit nello stato 0 quando era previsto di essere preparato nello stato 1|1\rangle, indicato come P(01)P(0 | 1). Riflette gli errori nella preparazione dello stato e nella misurazione (SPAM), in particolare gli errori di misurazione nei qubit superconduttori.

Visualizza con Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep1')
Visualizza su IBM Quantum PlatformSezione Dati di calibrazione, menu a tendina qubit
prob-meas1-prep0

Allo stesso modo, questo parametro rappresenta la probabilità di misurare un qubit nello stato 1 quando era previsto di essere preparato nello stato 0|0\rangle, indicato come P(10)P(1 | 0). Come prob_meas0_prep1, riflette gli errori SPAM, con gli errori di misurazione come principale contributo nei qubit superconduttori.

Visualizza con Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')
Visualizza su IBM Quantum PlatformSezione Dati di calibrazione, menu a tendina qubit
2Q error (Heron and Nighthawk: CZ, Eagle: ECR)

L'errore a due qubit per arco dallo stesso batch di misurazioni usato per calcolare l'errore mediano 2Q. 2Q error (best) si riferisce al minimo errore a due qubit su qualsiasi arco del dispositivo, anch'esso da questo batch di misurazioni.

Visualizza con Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2>]
Visualizza su IBM Quantum PlatformSezione Calibrazione: passa il cursore sulla connessione qubit nella vista Mappa, oppure trova il valore nella vista Tabella sotto la colonna CZ error (Heron e Nighthawk) o ECR error (Eagle); trova il valore per 2Q error (best) nella sezione Dettagli
Median 2Q error (Heron: CZ, Eagle: ECR)

Fedeltà media del gate dell'operazione a due qubit dal benchmarking randomizzato. Misurata in "isolamento": batch con una separazione minima di due qubit tra gli archi. Questo benchmarking randomizzato usa strati alternati di Clifford a singolo qubit e gate a due qubit, e quindi il valore finale dell'errore 2Q include l'errore dello strato di Clifford a singolo qubit.

Calcola con QiskitSegui l'esempio in questo notebook GitHub della Qiskit Community
Visualizza su IBM Quantum PlatformSezione Dettagli; trova anche i dati per arco nella sezione Dati di calibrazione
2Q error (layered)

Errore medio per gate stratificato (EPLG) in una catena di 100 qubit. L'EPLG medio misura l'errore medio del gate in una catena stratificata di NN qubit (NN=100 qui). È derivato da una quantità simile nota come fedeltà del layer (LF) dove EPLG100_{100} = 4/5(1-LF199^{\frac{1}{99}}) e la fedeltà del layer è la fedeltà di processo della catena stratificata di NN qubit. Per i dettagli, consulta il paper Benchmarking quantum processor performance at scale. Nota che nel paper EPLG è definito per l'errore di processo, ma per coerenza con gli errori di gate riportati individualmente qui è citato per l'errore medio del gate, da cui il fattore 4/5.

Su IBM Quantum Platform, la scheda informativa dettagliata per ogni QPU ha una sezione chiamata Errore del gate a due qubit (stratificato), che fornisce la vista espansa del minimo errore del gate a due qubit (stratificato) misurato in funzione del numero di qubit nella catena. Il valore finale, alla lunghezza della catena 100, è il valore presentato nella sezione Dettagli. In pratica, sei catene da 100 qubit (pre-selezionate sulla base delle prestazioni ottimali attese) vengono misurate, e il valore riportato per il numero di qubit N è il minimo errore trovato in una sottoinsieme di catena di lunghezza N ricercando nelle sei catene da 100 qubit.

Calcola con QiskitSegui l'esempio in questo notebook GitHub della Qiskit Community
Visualizza su IBM Quantum PlatformSezione Dettagli, e una vista espansa nella sezione Errore del gate a due qubit (stratificato)
RZZ error (Heron)

Errore nel gate RZZ mediato sugli angoli RZZ usando una variante del benchmarking randomizzato per unitari arbitrari.

Visualizza con QiskitImportante: assicurati di aver impostato use_fractional_gates=True quando carichi il backend, quindi puoi usare backend.target['rzz'][<qubit 1>, <qubit 2>]
Visualizza su IBM Quantum PlatformSezione Calibrazione: seleziona RZZ nel menu a tendina Connessione e passa il cursore sulla connessione qubit nella vista Mappa. Puoi anche selezionare RZZ error nel menu a tendina Output grafico nella vista Grafico, oppure trovare il valore nella vista Tabella sotto la colonna RZZ error
ID error / √x (sx) error / Pauli-X error / RX error

Errore nei gate discreti a durata finita a singolo qubit, misurato dal benchmarking randomizzato. La sequenza di benchmarking randomizzato include gate SX, ID e X, e si assume che i loro errori siano uguali. Il gate ID è un ritardo di durata pari alla durata dei gate √X e X. Il gate RX ha anche la stessa durata dei gate √X e X con ampiezza variabile, e quindi viene riportato come avente lo stesso errore di questi gate.

Visualizza con Qiskitbackend.target['<instruction>'][<qubit 1>, ]
Visualizza su IBM Quantum PlatformSezione Calibrazione: menu a tendina qubit
SX error (median)

Fedeltà media del gate del gate √X (SX) dal benchmarking randomizzato, misurata simultaneamente su tutti i qubit. La sequenza di benchmarking randomizzato include gate SX, ID e X, e si assume che i loro errori siano uguali.

Visualizza su IBM Quantum PlatformSezione Dettagli
Z-axis rotation (RZ) error

Errore nel gate RZ virtuale. Riportato come tutto 0 poiché vengono eseguiti via software.

Visualizza con Qiskit backend.target['<instruction>'][<qubit 1>, ]
Visualizza su IBM Quantum PlatformSezione Calibrazione: menu a tendina Connessione
Readout error

L'errore di lettura quantifica la probabilità media di misurare erroneamente lo stato di un qubit. È comunemente calcolato come la media di prob_meas0_prep1 e prob_meas1_prep0, fornendo una singola metrica per la fedeltà della misurazione.

Visualizza con Qiskitbackend.properties().readout_error(<qubit>)
Visualizza su IBM Quantum PlatformSezione Dati di calibrazione, menu a tendina qubit
Readout error (median)

Fedeltà dell'operazione di lettura. L'errore di lettura viene misurato preparando il qubit nello stato 0 (1) e misurando la probabilità di un output nello stato 1 (0). Il valore riportato è la media di questi due errori. La mediana è calcolata su tutti i qubit.

Visualizza su IBM Quantum PlatformSezione Dati di calibrazione, sezione Dettagli
Single-qubit gate length

Durata di un'operazione di gate a singolo qubit. Nota che i valori mostrati su IBM Quantum Platform sono in nanosecondi. I valori restituiti in Qiskit sono in secondi.

Visualizza con Qiskitbackend.target['<instruction>'][<qubit 1>, ].duration
Visualizza su IBM Quantum PlatformSezione Calibrazione: menu a tendina qubit
Gate length (2Q gates)

Durata dell'operazione di gate a due qubit. Nota che i valori mostrati su IBM Quantum Platform sono in nanosecondi. I valori restituiti in Qiskit sono in secondi.

Visualizza con Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2> ].duration
Visualizza su IBM Quantum PlatformSezione Calibrazione: menu a tendina qubit
Readout length

La lunghezza di lettura specifica la durata dell'operazione di lettura per un qubit. Misura il tempo dall'avvio dell'impulso di misurazione al completamento della digitalizzazione del segnale, dopo il quale il sistema è pronto per l'operazione successiva. Comprendere questo parametro è fondamentale per ottimizzare l'esecuzione del circuito, specialmente quando si incorporano misurazioni a metà circuito.

Visualizza con Qiskit
  • Per measure: backend.properties().readout_length(<qubit>)
  • Per measure_2: backend.target['measure_2'][<qubit 1>, ].duration
Visualizza su IBM Quantum PlatformSezione Dati di calibrazione, menu a tendina qubit
backend.target["cz"][(1, 0)]
InstructionProperties(duration=6.8e-08, error=0.010202155482934266)
backend.target["measure"][(0,)]
InstructionProperties(duration=1.56e-06, error=0.025634765625)

Proprietà aggiuntive

CLOPS (or CLOPS_h)

Le operazioni di layer di circuito al secondo (CLOPS) sono una misura di quanti layer di un circuito 100x100 (circuito hardware-aware) una QPU può eseguire per unità di tempo.

Calcola con QiskitTrova il codice CLOPS nel GitHub della Qiskit Community
Visualizza su IBM Quantum PlatformSezione Dettagli
Status

Con BackendStatus, puoi trovare lo stato della QPU (ad esempio, Active, Paused, Offline) così come il numero di job in attesa.

Visualizza con Qiskitprint(backend.status().status_msg), print(backend.status().pending_jobs)
Visualizza su IBM Quantum PlatformSezione Dettagli
Topology diagram or coupling map

Un diagramma che indica le coppie di qubit che supportano operazioni di gate a due qubit tra di loro. Questo è chiamato anche mappa di accoppiamento o connettività. I qubit sono rappresentati come cerchi e le operazioni di gate a due qubit supportate sono mostrate come linee che collegano i qubit.

Visualizza con Qiskitfrom qiskit.visualization import plot_gate_map then plot_gate_map(backend)
Visualizza su IBM Quantum PlatformSezione Dati di calibrazione; fai clic su Espandi per una vista più grande
Cosa significa `error = 1`?

Se il benchmarking di un qubit o arco non riesce nel corso di diversi giorni, che sia a causa di scarsa qualità dei dati o altri fattori interni, il valore di errore riportato è considerato obsoleto e verrà riportato come 1. Questo non indica che il qubit o l'arco sia necessariamente non funzionante o che l'errore sia 1; piuttosto, l'errore è considerato indefinito e dovresti procedere con cautela quando operi quel qubit o gate.

Prossimi passi

Raccomandazioni