Skip to main content
IBM Quantum Platform

Riferimento API di QESEM by Qedma

  • Qiskit Functions

    Qiskit Functions — strumenti preconfigurati realizzati da organizzazioni partner — astraggono alcune parti del flusso di lavoro dello sviluppo software per semplificare e accelerare l'individuazione di algoritmi su larga scala e lo sviluppo di applicazioni. Clicca qui per visualizzare la guida relativa a questa funzione di Qiskit.


Input

pubs

Tipo: EstimatorPubLike

Questo è l'input principale. Il Pub contiene da 2 a 4 elementi: un circuito, una o più grandezze osservabili, 0 o un unico insieme di valori dei parametri e una precisione facoltativa. Se non è stata specificata alcuna precisione, verrà utilizzata quella default_precision predefinita options .

La precisione dell' PUB e può essere un valore float o un dizionario. Un numero in virgola mobile definisce la precisione desiderata per i valori attesi restituiti. Un dizionario associa i fattori di scala del rumore alle precisioni desiderate e richiede i risultati del Quasi-probabilistic Error Tuning (QET) alle scale specificate.

QESEM restituirà anche fattori di scala complementari intorno a 1.0; la precisione desiderata è garantita solo per i fattori di scala richiesti.

  • Obbligatorio: sì
  • Esempio: [(circuit, [obs1,obs2,obs3], parameter_values, 0.03)]
  • Esempio di QET: [(circuit, [obs1, obs2], None, {0.5: 0.15, 1.3: 0.2})]

backend_name

Tipo: `str`

Valore predefinito: QESEM will get least busy device reported by IBM

Nome del backend da utilizzare

  • Obbligatorio: No
  • Esempio: "ibm_fez"

instance

Tipo: `str`

Il nome della risorsa cloud dell'istanza da utilizzare in quel formato

  • Obbligatorio: No
  • Esempio: "CRN"

Opzioni

Tipo: `dict`

I parametri di input per questa funzione sono specificati come un dizionario annidato. Consulta l 'elenco completo delle opzioni e i relativi valori predefiniti.

  • Obbligatorio: No
  • Esempio: { "default_precision": 0.03, "max_execution_time": 3600, "transpilation_level": "standard"}

Elenco opzioni

estimate_time_only

Valore predefinito: None

Questo flag consente agli utenti di ottenere una stima del tempo di elaborazione QPU necessario per eseguire il circuito con QESEM.

  • Se impostato su Nessuno, il circuito verrà eseguito con QESEM.
  • Se impostato su "analytical", viene calcolato un limite massimo del tempo di esecuzione della QPU senza consumare alcuna risorsa della QPU. Questa stima ha una risoluzione di 30 minuti (ad esempio, 30 minuti, 60 minuti, 90 minuti e così via). È tipicamente pessimistica e può essere ottenuta solo per osservabili di Pauli singoli o per somme di osservabili di Pauli senza supporti che si intersecano (ad esempio, Z0+Z1 ). È utile soprattutto per confrontare i livelli di complessità dei diversi parametri specificati dall'utente (circuito, precisione e così via).
  • Per ottenere una stima più accurata del tempo di elaborazione della QPU, impostare questo flag su "empirical". Sebbene questa opzione richieda l'esecuzione di un numero limitato di cicli, fornisce una stima del tempo di elaborazione della QPU notevolmente più accurata. Questa stima ha una risoluzione di 5 minuti (ad esempio, 20 minuti, 25 minuti, 30 minuti e così via). L'utente può scegliere di eseguire la stima empirica dei tempi in modalità batch o in modalità sessione. Per ulteriori dettagli, consultare la execution_mode descrizione. Ad esempio, in modalità batch, la stima empirica dei tempi richiederà meno di 10 minuti di tempo di elaborazione della QPU.
  • Opzioni: "analytical" / "empirical" / Nessuna
default_precision

Valore predefinito: 0.02

Si applicherà a pubs quelli che non hanno precisione. La precisione indica l'errore ammissibile sui valori attesi delle grandezze osservabili, espresso in valore assoluto. In particolare, il tempo di esecuzione della QPU per la mitigazione sarà determinato in modo da fornire valori di output per tutte le grandezze osservabili di interesse che rientrano in un intervallo di confidenza di 1 σ\sigma e rispetto alla precisione target. Se vengono fornite più grandezze osservabili, la mitigazione proseguirà fino al raggiungimento della precisione desiderata per ciascuna delle grandezze osservabili in ingresso.

  • Valori: 0 < float
