Introduzione alle modalità di esecuzione di Quantum Compute
Quando IBM Quantum Compute Service è stato introdotto, gli utenti potevano eseguire i circuiti soltanto come job individuali. Con l'emergere di diversi tipi di workload quantistici, è diventata evidente la necessità di strategie di scheduling differenti. Le modalità di esecuzione determinano come vengono pianificati i tuoi job, e scegliere quella giusta consente al tuo workload di funzionare in modo efficiente nel rispetto del tuo budget. Esistono tre modalità di esecuzione: job, sessione e batch.
Job mode
Una singola richiesta a una primitiva, effettuata senza un context manager. I circuiti e gli input vengono impacchettati come primitive unified blocs (PUB) e inviati come task di esecuzione al computer quantistico. Per eseguire in job mode, specifica mode=backend quando istanzi una primitiva. Consulta Esempi di Estimator e Esempi di Sampler per l'utilizzo.
Batch mode
Un gestore multi-job per eseguire in modo efficiente esperimenti composti da workload multi-job. Questi workload sono costituiti da job eseguibili in modo indipendente, senza relazioni condizionali tra loro. Con batch mode, gli utenti inviano tutti i job in una volta sola.
Il sistema parallelizza o divide in thread la fase di pre-elaborazione (calcolo classico) di ciascun job inviato a una primitiva per compattare l'esecuzione quantistica dei vari job, quindi esegue la parte quantistica di ciascun job in rapida successione per fornire i risultati più efficienti. Per ulteriori dettagli sul threading, consulta la pagina FAQ sulla modalità di esecuzione.
- Durante il batching, non è garantito che i job vengano eseguiti nell'ordine in cui sono stati inviati. Inoltre, anche se i tuoi job batch vengono eseguiti il più vicino possibile tra loro, non hanno accesso esclusivo al backend. Pertanto, i tuoi job batch potrebbero essere eseguiti in parallelo con i job di altri utenti se c'è sufficiente capacità di elaborazione sulla QPU. Inoltre, tra i job in batch potrebbero essere eseguiti job di calibrazione della QPU.
- Il tempo di accodamento non diminuisce per il primo job inviato all'interno di un batch. Pertanto, i batch non offrono alcun vantaggio quando si esegue un singolo job.
Per eseguire in batch mode, specifica mode=batch quando istanzi una primitiva oppure esegui il job in un batch context manager. Consulta Eseguire job in un batch per esempi.
Session mode
Una finestra dedicata per eseguire un workload multi-job. Durante questa finestra, hai accesso esclusivo al sistema e nessun altro job può essere eseguito, inclusi i job di calibrazione. Ciò ti consente di sperimentare algoritmi variazionali in modo più prevedibile e persino di eseguire più esperimenti contemporaneamente, sfruttando il parallelismo nello stack. L'utilizzo delle sessioni aiuta a evitare i ritardi causati dall'accodamento di ciascun job separatamente, il che può essere particolarmente utile per task iterativi che richiedono frequenti comunicazioni tra risorse classiche e quantistiche. La funzione di costo nell'immagine rappresenta quella di un algoritmo variazionale quantistico, eseguito sulla tua macchina locale.
Per eseguire in session mode, specifica mode=session quando istanzi una primitiva, oppure esegui il job in un session context manager. Consulta Eseguire job in una sessione per esempi.
- Il tempo di accodamento non diminuisce per il primo job inviato all'interno di una sessione. Pertanto, le sessioni non offrono alcun vantaggio quando si esegue un singolo job.
- Gli utenti del piano Open non possono inviare job di sessione.
Flusso di lavoro di base
Il flusso di lavoro di base per batch e sessioni è simile:
-
Il primo job in un batch o in una sessione entra nella coda normale. Nel caso dei batch, tutti i job del batch vengono pianificati insieme.
-
Quando il primo job inizia a essere eseguito, il timer del tempo di vita massimo (TTL) si avvia e non si ferma né si mette in pausa fino al raggiungimento del termine.
-
Il timer del TTL interattivo si avvia dopo il completamento di ciascun job. Se non ci sono job del workload pronti entro la finestra del TTL interattivo, il workload viene temporaneamente disattivato e la selezione normale dei job riprende. Un job può riattivare il workload disattivato se il batch o la sessione non ha raggiunto il proprio valore TTL massimo.
notaIl job deve passare attraverso la coda normale per riattivare il workload.
-
Se viene raggiunto il valore TTL massimo, il workload termina e tutti i job in coda rimanenti falliscono. Qualsiasi job attualmente in esecuzione non verrà portato a termine se ciò comportasse il superamento del limite di costo dell'istanza.
Il video seguente illustra il flusso di lavoro di base, usando le sessioni come esempio:
Per tutti i dettagli sui timer TTL, consulta la guida Tempo di esecuzione massimo.