Scegliere la giusta modalità di esecuzione
I carichi di lavoro su scala utility possono richiedere molte ore per essere completati, quindi è importante che sia le risorse classiche che quelle quantistiche siano programmate in modo efficiente per ottimizzare l'esecuzione. Le modalità di esecuzione offrono la flessibilità necessaria per bilanciare il rapporto tra costi e tempi e utilizzare le risorse in modo ottimale per i carichi di lavoro. Ci sono diversi aspetti da considerare quando si sceglie la modalità di esecuzione da utilizzare, come il tempo di esecuzione complessivo (maximum time to live, o TTL) e il tempo tra i lavori (interactive TTL).
I vantaggi di ciascuno sono riassunti di seguito:
- Batch
- L'intero batch di lavori viene pianificato insieme e non ci sono tempi di attesa aggiuntivi per ciascuno di essi.
- I calcoli classici dei lavori, come la compilazione, vengono eseguiti in parallelo. Pertanto, l'esecuzione di più lavori in batch è significativamente più veloce rispetto all'esecuzione in serie.
- Di solito i tempi di attesa tra un lavoro e l'altro sono minimi, il che può aiutare a evitare le derive.
- Se si suddivide il carico di lavoro in più lavori e li si esegue in modalità batch, è possibile ottenere i risultati dei singoli lavori, il che li rende più flessibili da utilizzare. Ad esempio, se i risultati di un lavoro non soddisfano le vostre aspettative, potete cancellare i lavori rimanenti. Inoltre, se un lavoro non va a buon fine, è possibile ripresentarlo invece di rieseguire l'intero carico di lavoro.
- È generalmente meno costoso delle sedute.
- Sessione
- Tutte le funzionalità della modalità batch (ma che richiedono un utilizzo maggiore; vedere Utilizzo del carico di lavoro per ulteriori dettagli su come viene calcolato l'utilizzo).
- Accesso dedicato ed esclusivo alla QPU durante la finestra attiva della sessione.
- È utile per i carichi di lavoro che non hanno tutti gli input pronti all'inizio, per i carichi di lavoro iterativi che richiedono una post-elaborazione classica prima di poter eseguire il successivo e per gli esperimenti che devono essere eseguiti il più strettamente possibile insieme.
- Lavoro
- Il più facile da usare quando si esegue un piccolo esperimento.
- Potrebbe essere eseguito prima della modalità batch.
Raccomandazioni e buone pratiche
In generale, utilizzate la modalità batch a meno che non abbiate carichi di lavoro che non hanno tutti gli input pronti all'inizio.
-
Utilizzare la modalità batch per inviare più lavori primitivi contemporaneamente e ridurre i tempi di elaborazione.
-
Utilizzate la modalità di sessione per i carichi di lavoro iterativi o se avete bisogno di un accesso dedicato alla QPU.
-
Utilizzare sempre la modalità lavoro per inviare una singola richiesta primitiva.
-
Poiché le sedute sono generalmente più costose, si consiglia di utilizzare il batch ogni volta che non si ha bisogno dei vantaggi aggiuntivi derivanti dall'utilizzo delle sedute.
-
Gli utenti di Open Plan non possono inviare lavori di sessione.
Per garantire l'uso più efficiente delle modalità di esecuzione, si raccomanda di seguire le seguenti pratiche:
-
L'esecuzione di un lavoro comporta un costo fisso. In generale, se ogni lavoro utilizza meno di un minuto di tempo della QPU, si può prendere in considerazione la possibilità di combinarne diversi in un lavoro più grande (questo vale per tutte le modalità di esecuzione). il "tempo QPU" si riferisce al tempo impiegato dal complesso QPU per elaborare il lavoro.
-
Se ogni lavoro consuma più di un minuto di tempo della QPU o se non è possibile combinare i lavori, è comunque possibile eseguire più lavori in parallelo. Ogni lavoro passa attraverso un'elaborazione sia classica che quantistica. Mentre una QPU può elaborare un solo lavoro alla volta, è possibile elaborare in parallelo fino a cinque lavori classici. È possibile sfruttare questo vantaggio inviando più lavori in modalità di esecuzione batch o di sessione.
Queste sono linee guida generali e si deve regolare il carico di lavoro per trovare il rapporto ottimale, soprattutto quando si utilizzano le sessioni. Ad esempio, se si utilizza una sessione per ottenere l'accesso esclusivo a un backend, si può pensare di suddividere i lavori di grandi dimensioni in lavori più piccoli ed eseguirli in parallelo. Questa soluzione potrebbe essere più efficace dal punto di vista dei costi, in quanto può ridurre il tempo di permanenza a parete.
Esempi
Eseguire un algoritmo variazionale quantistico
L'esecuzione di un algoritmo variazionale quantistico segue tipicamente questo flusso:
- Preparare l'ansatz.
- Valutare la funzione di costo su una QPU.
- Prendete il risultato della fase precedente ed eseguitelo con un ottimizzatore classico.
- Regolare i parametri in base al risultato di (3), quindi tornare al punto (2).
In questo caso, se si utilizzava la modalità job o batch, ogni lavoro generato dal passaggio (2) deve passare attraverso la coda. Questo aumenta drasticamente la durata dell'esperimento (tempo dell'orologio a muro) a causa del tempo di accodamento. Inoltre, la convergenza potrebbe richiedere più tempo a causa della deriva del dispositivo. In altre parole, ogni iterazione dovrebbe fornire un risultato migliore, ma la deriva del dispositivo potrebbe peggiorare i risultati successivi.
Inoltre, se si utilizza PEA o PEC, è possibile apprendere il modello di rumore una volta e applicarlo ai lavori successivi durante l'esecuzione in una sessione dedicata. Questo di solito non funziona con la modalità batch o job, perché il modello di rumore potrebbe diventare obsoleto nel momento in cui il lavoro successivo esce dalla coda.
Confronta le impostazioni di mitigazione degli errori
Per confrontare gli effetti dei metodi di mitigazione degli errori disponibili, si può seguire questo flusso:
- Costruire un circuito e un osservabile.
- Presentare lavori primitivi che utilizzano diverse combinazioni di impostazioni di attenuazione degli errori.
- Tracciare i risultati per osservare gli effetti delle varie impostazioni.
In questo caso, tutti i lavori (che sono correlati ma indipendenti) sono disponibili all'inizio. Se si utilizza la modalità batch, vengono pianificati collettivamente, in modo da dover aspettare che passino nella coda una sola volta. Inoltre, poiché l'obiettivo è quello di confrontare gli effetti dei vari metodi di attenuazione degli errori, è bene che vengano eseguiti il più possibile insieme. Pertanto, il lotto sarebbe una buona scelta. È possibile eseguire questi lavori in una sessione, ma poiché le sessioni sono generalmente più costose, si consiglia di utilizzare il batch quando non si ha bisogno delle funzionalità aggiuntive offerte dalle sessioni.