Vai al contenuto principale

Modello di esecuzione diretto (beta)

Versione beta

Tutti i componenti del modello di esecuzione diretto sono attualmente in beta e potrebbero non essere stabili. Sei invitato a testarli e a fornire feedback aprendo una segnalazione nei repository GitHub di Samplomatic o Qiskit Runtime.

Le interfacce primitive Sampler ed Estimator forniscono un'astrazione di livello superiore per consentire agli sviluppatori di algoritmi di concentrarsi maggiormente sull'innovazione e meno sulla conversione dei dati. Tuttavia, sono meno adatte agli scienziati dell'informazione quantistica, che richiedono maggiore controllo e flessibilità per i loro esperimenti su scala di utilità. Il modello di esecuzione diretto, attualmente in versione beta, risponde a questa esigenza. Questo modello di esecuzione fornisce gli strumenti per acquisire le intenzioni progettuali sul lato client e sposta la costosa generazione di varianti di circuito sul lato server, così da poter affinare la mitigazione degli errori e altre tecniche senza sacrificare le prestazioni. Questo modello esplicito e componibile semplifica la sperimentazione con nuove tecniche, la riproducibilità dei risultati e la condivisione dei metodi.

Nella sua versione beta, il modello di esecuzione diretto si concentra nel darti il controllo sulle tecniche integrate nell'attuale Sampler ed Estimator, tra cui il Pauli twirling, l'apprendimento e l'iniezione di modelli di rumore, e i cambi di base. Il supporto per altre funzionalità verrà aggiunto gradualmente nel tempo.

Workflow

Uno degli obiettivi principali del modello di esecuzione diretto è fornire un modo modulare per applicare metodi di mitigazione degli errori. Ad esempio, puoi definire quali strati del circuito mitigare, oppure regolare i tassi di rumore iniettati nel circuito.

Per applicare la mitigazione degli errori a un circuito nell'ambito del framework, il tuo workflow prevede in genere i seguenti passaggi (gli strumenti menzionati qui sono descritti più dettagliatamente nella sezione successiva):

  1. Raggruppa le istruzioni in box e applica loro delle annotazioni. Le annotazioni acquisiscono la trasformazione prevista senza generare effettivamente le varianti del circuito.

  2. Apprendi i modelli di rumore degli strati unici, se necessario, utilizzando il nuovo NoiseLearnerV3.

  3. Costruisci il template circuit e il samplex dal circuito con box.

  4. Esegui il template circuit e il samplex con la primitiva Executor, che genererà ed eseguirà le varianti del circuito come indicato.

  5. Post-elabora i risultati di esecuzione. Ad esempio, puoi applicare la post-selezione, oppure estrapolare i valori di aspettativa mitigati dai risultati di esecuzione.

Strumenti per il modello di esecuzione diretto

I seguenti strumenti possono essere utilizzati insieme per implementare una tecnica di mitigazione degli errori nel modello di esecuzione diretto.

Samplomatic

Samplomatic è una nuova libreria open source che supporta randomizzazioni di campionamento personalizzate. Utilizza il costrutto box per ragionare su insiemi di operazioni del circuito che devono essere trattate come aventi un contesto di rumore stabile, e usa le annotazioni sui box per consentirti di dichiarare e configurare le intenzioni. Ad esempio, puoi stratificare il tuo circuito in box, aggiungere un'annotazione di twirling a ciascun box e specificare quale gruppo di twirling utilizzare, come mostrato nella figura seguente:

Esempio di utilizzo di box e annotazioni di twirling

Un circuito con box annotati può quindi essere utilizzato per generare un template circuit e un samplex. Il template circuit di output è un circuito parametrizzato che verrà eseguito senza ulteriori modifiche (tranne che con diversi valori dei parametri assegnati). Il samplex, che è il tipo principale della libreria Samplomatic, rappresenta una distribuzione di probabilità parametrica sui parametri del template circuit e altri campi con valori array. Questi campi possono essere usati per post-elaborare i dati raccolti dall'esecuzione del template circuit vincolato. In altre parole, la coppia template circuit e samplex indica alla primitiva Executor (descritta di seguito) esattamente quali parametri generare e quali circuito vincolati eseguire. Poiché questi due costrutti vengono creati sul lato client, puoi effettuare ispezione locale e campionamento per verificare gli output prima di inviarli per l'esecuzione su hardware.

Per semplificare il processo di generazione dei box annotati, la libreria Samplomatic fornisce anche pass del Transpiler che raggruppano automaticamente le istruzioni del circuito in box annotati, in base alle strategie che fornisci.

Per saperne di più su Samplomatic, consulta la documentazione delle guide e il riferimento API. Sentiti libero di inviare feedback e segnalare bug nel suo repository GitHub.

Primitiva Executor

Executor è una nuova primitiva Qiskit Runtime che accetta la coppia template circuit e samplex come input, genera e vincola i valori dei parametri in base al samplex, esegue i circuiti vincolati sull'hardware e restituisce i risultati di esecuzione e i metadati. Segue le direttive della coppia di input e non prende decisioni implicite per te, in modo che il processo sia trasparente ma performante.

Per accedere a Executor, installa il branch executor_preview da qiskit-ibm-runtime:

pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview

Gli input e l'output della primitiva Executor sono molto diversi da quelli di Sampler ed Estimator. Consulta il riferimento API di Executor per ulteriori informazioni. Inoltre, la guida rapida di Executor fornisce una panoramica ed esempi di codice.

NoiseLearnerV3

Analogamente all'attuale NoiseLearner, questo programma helper di Qiskit Runtime restituisce il modello di rumore sparso Pauli-Lindblad utilizzato in molti metodi di mitigazione degli errori, tra cui PEC, PEA e PNA. Nell'originale NoiseLearner, passi un elenco di circuito e il programma stratifica i circuiti in strati e restituisce il modello di rumore per ogni strato unico. NoiseLearnerV3, invece, ti dà il controllo su come stratificare i tuoi circuito, e il programma accetta semplicemente un elenco di istruzioni di circuito con box (ad esempio, strati unici) come input.

NoiseLearnerV3 supporta anche l'apprendimento del rumore di misurazione. Per ogni insieme di istruzioni nell'elenco di input, esegue il protocollo di apprendimento Pauli-Lindblad se l'insieme contiene gate a uno e due qubit, e il protocollo TREX se l'insieme contiene misurazioni. Per accedere a NoiseLearnerV3, installa il branch executor_preview da qiskit-ibm-runtime:

pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview

Per saperne di più su NoiseLearnerV3, consulta la documentazione del suo riferimento API.

Passi successivi

Raccomandazioni