Specificare le opzioni del campionatore
Il codice presente in questa pagina è stato sviluppato sulla base dei seguenti requisiti. Si consiglia di utilizzare queste versioni o quelle più recenti.
qiskit[all]~=2.5.1 qiskit-ibm-runtime~=0.47.0
È possibile utilizzare le opzioni per personalizzare la primitiva Sampler. Questa sezione illustra come specificare le opzioni primitive dell' IBM Quantum. Sebbene l'interfaccia del metodo run() delle primitive sia comune a tutte le implementazioni, le relative opzioni non lo sono. Per informazioni sulle opzioni qiskit_aer.primitives.SamplerV2 e qiskit.primitives.BackendSamplerV2 , consultare i relativi documenti di riferimento dell'API.
Imposta le opzioni del campionario
È possibile impostare le opzioni al momento dell'inizializzazione di Sampler, dopo l'inizializzazione di Sampler oppure aggiornarle una volta che Sampler è stato inizializzato. Per istruzioni su come utilizzare queste tecniche, consultare l'argomento "Introduzione alle opzioni".
Inoltre, è possibile impostare il shots valore nel run() metodo, come descritto nella sezione seguente.
Metodo Run()
Gli unici valori che è possibile passare run() sono quelli definiti nell'interfaccia. Cioè, shots. Questo sovrascrive qualsiasi valore impostato per default_shots nell'esecuzione corrente.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
sampler = Sampler(mode=backend)
# Default shots to use if not specified in run()
sampler.options.default_shots = 500
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)Output:
<RuntimeJobV2('d9mq9qo8csec73fagtb0', 'sampler')>
Casi particolari
Shot
Il SamplerV2.run metodo accetta due argomenti: un elenco di PUB, ciascuno dei quali può specificare un valore relativo a PUB per gli "shots", e un argomento chiave denominato "shots". Questi valori di campionamento fanno parte dell'interfaccia di esecuzione del Sampler e sono indipendenti dalle opzioni del Runtime Sampler. Hanno la precedenza su qualsiasi valore specificato come opzione, al fine di rispettare l'astrazione del Sampler.
Tuttavia, se non shots è specificato né tramite l'opzione PUB né nell'argomento della parola chiave run (o se entrambi sono impostati su None), viene utilizzato il valore di shots specificato nelle opzioni, in default_shotsparticolare.
In sintesi, questo è l'ordine di precedenza per la specificazione degli shot nel Sampler, per qualsiasi " PUB ":
- Se il parametro
PUBspecifica il numero di scatti, utilizzare quel valore. - Se l'argomento
shots«keyword» è specificato inrun, utilizzare quel valore. - Se
twirlingè abilitato, viene utilizzato il prodotto di enum_randomizationsshots_per_randomization, come specificato nelle opzionitwirling. - Se
sampler.options.default_shotsviene specificato, utilizzare quel valore.
Pertanto, se vengono specificati degli «shots» in tutte le posizioni possibili, viene utilizzato quello con la precedenza più alta (gli «shots» specificati nell’ PUB ).
Sebbene gli shot specificati nell' PUB e e in run abbiano una precedenza maggiore, l'operazione fallisce se twirling è abilitato e il prodotto di num_randomizations e shots_per_randomization è inferiore al shots valore di. num_randomizationsIn questo scenario, SamplerV2 non è in grado di distribuire i colpi tra i specificati.
Esempio:
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
# Setting shots during primitive initialization
sampler = Sampler(mode=backend, options={"default_shots": 4096})
# Setting options after primitive initialization
# This uses auto-complete.
sampler.options.default_shots = 2000
# This does bulk update. The value for default_shots is overridden
# if you specify shots with run() or in the PUB.
sampler.options.update(
default_shots=1024, dynamical_decoupling={"sequence_type": "XpXm"}
)
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)Output:
<RuntimeJobV2('d9mq9snurbec73e67ah0', 'sampler')>
Opzioni disponibili
La tabella seguente illustra le opzioni disponibili nell'ultima versione di qiskit-ibm-runtime. Per visualizzare le versioni precedenti delle opzioni, visita la qiskit-ibm-runtime documentazione dell'API e seleziona una versione precedente.
Il numero totale di impulsi da utilizzare per circuito per configurazione.
Opzioni : numero intero >= 0
Impostazione predefinita : Nessuna
Gestire le impostazioni di mitigazione degli errori di disaccoppiamento dinamico.
dynamical_decouplingDocumentazione APIOpzioni :
True,FalseImpostazione predefinita :
FalseOpzioni :
middle,edgesImpostazione predefinita :
middleOpzioni:
asap,alapImpostazione predefinita:alapOpzioni:
XX,XpXm,XY4Impostazione predefinita:XXOpzioni:
True,FalseImpostazione predefinita:False
environmentDocumentazione APIElenco dei tag.
Opzioni : Nessuna
Impostazione predefinita : Nessuna
Opzioni : DEBUG, INFO, AVVISO, ERRORE, CRITICO
Impostazione predefinita : AVVISO
Opzioni :
True,FalseImpostazione predefinita :
False
Se riportare i qubit allo stato fondamentale ad ogni esecuzione.
Opzioni :
True,FalseImpostazione predefinita :
TrueIl ritardo tra una misurazione e il successivo circuito quantistico.
Opzioni : Valore compreso nell'intervallo specificato da
backend.rep_delay_rangeImpostazione predefinita : specificata da
backend.default_rep_delayOpzioni :
classified,kerneled,avg_kerneledImpostazione predefinita :
classified
Limita la durata di esecuzione di un processo, in secondi. Per ulteriori dettagli, consulta la guida sul tempo massimo di esecuzione.
Opzioni : numero intero di secondi compreso tra [1 e 10800]
Impostazione predefinita : 10800 (3 ore)
Opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzioni opzi
Opzioni : Elenco dei nomi dei gate di base su cui eseguire l'unrolling
Impostazione predefinita : l'insieme di tutte le porte di base supportate dal simulatore Qiskit Aer
Opzioni : Elenco delle interazioni dirette tra due qubit
Impostazione predefinita : Nessuna, il che implica l'assenza di vincoli di connettività (connettività completa).
Opzioni : Qiskit Aer NoiseModel o la sua rappresentazione
Impostazione predefinita : Nessuna
Valori consentiti : numero intero
Impostazione predefinita : Nessuna
Opzioni di rotazione
Opzioni : Vero, Falso
Impostazione predefinita : False
Opzioni : Vero, Falso
Impostazione predefinita : False
Opzioni :
auto, numero intero ≥ 1Impostazione predefinita :
autoOpzioni :
auto, numero intero ≥ 1Impostazione predefinita :
autoOpzioni :
active,active-circuit,active-accum,allImpostazione predefinita :
active-accum
Opzioni sperimentali, se disponibili.
Compatibilità delle funzioni
Alcune funzionalità di runtime non possono essere utilizzate contemporaneamente in un unico processo. Fai clic sulla scheda corrispondente per visualizzare un elenco delle funzionalità incompatibili con quella selezionata:
Incompatibile con:
- Disaccoppiamento dinamico
Altre note:
- La rotazione delle porte logiche può essere applicata ai circuiti dinamici, ma solo alle porte che non si trovano all'interno di blocchi condizionali. La rotazione delle misure può essere applicata solo alle misure terminali.
- Compatibile con i gate frazionari se si utilizza
qiskit-ibm-runtimev0.42.0 o o versioni successive.
Incompatibile con:
- Circuiti dinamici
Incompatibile con:
- Giro della porta
Compatibile con i circuiti dinamici se si utilizza
qiskit-ibm-runtimev0.42.0 o o versioni successive.Incompatibile con:
- Cancelli frazionari
- Allungamenti
Altre note:
- La rotazione delle porte logiche può essere applicata ai circuiti dinamici, ma solo alle porte che non si trovano all'interno di blocchi condizionali.
- La rotazione della misura può essere applicata solo alle misurazioni terminali.
- La rotazione della misura non è compatibile con l'istruzione
store. - Non funziona con intrecciatori non Clifford.
Passi successivi
- Consulta la guida "Introduzione alle opzioni".
- Per ulteriori dettagli sui metodi
SamplerV2, consultare la documentazione di riferimento dell'API di Sampler. - Decidi in quale modalità di esecuzione eseguire il tuo processo.
- Scopri come gestire il rumore con Sampler.