Vai al contenuto principale

Flusso di sviluppo

Il termine Qiskit pattern descrive il flusso di sviluppo per scomporre problemi specifici di dominio e contestualizzare le capacità necessarie in fasi distinte. Questo approccio consente la composizione fluida di nuove funzionalità sviluppate dai ricercatori di IBM Quantum® (e da altri) e apre la strada a un futuro in cui i compiti di calcolo quantistico vengono eseguiti da una potente infrastruttura di calcolo eterogenea (CPU/GPU/QPU). Blocchi o gruppi di blocchi eseguono i passi di un pattern, con il Qiskit SDK che fornisce un importante strato fondazionale, supportato da altri strumenti o servizi sviluppati da IBM Quantum o dalla comunità open-source quantistica. I Qiskit pattern permettono agli esperti di dominio di specificare un problema e comporre gli strumenti (blocchi) che realizzano un Qiskit pattern. Tale pattern può poi essere eseguito localmente, tramite servizi cloud, o distribuito con Qiskit Serverless.

I quattro passi di un Qiskit pattern sono i seguenti:

  • Map — mappatura del problema su circuit quantistici e operatori
  • Optimize — ottimizzazione per l'hardware di destinazione
  • Execute — esecuzione sull'hardware di destinazione
  • Post-process — post-elaborazione dei risultati

Ogni passo è descritto in dettaglio nelle sezioni seguenti.

Mappare il problema su circuit quantistici e operatori

Questo passo descrive come si parte da un problema classico e si determina come mapparlo su un computer quantistico. Ad esempio, in applicazioni come la chimica e la simulazione quantistica, questo passo prevede generalmente la costruzione di un circuito quantistico che rappresenta l'Hamiltoniano che si sta cercando di risolvere. Durante questa fase, per certi problemi, potrebbe essere utile specificare fin dall'inizio la mappatura del problema sui qubit nel reticolo heavy-hex (o gross) dell'hardware IBM®, qualora la struttura del problema si presti a un'ottimizzazione anticipata. Vale anche la pena considerare già in questa fase quale sarà il risultato del particolare algoritmo, in preparazione al successivo passo di esecuzione — ad esempio, se il risultato desiderato prevede l'inferenza di funzioni di correlazione tramite test di Hadamard, potresti prepararti a utilizzare il Sampler, mentre specificare osservabili richiederebbe l'Estimator e potrebbe offrire numerose opzioni di mitigazione degli errori.

L'output di questo passo è normalmente una raccolta di circuit o operatori quantistici che possono essere ottimizzati per l'hardware nel passo successivo.

Ottimizzare per l'hardware di destinazione

In questo passo si prendono i circuit astratti (o operatori) prodotti nella fase di mappatura e si esegue su di essi una serie di ottimizzazioni. Queste possono includere la mappatura del percorso e del layout del circuito sull'hardware fisico dei qubit, la conversione nei gate base dell'hardware e la riduzione del numero di operazioni — tutto finalizzato a massimizzare la probabilità di successo nel successivo passo di esecuzione. A questo punto potresti anche voler testare i tuoi circuit con un simulatore prima di eseguirli su hardware reale nel passo successivo.

Durante questa fase, i circuit astratti devono essere transpilati in circuit ISA (Instruction Set Architecture). Un circuito ISA è composto esclusivamente da gate compresi dall'hardware di destinazione (gate base) e da eventuali gate multi-qubit necessari per rispettare i vincoli di connettività (coupling map). Solo i circuit ISA possono essere eseguiti sull'hardware IBM tramite IBM Qiskit Runtime.

Eseguire sull'hardware di destinazione

Questo passo prevede l'esecuzione dei tuoi circuit sull'hardware e produce gli output del calcolo quantistico. I circuit ISA prodotti nel passo precedente possono essere eseguiti utilizzando la primitiva Sampler o Estimator di Qiskit Runtime, inizializzata localmente sul tuo computer oppure da un cluster o altro ambiente di calcolo eterogeneo. Possono essere eseguiti in un Batch, che consente la transpilazione parallela per una maggiore efficienza di calcolo classico, oppure in una Session, che permette l'implementazione efficiente di compiti iterativi senza ritardi di accodamento. Durante questo passo è anche possibile configurare alcune tecniche di soppressione e mitigazione degli errori fornite da Qiskit Runtime.

A seconda che si utilizzi la primitiva Sampler o Estimator, il risultato di questo passo sarà diverso. Con il Sampler, l'output sarà costituito da misurazioni per-shot sotto forma di bitstring. Con l'Estimator, l'output sarà costituito dai valori di aspettativa degli osservabili corrispondenti a grandezze fisiche o funzioni di costo.

Post-elaborare i risultati

Questo passo finale consiste nel ricombinare gli output del passo precedente per ottenere il risultato desiderato. Può includere una serie di operazioni di elaborazione dati classica, come la visualizzazione dei risultati, tecniche di mitigazione degli errori di readout, la marginalizzazione di distribuzioni di quasi-probabilità per ricavare risultati su sottoinsiemi più piccoli di qubit, oppure la post-selezione su proprietà intrinseche del problema, come spin totale, parità o conservazione delle particelle mediante l'eliminazione di osservabili non fisici.

Man mano che il settore evolve dalla costruzione di circuit su misura a flussi di lavoro su scala utility, la flessibilità e la semplicità con cui i Qiskit pattern consentono agli utenti di comporre i diversi passi del pattern aprono il calcolo quantistico a un'ampia varietà di applicazioni e tecniche, rendendole facilmente accessibili agli scienziati del calcolo quantistico.