Utilizzo del workload
L'utilizzo è una misura della quantità di tempo in cui il QPU è bloccato per il tuo workload, e viene calcolato in modo diverso a seconda della modalità di esecuzione che stai usando.
- L'utilizzo della sessione corrisponde al tempo reale (wall-clock) in cui la sessione è attiva. Consulta Durata della sessione per ulteriori informazioni sulle transizioni di stato della sessione.
- L'utilizzo del batch è la somma del tempo quantistico (il tempo impiegato dal complesso QPU per elaborare il tuo job) di tutti i job nel batch.
- L'utilizzo di un singolo job è il tempo quantistico utilizzato dal job durante l'elaborazione.
Tieni presente che i job falliti o annullati vengono conteggiati nel tuo utilizzo in determinate circostanze — consulta la sezione Job falliti e annullati per i dettagli.
Per gli utenti con piano a pagamento, l'utilizzo determina il costo del workload. Consulta Gestisci i costi per i dettagli.
Utilizzo per job falliti e annullati
Quando un job è fallito o annullato, l'utilizzo riportato è il seguente:
-
Modalità job o batch: L'utilizzo riportato è il tempo in cui il QPU era bloccato per eseguire il tuo workload fino al momento in cui è fallito o è stato annullato. Pertanto, se il fallimento o l'annullamento si è verificato prima del blocco, l'utilizzo riportato è zero. Altrimenti, l'utilizzo riportato del workload è la quantità di utilizzo accumulata prima che il workload fallisse o venisse annullato. Di conseguenza, alcuni job falliti non compaiono nell'utilizzo riportato e altri sì.
-
Modalità sessione: L'utilizzo riportato è il tempo reale (wall-clock) in cui la sessione è attiva, indipendentemente dal numero di job che falliscono o vengono annullati.
Interrogare l'utilizzo effettivo di un workload
Dopo che un workload è stato completato, esistono diversi modi per visualizzare il suo utilizzo effettivo:
- Esegui
batch.usage()osession.usage()inqiskit-ibm-runtime0.30 o versioni successive. Se stai usando una versione precedente diqiskit-ibm-runtime(>= 0.23 e < 0.30), l'utilizzo può comunque essere trovato insession.details()["usage_time"]ebatch.details()["usage_time"]. - Usa
GET /sessions/{id}per vedere l'utilizzo di un batch o di una sessione specifici. - Usa
GET /jobs/{id}per vedere l'utilizzo di un singolo job.
Visualizzare l'utilizzo dell'istanza
Puoi visualizzare l'utilizzo di un'istanza nella pagina Istanze oppure, per chi dispone delle autorizzazioni appropriate, nella pagina Analytics. Tieni presente che le pagine potrebbero mostrare numeri di utilizzo diversi perché calcolano l'utilizzo in modo differente.
La pagina Istanze mostra l'utilizzo in tempo reale degli ultimi 28 giorni (a finestra mobile), fino all'ora corrente del giorno corrente. L'utilizzo nella pagina Analytics viene ricalcolato ogni ora e include gli ultimi 28 giorni completi; cioè, mostra l'utilizzo dalle 00:00 di 28 giorni fa ad oggi, all'inizio dell'ora.
Stimare l'utilizzo prima di inviare un job
Sebbene ottenere una stima locale accurata sia complicato dalle operazioni aggiuntive eseguite per la soppressione e la mitigazione degli errori, puoi usare questa formula di base per ottenere un'approssimazione dell'utilizzo stimato:
<per sub-job overhead> + (rep_delay + <circuit length>) * <num executions>
<per sub-job overhead>è un overhead di circa 2s per sub-job. Questo include operazioni come il caricamento del payload nell'elettronica di controllo. Il tuo job primitiva potrebbe essere suddiviso in più sub-job se è troppo grande perché il motore di esecuzione lo possa elaborare tutto in una volta.rep_delayè un'opzione personalizzabile dall'utente, e il valore predefinito è dato dabackend.default_rep_delay, che è 250 microsecondi sulla maggior parte dei backend IBM Quantum. Tieni presente che abbassarerep_delayriduce il tempo di esecuzione totale del QPU, ma a scapito di un aumento del tasso di errore nella preparazione degli stati; consulta la guida Esecuzione con tasso di ripetizione dinamico per ulteriori informazioni.<circuit length>è la lunghezza totale delle istruzioni. Ogni istruzione richiede un tempo diverso sul QPU, quindi la lunghezza totale varia da circuito a circuito. Una misurazione, ad esempio, può richiedere 56 volte più tempo di un gatex.backend.target[<instruction>][<qubit>].durationpuò essere usato per trovare la durata esatta di ogni istruzione. Una lunghezza tipica del circuito è probabilmente compresa tra 50 e 100 microsecondi. Se stai usando tecniche di soppressione o mitigazione degli errori con le primitive, istruzioni aggiuntive potrebbero essere inserite nel tuo circuito, il che aumenterebbe la lunghezza totale del circuito.notaL'opzione sperimentale
scheduler_timingrestituisce il tempo totale del circuito, ma questo NON è il tempo usato per la fatturazione.<num executions>è il numero totale di circuito moltiplicato per il numero di shot, dove i circuiti sono quelli generati dopo la trasmissione degli elementi PUB.- Se stai usando tecniche di mitigazione degli errori con le primitive, circuito aggiuntivi potrebbero essere eseguiti come parte del processo di mitigazione, il che aumenterebbe il numero totale di esecuzioni. Inoltre, le tecniche avanzate di mitigazione degli errori come PEA e PEC hanno un overhead molto più elevato perché richiedono l'esecuzione di circuito per l'apprendimento del rumore.
- L'Estimator raggruppa gli osservabili che commutano qubit per qubit, il che riduce il numero di esecuzioni.
Se non stai usando tecniche avanzate di mitigazione degli errori né un rep_delay personalizzato, puoi usare 2+0.00035*<num executions> come formula rapida.
Passi successivi
- Esamina questi suggerimenti: Minimizza il tempo di esecuzione del job.
- Imposta il Tempo massimo di esecuzione.
- Scopri come eseguire il transpiling localmente nella sezione Transpiler.
- Prova la guida Confronta le impostazioni del Transpiler.