Introduzione alla transpilazione
La transpilazione è il processo di riscrittura di un circuito di input per adattarlo alla topologia di uno specifico dispositivo quantistico, ottimizzando le istruzioni del circuito per l'esecuzione su computer quantistici soggetti a rumore. Questa documentazione copre gli strumenti e i flussi di lavoro per la transpilazione locale disponibili a tutti gli utenti Qiskit, nonché il servizio cloud Qiskit Transpiler Service disponibile agli utenti dei piani Premium, Flex e On-Prem (tramite IBM Quantum Platform API). Se stai usando le primitive e ti interessano solo le opzioni di transpilazione predefinite offerte dal servizio Qiskit Runtime, leggi l'argomento Configura la compilazione runtime per Qiskit Runtime.
Il processo di transpilazione prende un circuito che contiene le tue istruzioni:
La transpilazione lo trasforma in modo che vengano utilizzate solo le istruzioni disponibili sul backend scelto, ottimizzando tali istruzioni per ridurre al minimo gli effetti del rumore:
Componente centrale dell'SDK Qiskit, il Transpiler è progettato per essere modulare ed estensibile. Il suo utilizzo principale è la scrittura di nuove trasformazioni di circuiti (note come pass del Transpiler) e la loro combinazione con altre pass esistenti, riducendo notevolmente la profondità e la complessità dei circuiti quantistici. Quali pass vengono concatenate e in quale ordine ha un effetto determinante sul risultato finale. Questa pipeline è definita dagli oggetti PassManager e StagedPassManager. Lo StagedPassManager orchestra l'esecuzione di uno o più PassManager e determina l'ordine in cui vengono eseguiti, mentre l'oggetto PassManager è semplicemente una raccolta di una o più pass. Immagina lo StagedPassManager come il direttore d'orchestra, i PassManager come le diverse sezioni di strumenti e gli oggetti Pass come i singoli musicisti. In questo modo puoi comporre circuiti quantistici efficienti per l'hardware, che ti permettono di eseguire lavori su scala utility mantenendo il rumore sotto controllo.
Trovi ulteriori informazioni sulle fasi del pass manager nell'argomento Fasi del Transpiler.
Architettura del set di istruzioni​
Oltre a ridurre la profondità e la complessità dei circuiti quantistici, il Transpiler è progettato per trasformare le istruzioni contenute in un dato QuantumCircuit in modo che rispettino l'Instruction Set Architecture (ISA) di un particolare backend. I circuiti conformi all'ISA contengono solo istruzioni supportate dal Target del backend, come i gate di base disponibili sull'hardware, le misurazioni, i reset e le operazioni di controllo del flusso, e rispettano i vincoli definiti dalla connettività dell'hardware, ovvero la CouplingMap del target. Quando si sottomette un job a un backend IBM Quantum®, i circuiti devono essere conformi all'ISA del backend.
Fasi del Transpiler​
La pipeline di transpilazione predefinita di Qiskit è composta da sei fasi fondamentali:
init— Questa pass esegue tutte le pass iniziali necessarie prima che il circuito possa essere incorporato. In genere questo comporta il disrotolamento delle istruzioni personalizzate e la conversione del circuito in gate a uno e due qubit. Per impostazione predefinita, convalida le istruzioni del circuito e traduce i gate a più qubit in gate a uno e due qubit.layout— Questa pass applica un layout, mappando i qubit virtuali del tuo circuito sui qubit fisici della QPU.routing— Questa pass viene eseguita dopo l'applicazione di un layout e inserisce gate aggiuntivi (cioè SWAP) nel circuito originale per renderlo compatibile con la connettività della QPU (coupling map).translation— Questa pass traduce i gate del circuito nel set di istruzioni di base della QPU.optimization— Questa pass esegue un ciclo di ottimizzazione per trovare decomposizioni più efficienti del circuito quantistico fino al raggiungimento di una condizione (ad esempio una profondità fissa).scheduling— Questa fase è dedicata alle pass di scheduling consapevoli dell'hardware. Se l'utente specifica un metodo di scheduling, questa fase tiene conto di tutti i tempi di inattività nel circuito.
Se personalizzi un flusso di lavoro di transpilazione, usa queste fasi come linea guida durante lo sviluppo.
Transpilare con i pass manager​
Il modo consigliato per transpilare un circuito è creare uno staged pass manager e poi eseguire il suo metodo run con il tuo circuito come input. Puoi usare la funzione generate_preset_pass_manager per generare uno staged pass manager con impostazioni predefinite ragionevoli.
Gli utenti più avanzati possono personalizzare un insieme di oggetti PassManager e StagedPassManager e determinare l'ordine in cui ogni fase viene eseguita. Questo può cambiare drasticamente il circuito di output finale. In effetti, un approccio personalizzato alla transpilazione di un algoritmo quantistico spesso produce una soppressione degli errori più efficiente rispetto all'approccio predefinito. Un approccio personalizzato prevede la riscrittura dei circuiti quantistici per soddisfare i vincoli hardware e sopprimere gli effetti del rumore. Il flusso logico di questa catena di strumenti è personalizzabile e non deve essere necessariamente lineare. Il processo di transpilazione può includere cicli iterativi, rami condizionali e altri comportamenti complessi. Un buon punto di partenza nello sviluppo di un insieme di pass personalizzate è esaminare la sequenza di trasformazioni predefinita.
Per una panoramica della transpilazione con i pass manager, consulta Transpilare con i pass manager.
Transpilazione predefinita​
Per un utilizzo più semplice, ma meno personalizzabile, del Transpiler "pronto all'uso", usa la funzione qiskit.compiler.transpile. Questa funzione genera ed esegue uno dei StagedPassManager preimpostati basandosi, tra le altre opzioni, su un flag optimization_level che può essere impostato su 0, 1, 2 o 3. I livelli più alti generano circuiti più ottimizzati a scapito di tempi di transpilazione più lunghi.
Passi successivi​
- Per imparare a usare la funzione
generate_preset_passmanager, inizia con l'argomento Impostazioni predefinite e opzioni di configurazione della transpilazione. - Continua ad approfondire la transpilazione con l'argomento Fasi del Transpiler.
- Prova la guida Confronta le impostazioni del Transpiler.
- Prova un esempio end-to-end che usa circuiti transpilati nel tutorial Stima dell'energia dello stato fondamentale della catena di Heisenberg con VQE.
- Consulta la documentazione API di Transpile.
- Scopri come transpilare i circuiti.