Vai al contenuto principale
Questo progetto è in fase beta. Hai trovato un bug? Apri una issue su GitHub. Hai una domanda o un'idea? Chiedi su GitHub Discussions — apprezziamo il tuo feedback!
Com'è la qualità della traduzione su questa pagina?

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.

Un insieme di job eseguiti in batch mode. La parte di calcolo classico di ciascun job avviene simultaneamente, poi tutti i job vengono inviati alla QPU. La QPU è bloccata per il tuo utilizzo dal momento in cui il primo job raggiunge la QPU fino al termine dell'elaborazione dell'ultimo job sulla QPU. Non c'è nessun intervallo tra i job in cui la QPU è inattiva.

Note
  • 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.

A sets of jobs being run in session mode and the other is being run in batch mode.  Between each job is the interactive TTL (interactive time to live).  The active window starts when the first job starts and ends after the last job is completed. After the final job of the first set of jobs completes, the active window ends and the session is paused (but not closed).  Another set of jobs then starts and jobs continue in a similar manner. The QPU is reserved for your use during the entire session.

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.

Note
  • 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:

  1. 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.

  2. 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.

  3. 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.

    nota

    Il job deve passare attraverso la coda normale per riattivare il workload.

  4. 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.

Passi successivi​