Visualizza i dettagli del backend
Il codice presente in questa pagina è stato sviluppato utilizzando i seguenti requisiti. Si consiglia di utilizzare queste versioni o versioni più recenti.
qiskit-ibm-runtime~=0.47.0
Questa pagina spiega come trovare informazioni sui backend disponibili.
Elenco o filtro dei backend
Elenco dei backend disponibili
È possibile utilizzare Qiskit o IBM Quantum Platform per visualizzare un elenco dei backend disponibili o per cercare un backend specifico.
Le QPU ospitate su IBM Cloud® hanno nomi che iniziano con ibm_*. A tutte le QPU viene assegnato il nome di una città, ad esempio ibm_kingston. Questo nome non indica dove è ospitato il QPU effettivo.
Utilizza il QiskitRuntimeService.backends() metodo, come mostrato nel blocco di codice successivo. Questo metodo restituisce un elenco di IBMBackend istanze.
Per eseguire il codice seguente, assicurati di aver già effettuato l'autenticazione al servizio. Per ulteriori dettagli, consulta la sezione Configura il tuo account IBM Cloud.
# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
service.backends()Output:
[<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_miami')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>]
Per cercare un backend specifico, utilizzare il QiskitRuntimeService.backend() metodo (si noti che è singolare: backend ), che accetta il nome del backend come parametro di input e restituisce IBMBackend un'istanza che rappresenta quel particolare backend:
service.backend("ibm_fez")Output:
<IBMBackend('ibm_fez')>
Per visualizzare i backend a cui hai accesso, vai all'elenco dei backend nella pagina Risorse di calcolo (tieni presente che la regione selezionata potrebbe influire sui QPU elencati). Fai clic sull'icona del filtro e seleziona "Tutte le mie istanze" o il nome di un'istanza specifica per visualizzare le QPU disponibili.
Se hai effettuato l'accesso a un'istanza o a una regione specifica, oppure se hai inizializzato il servizio con un'istanza o una regione specifica utilizzando QiskitRuntimeService(), verranno restituiti solo i backend disponibili su tale istanza o regione.
Backend dei filtri
È possibile filtrare i backend disponibili in base alla loro configurazione o al loro stato. Per filtri più generici, impostare filters l'argomento su una funzione che accetta un oggetto backend e restituisce True se soddisfa i criteri specificati. Per ulteriori dettagli, consultare la documentazione API.
Il codice seguente restituisce solo i backend che soddisfano questi criteri e sono disponibili sull'istanza attualmente selezionata :
- Sono veri dispositivi quantistici (
simulator=False) - Sono attualmente operativi (
operational=True) - Avere almeno un centinaio di qubit (
min_num_qubits=100)
# 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)Output:
[<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_miami')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>]
Un metodo simile è QiskitRuntimeService.least_busy(), che utilizza gli stessi filtri di backends() ma restituisce il backend che corrisponde ai filtri e ha il minor numero di lavori in sospeso nella coda:
service.least_busy(operational=True, min_num_qubits=100)Output:
<IBMBackend('ibm_fez')>
Per visualizzare i backend a cui hai accesso, consulta la tabella nella pagina Risorse di calcolo. Clicca sull'icona del filtro per visualizzare le opzioni di filtro. È possibile filtrare per tipo di processore e stato. Si noti inoltre che è possibile ordinare la tabella in base a qualsiasi colonna passando con il mouse sul titolo della colonna e facendo clic sulle frecce che compaiono.
Informazioni statiche sul backend
Alcune informazioni relative al backend non cambiano regolarmente, come il nome, la versione, il numero di qubit, il tipo di processore (il nome della famiglia di processori, che indica la topologia e il numero approssimativo di qubit) e i tipi di funzionalità supportate. Queste informazioni sono disponibili come attributi backend dell'oggetto. Per un elenco completo degli attributi, consultare la IBMBackend documentazione API. Per ulteriori informazioni sul versioning, consultare la sezione dedicata al versioning QPU riportata di seguito.
La regione di un backend (la posizione del data center in cui saranno ospitati ed elaborati i dati e gli esperimenti) è elencata nella 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 programmable qubits: {backend.num_qubits}\n"
f"Processor type: {backend.processor_type}\n"
)Output:
Name: ibm_fez
Version: 1.3.37
No. of programmable qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}
Accedere alla pagina Risorse di calcolo per visualizzare una tabella di tutte le QPU, quindi fare clic sul nome di una QPU qualsiasi per aprire la scheda con le informazioni dettagliate. Trova le informazioni di backend nella sezione Dettagli della scheda.
Versioni QPU
Ogni QPU ha un numero di versione nel formato X.Y.Z ( major.minor.revision ). Un circuito compilato per un determinato numero di versione è garantito per funzionare su quella QPU. Se il numero di revisione cambia, il circuito continuerà a funzionare. Se il numero maggiore o minore cambia, non è garantito che il circuito funzioni, anche se potrebbe farlo.
Il numero della versione di revisione aumenterà per le correzioni che non compromettono il circuito compilato esistente.
L'esempio di codice riportato in precedenza in questa sezione mostra come trovare la versione di un backend. In IBM Quantum Platform è possibile visualizzare la versione nella scheda delle informazioni dettagliate di una QPU (fare clic sul nome della QPU nella tabella Risorse di calcolo per aprire la scheda).
Le condizioni alle quali un numero di versione o di revisione può cambiare sono elencate nella tabella seguente.
Versione principale | Versione secondaria | Versione revisionata |
|---|---|---|
| Esempi di modifiche | Cicli di riscaldamento/defaticamento | Aggiornamenti software QPU |
| Modifiche significative all'elettronica di controllo | Sostituzione di alcuni componenti elettronici, se la sostituzione influisce in modo significativo sul funzionamento | Calibrazioni manuali per migliorare la fedeltà |
| Spostamento della QPU in una nuova posizione, se ne derivano cambiamenti significativi nel comportamento | Abbassamento di un cancello per un certo periodo di tempo a causa di problemi di calibrazione e impossibilità di effettuare correzioni tramite software | Piccole modifiche elettroniche che non influiscono sul funzionamento |
| Cambiare la direzione di un gate CNOT |
Istruzioni supportate
Ogni famiglia di processori supporta in modo nativo un insieme limitato di istruzioni. Questo set include porte a uno e due qubit, nonché operazioni non unitarie quali misurazione e ripristino. Ogni gate nel circuito deve essere tradotto (dal transpiler) negli elementi del set di istruzioni supportato dalla QPU prima di poter essere eseguito sulla QPU.
È possibile visualizzare i set di istruzioni supportati per una QPU con Qiskit. La pagina Risorse di calcolo dell' IBM Quantum Platform elenca solo i gate unitari supportati (gate di base) per una QPU.
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}")Output:
Backend: ibm_kingston
Processor type: {'family': 'Heron', 'revision': '2'}
Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']
Accedere alla pagina Risorse di calcolo per visualizzare una tabella di tutte le QPU, quindi fare clic sul nome di una QPU qualsiasi per aprire la scheda con le informazioni dettagliate. I gate di base per quella QPU sono elencati nella sezione Dettagli.
Tabella delle istruzioni supportate
Categoria operativa | Nome |
|---|---|
| Porte a singolo qubit | RZ, SX, X, ID, delay |
| Porte a due qubit | CZ, ECR |
| Porte frazionarie | RX (qubit singolo), RZZ (due qubit) |
| Istruzioni non unitarie | measure, reset, measure_*, delay |
| Flusso di controllo | if_else (feedforward classico) |
Informazioni dinamiche sul backend
I backend hanno anche proprietà che cambiano ogni volta che il backend viene calibrato, come la durata dei qubit e i tassi di errore operativi. Le proprietà del backend vengono aggiornate al termine della sequenza di calibrazione. Queste proprietà possono essere utilizzate per ottimizzare i circuiti quantistici o per costruire modelli di rumore per un simulatore classico. Per ulteriori informazioni, consultare la guida alle operazioni di calibrazione.
Su IBM Quantum Platform è possibile scaricare i dati di calibrazione come file CSV. Fare clic su una QPU nella pagina Risorse di calcolo per visualizzare la scheda informativa dettagliata, quindi fare clic sull'icona di download nell'angolo in alto a destra della sezione Dati di calibrazione.
È possibile recuperare i 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 sulle caratteristiche fisiche dei qubit. Contiene un dizionario delle varie proprietà del qubit, ciascuna abbinata al proprio 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.
# fundamental physical properties of qubit 1
backend = service.backend("ibm_fez")
backend.qubit_properties(1)Output:
QubitProperties(t1=0.00019233494213807877, t2=0.00023593910973864878, 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")Output:
Qubit 126 Properties:
T1: 1.6203279905573543e-05 seconds
T2: 2.7965850265833494e-05 seconds
Readout Error: 0.0601806640625
P(0 | 1): 0.0908203125
P(1 | 0): 0.029541015625
Readout Length: 1.66e-06 seconds
Visualizza le proprietà dei qubit
Il tempo di transizione di un qubit ( ) rappresenta la durata media durante la quale un qubit rimane nel suo stato eccitato ( ) prima di decadere al suo stato fondamentale ( ) a causa del rilassamento energetico. Questo parametro viene utilizzato per caratterizzare il comportamento di rilassamento energetico del qubit ed è espresso in secondi (s).
Visualizza con Qiskitbackend.properties().t1(<qubit>)Visualizza su IBM Quantum PlatformSezione dei dati di calibrazione: menu a tendina “Qubit”; individuare il valore mediano dell’ e nella sezione “Dettagli” Il tempo di coerenza ( ) indica il periodo di tempo durante il quale un qubit mantiene la coerenza di fase di una sovrapposizione tra gli stati e . Tiene conto sia dei processi di rilassamento energetico che di quelli di puro sfasamento, fornendo informazioni sulle proprietà di coerenza del qubit. L' e è riportato da una sequenza di eco di Hahn.
Visualizza con Qiskitbackend.properties().t2(<qubit>)Visualizza su IBM Quantum PlatformSezione dei dati di calibrazione: menu a tendina “Qubit”; individuare il valore mediano dell’ e nella sezione “Dettagli”
Proprietà delle istruzioni
Vai all'elenco delle proprietà delle istruzioni
L'attributo backend.target è un qiskit.transpiler.Target oggetto: un oggetto che contiene tutte le informazioni necessarie per transpilare un circuito per quel backend. Ciò include errori di istruzione e durate. Ad esempio, la cella seguente ottiene le proprietà per un cz cancello che agisce tra i qubit 1 e 0.
backend.target["cz"][(1, 0)]Output:
InstructionProperties(duration=6.8e-08, error=0.007988386842696815)
La cella seguente mostra le proprietà di un'operazione di misurazione (compreso l'errore di lettura) sul qubit 0.
backend.target["measure"][(0,)]Output:
InstructionProperties(duration=1.66e-06, error=0.00927734375)
Visualizza le proprietà delle istruzioni
Questo parametro indica la probabilità di misurare un qubit nello stato quando si intendeva prepararlo nello stato , indicato come . Esso riflette gli errori nella preparazione e nella misurazione dello stato (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 dei dati di calibrazione: menu a tendina "Qubit" Analogamente, questo parametro rappresenta la probabilità di misurare un qubit nello stato quando si intendeva prepararlo nello stato , indicato con . Come
prob_meas0_prep1, riflette gli errori SPAM, con gli errori di misurazione che costituiscono il fattore predominante nei qubit superconduttori.Visualizza con Qiskitbackend.properties().qubit_property(<qubit>, 'prob_meas0_prep0')Visualizza su IBM Quantum PlatformSezione dei dati di calibrazione: menu a tendina "Qubit" L'errore a due qubit per bordo dallo stesso lotto di misurazioni utilizzato per calcolare l'errore mediano dell' 2Q. 2Q L'errore (migliore) si riferisce all'errore più basso a due qubit su qualsiasi bordo del dispositivo, anch'esso ricavato da questa serie di misurazioni.
Visualizza con Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2>]Visualizza su IBM Quantum PlatformSezione Calibrazione: passa con il mouse sopra la connessione qubit nella vista Mappa oppure trova il valore nella vista Tabella sotto la colonna Errore CZ (Heron e Nighthawk) o Errore ECR (Eagle); trova il valore per l'errore dell' 2Q e (migliore) nella sezione Dettagli Fedeltà media del gate dell'operazione a due qubit dal benchmarking randomizzato. Misurato in "isolamento": batch con una separazione minima di due qubit tra i bordi. Questo benchmarking randomizzato utilizza strati alternati di Clifford a singolo qubit e gate a due qubit, pertanto il valore finale dell'errore dell' 2Q e include l'errore dello strato di Clifford a singolo qubit.
Calcola con QiskitSegui l'esempio riportato in questo notebook della comunità Qiskit GitHub Visualizza su IBM Quantum PlatformSezione Dettagli; trova anche i dati per bordo nella sezione Dati di calibrazione Errore medio per gate stratificato (EPLG) in una catena di 100 qubit. L'EPLG medio misura l'errore medio di gate in una catena stratificata di qubit dell' (in questo caso =100). È derivato da una quantità simile nota come fedeltà di strato (LF), dove EPLG = 4/5(1-LF ) e la fedeltà di strato è la fedeltà di processo della catena stratificata di qubit . Per ulteriori dettagli, consultare il documento Benchmarking quantum processor performance at scale (Analisi comparativa delle prestazioni dei processori quantistici su larga scala). Si noti che nel documento EPLG è definito per l'errore di processo, ma per coerenza con gli errori di gate riportati individualmente qui è citato per l'errore medio di gate, quindi il fattore 4/5.
Su IBM Quantum Platform, la scheda informativa dettagliata per ciascuna QPU presenta una sezione denominata Errore di gate a due qubit (a livelli), che fornisce una visione ampliata del valore più basso
two-qubit gate error (layered)misurato in funzione del numero di qubit nella catena. Il valore finale, con una lunghezza della catena pari a 100, è il valore presentato nella sezione Dettagli. In pratica, vengono misurate sei catene da 100 qubit (preselezionate in base alle prestazioni ottimali previste) e il valore riportato per il numero di qubitNè l'errore più basso riscontrato in una catena diNlunghezza sottoinsieme che ricerca tra le sei catene da 100 qubit.Calcola con QiskitSegui l'esempio riportato in questo notebook della comunità Qiskit GitHub Visualizza su IBM Quantum PlatformSezione Dettagli e una vista ampliata nella sezione Errore di gate a due qubit (a strati) Errore nel gate RZZ mediato sugli angoli RZZ utilizzando una variante del benchmarking randomizzato per unitaries arbitrari.
Visualizza con QiskitImportante: assicurati di aver impostato use_fractional_gates=Truequando carichi il backend, quindi puoi utilizzarebackend.target['rzz'][<qubit 1>, <qubit 2>]Visualizza su IBM Quantum PlatformSezione Calibrazione: selezionare RZZ nel menu a tendina Connessione e passare con il mouse sulla connessione qubit nella vista Mappa. È anche possibile selezionare l'errore RZZ nel menu a tendina Output grafico nella vista Grafico, oppure trovare il valore nella vista Tabella nella colonna Errore RZZ Errore nei gate discreti a durata finita a un qubit, misurato da benchmarking randomizzati. La sequenza di benchmarking randomizzata include i gate SX, ID e X, e si presume che i loro errori siano gli stessi. 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, quindi viene segnalato 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 Fedeltà media del gate √X (SX) ottenuta da benchmarking randomizzato, misurata simultaneamente su tutti i qubit. La sequenza di benchmarking randomizzata include i gate SX, ID e X, e si presume che i loro errori siano gli stessi.
Visualizza su IBM Quantum PlatformSezione dettagli Errore nel gate virtuale RZ. Segnalati come tutti 0 poiché vengono eseguiti nel software.
Visualizza con Qiskitbackend.target['<instruction>'][<qubit 1>,]Visualizza su IBM Quantum PlatformSezione Calibrazione: menu a tendina Connessione L'errore di lettura quantifica la probabilità media di misurare in modo errato lo stato di un qubit. È comunemente calcolato come media di
prob_meas0_prep1eprob_meas1_prep0, fornendo un unico parametro per misurare la fedeltà.Visualizza con Qiskitbackend.properties().readout_error(<qubit>)Visualizza su IBM Quantum PlatformSezione dei dati di calibrazione: menu a tendina "Qubit" Affidabilità dell'operazione di lettura. L'errore di lettura viene misurato preparando il qubit nello stato ( ) e misurando la probabilità di ottenere un risultato nello stato ( ). Il valore riportato corrisponde alla media di questi due errori. La mediana viene calcolata considerando tutti i qubit.
Visualizza su IBM Quantum PlatformSezione "Dati di calibrazione": Sezione "Dettagli" Durata di un'operazione gate su un singolo qubit. Si noti che i valori indicati su IBM Quantum Platform sono espressi in nanosecondi. I valori restituiti in Qiskit sono espressi in secondi.
Visualizza con Qiskitbackend.target['<instruction>'][<qubit 1>,].durationVisualizza su IBM Quantum PlatformSezione Calibrazione: menu a tendina Qubit Durata dell'operazione del gate a due qubit. Si noti che i valori indicati su IBM Quantum Platform sono espressi in nanosecondi. I valori restituiti in Qiskit sono espressi in secondi.
Visualizza con Qiskitbackend.target['<instruction>'][<qubit 1>, <qubit 2>].durationVisualizza su IBM Quantum PlatformSezione Calibrazione: menu a tendina Qubit La lunghezza di lettura specifica la durata dell'operazione di lettura per un qubit. Misura il tempo che intercorre tra l'inizio dell'impulso di misurazione e il completamento della digitalizzazione del segnale, dopodiché il sistema è pronto per l'operazione successiva. Comprendere questo parametro è fondamentale per ottimizzare l'esecuzione dei circuiti, 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 dei dati di calibrazione: menu a tendina "Qubit" - Per
L'errore di inizializzazione quantifica la percentuale della popolazione che si trova nello stato dopo il ritardo di ripetizione predefinito e la procedura di inizializzazione del qubit, quando l'esperimento precedente aveva preparato il qubit nello stato . Si noti che questa grandezza è leggermente diversa dalla
prob_meas1_prep0, che misura la percentuale delle misurazioni assegnate allo stato “ ”. Quest’ultimo è un parametro che misura sia l’errore di inizializzazione sia la procedura di discriminazione tra gli stati “ ” e “ ”. Nel limite di una misurazione perfetta, le due grandezze coincidono.Visualizza con Qiskitbackend.properties().qubit_property(<qubit>, 'init_error')Visualizza su IBM Quantum PlatformSezione dei dati di calibrazione: menu a tendina "Qubit"
Proprietà aggiuntive
Il numero massimo di circuiti al secondo (MCPS) comprende la misurazione, il reset e la reinizializzazione di un circuito con una porta di Hadamard e una singola misurazione.
Visualizza con Qiskitmcps = backend.configuration().mcpsVisualizza su IBM Quantum PlatformSezione dettagli Le operazioni al secondo a livello di circuito (CLOPS) sono una misura del numero di livelli di un circuito hardware-aware ( 100x100 ) che una QPU è in grado di eseguire per unità di tempo.
Calcola con QiskitTrova il codice CLOPS nella comunità Qiskit GitHub Visualizza su IBM Quantum PlatformSezione dettagli Con
BackendStatus, è possibile trovare lo stato della QPU (ad esempio,Active,Paused,Offline) e il numero di lavori in sospeso.Visualizza con Qiskitprint(backend.status().status_msg),print(backend.status().pending_jobs)Visualizza su IBM Quantum PlatformSezione dettagli Un diagramma che indica le coppie di qubit che supportano operazioni di gate a due qubit tra loro. Questo è anche chiamato mappa di accoppiamento o connettività. I qubit sono rappresentati come cerchi e le operazioni di gate a due qubit supportate sono visualizzate come linee che collegano i qubit.
Visualizza con Qiskitfrom qiskit.visualization import plot_gate_mapalloraplot_gate_map(backend)Visualizza su IBM Quantum PlatformSezione dati di calibrazione; clicca su Espandi per ingrandire la visualizzazione
Se il benchmarking di un qubit o di un bordo non va a buon fine nel corso di diversi giorni, a causa della scarsa qualità dei dati o di altri fattori interni, il valore di errore segnalato viene considerato obsoleto e verrà riportato come 1. Ciò non significa che il qubit o il bordo siano necessariamente non funzionanti o che l'errore sia 1; piuttosto, l'errore è considerato indefinito e occorre procedere con cautela quando si utilizza quel qubit o gate.
Passi successivi
- Impara a costruire modelli di rumore per eseguire simulazioni classiche rumorose.
- Consulta l'argomento Fasi del transpiler per scoprire come il transpiler utilizza le proprietà del backend per l'ottimizzazione dei circuiti.
- Consulta la guida di riferimento dell'API backend di QiskitRuntime.