max_execution_time

Valore predefinito: 3,600 (one hour)

Consente di limitare la durata della QPU, espressa in secondi, da utilizzare per l'intero processo QESEM. Il valore predefinito è 3.600 secondi (un'ora). Poiché il tempo totale richiesto dalla QPU per raggiungere l'accuratezza desiderata viene determinato dinamicamente durante l'esecuzione del processo QESEM, questo parametro consente di limitare il costo dell'esperimento. Se il tempo di QPU determinato dinamicamente è inferiore al tempo assegnato dall'utente, questo parametro non influirà sull'esperimento. Il max_execution_time parametro è particolarmente utile nei casi in cui la stima del tempo di analisi fornita da QESEM prima dell'avvio del processo risulti troppo pessimistica e l'utente desideri comunque avviare un processo di mitigazione. Una volta raggiunto il limite di tempo, QESEM smette di inviare nuovi circuiti. I circuiti già inviati continuano a essere eseguiti (pertanto il tempo totale potrebbe superare il limite di massimo 30 minuti) e l'utente riceve i risultati elaborati relativi ai circuiti eseguiti fino a quel momento. Se si desidera applicare un limite di tempo per la QPU inferiore alla stima analitica del tempo, si consiglia di rivolgersi a Qedma per ottenere una stima dell'accuratezza ottenibile entro tale limite di tempo.

  • Opzioni: 0 ≤ numero intero ≤ 28.800 (8 ore)
transpilation_level

Valore predefinito: standard

Una volta inviato un circuito a QESEM, il sistema prepara automaticamente diverse trasposizioni alternative del circuito e sceglie quella che riduce al minimo il tempo di elaborazione della QPU. Ad esempio, implementazioni alternative potrebbero utilizzare porte RZZ frazionarie ottimizzate con il metodo Qedma per ridurre la profondità del circuito. Ovviamente, tutti i circuiti di trasposizione sono equivalenti al circuito di ingresso, in termini di uscita ideale. Per esercitare un maggiore controllo sulla traslazione dei circuiti, impostare il livello di traslazione nel file options. Mentre "transpilation_level": "standard" corrisponde al comportamento predefinito descritto sopra, "transpilation_level": "minimal_with_layout_opt" prevede solo le modifiche minime necessarie al circuito originale; ad esempio, la mappatura del circuito sul grafico di connettività del dispositivo. Si noti che in ogni caso viene applicata la mappatura automatica dell'hardware su qubit ad alta fedeltà.

transpilation_level
Descrizione
"standard"Traspilazione QESEM predefinita. Prepara diverse trasposizioni alternative e sceglie quella che riduce al minimo il tempo di elaborazione. Le barriere possono essere modificate nella fase di stratificazione.
"minimal_with_layout_opt"Trasposizione minima: il circuito ottimizzato sarà strutturalmente molto simile al circuito di ingresso. I circuiti forniti in questo livello devono corrispondere all'insieme di porte di base del dispositivo; pertanto, è necessario trasporre separatamente il proprio circuito nell'insieme di porte di base del dispositivo. Ad esempio: CX, Rzz(α) e i gate standard a singolo qubit (U, x, sx, rz e così via). Nella fase di stratificazione verranno rispettate le barriere.

Per i lavori che contengono più PUB di input o più istanze di circuiti associate a parametri, utilizzare "minimal_with_layout_opt".

  • Opzioni: "minimal_with_layout_opt" / "standard"
execution_mode

Valore predefinito: batch

