Skip to main content
IBM Quantum Platform

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 ":

  1. Se il parametro PUB specifica il numero di scatti, utilizzare quel valore.
  2. Se l'argomento shots «keyword» è specificato in run, utilizzare quel valore.
  3. Se twirling è abilitato, viene utilizzato il prodotto di e num_randomizations shots_per_randomization, come specificato nelle opzioni twirling .
  4. Se sampler.options.default_shots viene 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 ).

Note

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

    default_shots Documentazione API

  • Gestire le impostazioni di mitigazione degli errori di disaccoppiamento dinamico.

    dynamical_decoupling Documentazione API

    • Opzioni : True, False

      Impostazione predefinita : False

    • Opzioni : middle, edges

      Impostazione predefinita : middle

    • Opzioni: asap, alap Impostazione predefinita: alap

    • Opzioni: XX, XpXm, XY4 Impostazione predefinita: XX

    • Opzioni: True, False Impostazione predefinita: False

  • environment Documentazione API

    • Elenco dei tag.

      Opzioni : Nessuna

      Impostazione predefinita : Nessuna

    • Opzioni : DEBUG, INFO, AVVISO, ERRORE, CRITICO

      Impostazione predefinita : AVVISO

    • Opzioni : True, False

      Impostazione predefinita : False

  • execution Documentazione API

    • Se riportare i qubit allo stato fondamentale ad ogni esecuzione.

      Opzioni : True, False

      Impostazione predefinita : True

    • Il ritardo tra una misurazione e il successivo circuito quantistico.

      Opzioni : Valore compreso nell'intervallo specificato da backend.rep_delay_range

      Impostazione predefinita : specificata da backend.default_rep_delay

    • Opzioni : classified, kerneled, avg_kerneled

      Impostazione 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)

    max_execution_time Documentazione API

  • 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

    simulator Documentazione API

    • 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

    twirling Documentazione API

    • Opzioni : Vero, Falso

      Impostazione predefinita : False

    • Opzioni : Vero, Falso

      Impostazione predefinita : False

    • Opzioni : auto, numero intero ≥ 1

      Impostazione predefinita : auto

    • Opzioni : auto, numero intero ≥ 1

      Impostazione predefinita : auto

    • Opzioni : active, active-circuit, active-accum, all

      Impostazione 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

Suggerimenti
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.