Tempo massimo di esecuzione per i workload di Qiskit Runtime
Per garantire equità, esiste un tempo massimo di esecuzione calcolato dal servizio per ogni job di Qiskit Runtime. Se un job supera questo limite di tempo, viene annullato forzatamente e viene sollevata un'eccezione RuntimeJobMaxTimeoutError. Puoi anche impostare un tempo massimo di esecuzione sui tuoi job per controllare i costi.
La sessione o il batch viene terminato immediatamente al raggiungimento del limite di costo. Tutti i job attualmente in esecuzione in quella sessione o batch verranno completati, ma tutti i job in sospeso verranno annullati.
Impostare un tempo massimo di esecuzione
Il tempo massimo di esecuzione per un job è il minore tra questi valori:
- Il valore impostato per
max_execution_time - Il valore di timeout del job determinato dal servizio
Il valore max_execution_time è basato sull'utilizzo della QPU, non sul tempo reale.
Imposta il tempo massimo di esecuzione (in secondi) nelle opzioni del job, come mostrato nell'esempio seguente. Consulta le guide Opzioni Estimator, Opzioni Sampler o Opzioni Executor per informazioni su come impostare le opzioni.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(mode=backend)
estimator.options.max_execution_time = 2500
Puoi anche scoprire quanto utilizzo hanno consumato i job completati recuperando le metriche del job nel seguente modo:
# Find QPU usage of a specific job
print(f"QPU usage of job {job.job_id()} was {job.metrics()['usage']['quantum_seconds']} seconds")
Tempo massimo di esecuzione calcolato dal servizio
Il servizio calcola un valore di timeout appropriato per il job in base ai circuito in input e alle opzioni. Questo timeout calcolato dal servizio è limitato a 3 ore per garantire un utilizzo equo del dispositivo. Se per il job è specificato anche un max_execution_time, viene utilizzato il valore minore tra i due.
Ad esempio, se specifichi max_execution_time=5000 (circa 83 minuti), ma il servizio determina che il job non dovrebbe impiegare più di 5 minuti (300 secondi), allora il job viene annullato dopo 5 minuti.
Tempo massimo di esecuzione del batch
Quando un batch viene avviato, gli viene assegnato un valore massimo di tempo di vita (TTL massimo). Al raggiungimento di questo TTL, il batch viene terminato, i job già in esecuzione continuano a essere eseguiti e i job in coda che rimangono nel batch vengono messi in uno stato di errore.
I batch hanno anche un valore di tempo di vita interattivo (TTL interattivo) tra i job che non può essere configurato. Se non chiudi esplicitamente un batch, viene disattivato alla scadenza del TTL interattivo e può essere riattivato in qualsiasi momento fino al raggiungimento del suo TTL massimo.
Per le istruzioni su come lavorare con questi valori, consulta Eseguire job in un batch.
Tempo massimo di esecuzione della sessione
Quando una sessione viene avviata, le viene assegnato un valore TTL massimo che determina per quanto tempo può essere eseguita. Al raggiungimento di questo TTL, la sessione viene terminata, i job già in esecuzione continuano a essere eseguiti e i job in coda che rimangono nella sessione vengono messi in uno stato di errore.
Esiste anche un valore di TTL interattivo che non può essere configurato. Se nessun job della sessione viene messo in coda entro quella finestra temporale, la sessione viene temporaneamente disattivata.
Per le istruzioni su come lavorare con questi valori, consulta Eseguire job in una sessione.
Altre limitazioni
- Gli input dei job non possono superare i 50 MB di dimensione.
- Con il piano Open, puoi utilizzare fino a 10 minuti su una QPU per ogni finestra temporale rotante di 28 giorni. Puoi visualizzare l'utilizzo di un'istanza nella pagina Istanze.
Passi successivi
- Utilizzo del workload.
- Leggi questi suggerimenti: Minimizzare il tempo di esecuzione del job.