L'utente può scegliere di eseguire il processo QESEM in una sessione dedicata di IBM oppure in più batch di IBM :

  • Modalità a sessioni : le sessioni sono più costose, ma garantiscono tempi di elaborazione più brevi. Una volta avviata la sessione, la QPU viene riservata esclusivamente al processo QESEM. Il calcolo dell'utilizzo comprende sia il tempo impiegato per l'esecuzione su QPU sia i calcoli classici associati (eseguiti da QESEM e IBM ). La funzione QESEM Qiskit si occupa di creare e chiudere automaticamente la sessione. Agli utenti che dispongono di accesso illimitato alle QPU (ad esempio, nelle configurazioni on-premise) si consiglia di utilizzare la modalità sessione per velocizzare l'esecuzione di QESEM.

  • Modalità batch : in modalità batch, la QPU viene liberata durante i calcoli classici, con conseguente riduzione del suo utilizzo. Poiché i processi batch si protraggono solitamente per un periodo più lungo, il rischio di scostamenti hardware è maggiore; QESEM integra misure volte a rilevare e compensare tali scostamenti, garantendo l'affidabilità anche durante esecuzioni prolungate.

  • Opzioni: "session" / "batch"

parallel_execution

Valore predefinito: True

Questo flag consente all'utente di eseguire il circuito di input in parallelo sulla QPU. QESEM verifica se le altre patch presenti sulla QPU abbiano una fedeltà sufficiente. Se tali patch riducono il tempo di elaborazione della QPU, QESEM esegue il circuito di ingresso su tali patch in parallelo. I risultati ottenuti dalle patch vengono combinati utilizzando la ponderazione per varianza inversa.

  • Esempio: un utente desidera eseguire un circuito a 8 qubit su ibm_marrakesh, un dispositivo da 156 qubit, con parallel_execution=True. QESEM crea nove copie del circuito transpilato, ciascuna delle quali è mappata su un’area distinta di 8 qubit nel grafico di connettività di Marrakesh. Dopo l'esecuzione, l'utente riceve un unico valore atteso e una barra di errore per ciascuna variabile osservabile in ingresso.

  • Opzioni: "False" / "True"

description

Valore predefinito: None

Descrizione facoltativa da allegare al processo QESEM.

Caution

La stima del tempo di elaborazione da parte della QPU varia a seconda del backend. Pertanto, quando si esegue la funzione QESEM, assicurarsi di eseguirla sullo stesso backend selezionato al momento dell'ottenimento della stima del tempo di elaborazione della QPU.

Note

QESEM terminerà l'esecuzione quando raggiungerà la precisione desiderata o quando raggiungerà max_execution_time, a seconda di quale delle due condizioni si verifichi per prima.

Note

Le operazioni di barriera vengono solitamente utilizzate per specificare gli strati delle porte a due qubit nei circuiti quantistici. Con "minimal_with_layout_opt", QESEM conserva gli strati specificati dalle barriere. Con "standard", i livelli specificati dalle barriere vengono considerati come un'alternativa di transpilazione ai fini della minimizzazione del tempo di esecuzione sulla QPU.


Output

L'output della funzione QESEM è un PrimitiveResult, che contiene un PubResult per ogni input PUB e metadati a livello di job.

È possibile accedere a ciascuno PubResult di essi PrimitiveResult tramite l'indicizzazione e ciascuno contiene un campo data e un metadata campo.

  • Il data campo contiene almeno un array di valori attesi (PubResult.data.evs) e un array di errori standard (PubResult.data.stds). Può contenere anche altri dati, a seconda delle opzioni utilizzate.

  • Il metadata campo contiene metadati a livello di PUB (PubResult.metadata), inclusi i risultati dettagliati di QESEM e le metriche di esecuzione.

Tra i campi più comuni PubResult.metadata figurano:

Campo
Descrizione
resultsRisultati QESEM per circuito e per grandezza osservabile.
noisy_resultsValori attesi non corretti e barre di errore, ove disponibili.
transpiled_circsInformazioni sul circuito transpilato, comprese le mappature dei qubit e il numero di basi di misura.
total_qpu_timeTempo di QPU utilizzato dal processo.
gate_fidelitiesFedeltà dei gate misurate durante l'esperimento.
total_shotsNumero totale di scatti utilizzati dal lavoro.
mitigation_shotsNumero di colpi utilizzati per la mitigazione.
resource_usageRipartizione dell'utilizzo delle risorse per il lavoro.

I dettagli QESEM relativi a ciascun osservabile sono memorizzati in metadata["results"]. I risultati vengono raggruppati prima per istanza del circuito e poi per grandezza osservabile. Ogni voce osservabile può includere il risultato QESEM (qesem), il risultato non mitigato (unmitigated), i risultati relativi alla scalatura del rumore (noise_scaling) e i risultati euristici QESEM (qesem_heuristic).

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.