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.
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.
- Visualizza i backend con Qiskit
- Visualizza i backend su IBM Quantum Platform
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:
Per visualizzare i backend a cui hai accesso, vai all'elenco dei backend nella pagina Risorse di calcolo (nota che la regione selezionata potrebbe influenzare le QPU elencate). Fai clic sull'icona del filtro e scegli "Tutte le mie istanze" o un nome di istanza specifico per vedere le QPU disponibili.
# 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')>]
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
- Filtra per proprietà con Qiskit
- Filtra per proprietà su IBM Quantum Platform
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:
Per visualizzare i backend a cui hai accesso, consulta la tabella nella pagina Risorse di calcolo. Fai clic sull'icona del filtro per vedere le opzioni di filtro. Puoi filtrare per tipo di processore e stato. Nota anche che puoi ordinare la tabella per qualsiasi colonna passando il cursore sul titolo della colonna, quindi facendo clic sulle frecce che appaiono.
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.
- Visualizza le informazioni del backend con Qiskit
- Visualizza le informazioni del backend su IBM Quantum Platform
Vai alla pagina Risorse di calcolo per visualizzare una tabella di tutte le QPU, quindi fai clic sul nome di qualsiasi QPU per aprire la sua scheda informativa dettagliata. Trova le informazioni del backend nella sezione Dettagli della scheda.
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 major | Versione minor | Versione revisione |
|---|---|---|
| Modifiche campione | Cicli di riscaldamento / raffreddamento | Aggiornamenti software della QPU |
| Modifiche importanti all'elettronica di controllo | Sostituzione di alcuni componenti elettronici, se il sostituto influisce apprezzabilmente sul funzionamento | Calibrazioni manuali per migliorare le fedeltà |
| Spostamento della QPU in una nuova posizione, se ne risultano cambiamenti significativi nel comportamento | Disattivazione di un gate per un certo periodo di tempo a causa di problemi di calibrazione, e le correzioni non possono essere facilmente effettuate via software | Piccole 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.
- Trova le istruzioni supportate con Qiskit
- Trova i gate base su IBM Quantum Platform
Vai alla pagina Risorse di calcolo per visualizzare una tabella di tutte le QPU, quindi fai clic sul nome di qualsiasi QPU per aprire la sua scheda informativa dettagliata. I gate base per quella QPU sono elencati nella sezione Dettagli.
Tabella delle istruzioni supportate
| Categoria di operazione | Nome |
|---|---|
| gate a singolo qubit | RZ, SX, X, ID, delay |
| gate a due qubit | CZ, ECR |
| gate frazionari | RX (singolo qubit), RZZ (due qubit) |
| Istruzioni non unitarie | measure, reset, measure_*, delay |
| Flusso di controllo | if_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.
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 rappresenta la durata media in cui un qubit rimane nel suo stato eccitato prima di decadere al suo stato fondamentale per rilassamento energetico. Questo parametro è usato per caratterizzare il comportamento di rilassamento energetico del qubit, ed è espresso in unità di secondi (s).
| Visualizza con Qiskit | backend.properties().t1(<qubit>) |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione Dati di calibrazione, menu a tendina qubit; trova il valore mediano di nella sezione Dettagli |
T2 (Dephasing time)
Il tempo indica la scala temporale su cui un qubit mantiene la coerenza di fase di una sovrapposizione tra gli stati e . Tiene conto sia del rilassamento energetico che dei processi di pura defasatura, fornendo informazioni sulle proprietà di coerenza del qubit. è riportato da una sequenza di eco di Hahn.
| Visualizza con Qiskit | backend.properties().t2(<qubit>) |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione Dati di calibrazione, menu a tendina qubit; trova il valore mediano di 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 , indicato come . Riflette gli errori nella preparazione dello stato e nella misurazione (SPAM), in particolare gli errori di misurazione nei qubit superconduttori.
| Visualizza con Qiskit | backend.properties().qubit_property(<qubit>, 'prob_meas0_prep1') |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 , indicato come . Come prob_meas0_prep1, riflette gli errori SPAM, con gli errori di misurazione come principale contributo nei qubit superconduttori.
| Visualizza con Qiskit | backend.properties().qubit_property(<qubit>, 'prob_meas0_prep0') |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 Qiskit | backend.target['<instruction>'][<qubit 1>, <qubit 2>] |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 Qiskit | Segui l'esempio in questo notebook GitHub della Qiskit Community |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 qubit (=100 qui). È derivato da una quantità simile nota come fedeltà del layer (LF) dove EPLG = 4/5(1-LF) e la fedeltà del layer è la fedeltà di processo della catena stratificata di 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 Qiskit | Segui l'esempio in questo notebook GitHub della Qiskit Community |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 Qiskit | Importante: 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 Platform | Sezione 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 Qiskit | backend.target['<instruction>'][<qubit 1>, ] |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 Platform | Sezione 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 Platform | Sezione 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 Qiskit | backend.properties().readout_error(<qubit>) |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 Platform | Sezione 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 Qiskit | backend.target['<instruction>'][<qubit 1>, ].duration |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 Qiskit | backend.target['<instruction>'][<qubit 1>, <qubit 2> ].duration |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 |
|
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 Qiskit | Trova il codice CLOPS nel GitHub della Qiskit Community |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 Qiskit | print(backend.status().status_msg), print(backend.status().pending_jobs) |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione 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 Qiskit | from qiskit.visualization import plot_gate_map then plot_gate_map(backend) |
|---|---|
| Visualizza su IBM Quantum Platform | Sezione Dati di calibrazione; fai clic su Espandi per una vista più grande |
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
- Scopri come costruire modelli di rumore per effettuare simulazioni classiche rumorose.
- Esamina l'argomento Fasi del transpiler per scoprire come il transpiler usa le proprietà del backend per l'ottimizzazione dei circuiti.
- Consulta il riferimento API del backend QiskitRuntime.