Lumaktaw sa pangunahing nilalaman

Tukuyin ang mga Opsyon ng Estimator

Mga bersyon ng package

Ang code sa pahinang ito ay binuo gamit ang mga sumusunod na kinakailangan. Inirerekomenda naming gamitin ang mga bersyong ito o mas bago.

qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1

Maaari kang gumamit ng mga opsyon upang i-customize ang Estimator primitive. Habang ang interface ng pamamaraan ng run() ng mga primitive ay karaniwan sa lahat ng implementasyon, ang kanilang mga opsyon ay hindi. Kumonsulta sa mga API reference para sa impormasyon tungkol sa mga opsyon ng qiskit.primitives.BaseEstimatorV2 at qiskit_aer.BaseEstimatorV2.

Notes :

Mga tala tungkol sa pagtukoy ng mga opsyon sa Estimator primitives
  • Maaari mong makita ang mga available na opsyon at i-update ang mga halaga ng opsyon habang o pagkatapos ng Estimator initialization.
  • Gamitin ang pamamaraan ng update() upang ilapat ang mga pagbabago sa attribute na options.
  • Kung hindi mo tutukuyin ang halaga para sa isang opsyon, bibigyan ito ng espesyal na halaga ng Unset at gagamitin ang mga default ng server.
  • Ang attribute na options ay uri ng dataclass sa Python. Maaari mong gamitin ang built-in na pamamaraan na asdict upang i-convert ito sa isang dictionary.

Itakda ang mga opsyon ng Estimator

Maaari kang magtakda ng mga opsyon kapag nag-initialize ng Estimator, pagkatapos mag-initialize ng Estimator, o (para sa precision lamang), sa pamamaraan ng run().

Initialization ng primitive

Maaari kang magpasa ng isang instance ng options class o isang dictionary kapag nag-initialize ng Estimator, na gagawa ng kopya ng mga opsyon na iyon. Kaya, ang pagbabago ng orihinal na dictionary o options instance ay hindi nakakaapekto sa mga opsyon na pagmamay-ari ng primitive.

Options class

Kapag gumagawa ng instance ng klase ng EstimatorV2, maaari kang magpasa ng instance ng options class. Ang mga opsyon na iyon ay ilalapat kapag ginamit mo ang run() upang magsagawa ng kalkulasyon. Tukuyin ang mga opsyon sa format na ito: options.option.sub-option.sub-sub-option = choice. Halimbawa: options.dynamical_decoupling.enable = True

Halimbawa:

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit_ibm_runtime.options import EstimatorOptions

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)

# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]

estimator = Estimator(mode=backend, options=options)

Dictionary

Maaari kang tumukoy ng mga opsyon bilang isang dictionary kapag nag-initialize ng Estimator.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)

I-update ang mga opsyon pagkatapos ng initialization

Maaari mong tukuyin ang mga opsyon sa format na ito: estimator.options.option.sub-option.sub-sub-option = choice upang samantalahin ang auto-complete, o gamitin ang pamamaraan ng update() para sa mga bulk update.

Ang options class ng EstimatorV2 (EstimatorOptions) ay hindi kailangang i-instantiate kung nagtatakda ka ng mga opsyon pagkatapos i-initialize ang primitive.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

estimator = Estimator(mode=backend)

# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)

Pamamaraan ng run()

Ang mga halagang maaari mong ipasa sa run() ay ang mga tinukoy lamang sa interface. Iyon ay, precision para sa Estimator. Ito ay nagpapalit ng anumang halagang itinakda para sa default_precision para sa kasalukuyang run.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
from qiskit.quantum_info import SparsePauliOp

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()

observable = SparsePauliOp("Z" * 3)

pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)

transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
isa_observable1 = observable.apply_layout(transpiled1.layout)
isa_observable2 = observable.apply_layout(transpiled2.layout)

estimator = Estimator(mode=backend)
# Default precision to use if not specified in run()
estimator.options.default_precision = 0.01
# Run two circuits, requiring a precision of .02 for both.
estimator.run(
[(transpiled1, isa_observable1), (transpiled2, isa_observable2)],
precision=0.02,
)
<RuntimeJobV2('d7amh42k86tc73a1sa20', 'estimator')>

Espesyal na kaso: precision

Ang pamamaraan ng EstimatorV2.run ay tumatanggap ng dalawang argumento: isang listahan ng mga PUB, na ang bawat isa ay maaaring tumukoy ng PUB-specific na halaga para sa precision, at isang precision keyword argument. Ang mga halagang ito ng precision ay bahagi ng interface ng pagpapatakbo ng Estimator, at independyente sa mga opsyon ng Runtime Estimator. Ang mga ito ay nangunguna sa anumang mga halagang tinukoy bilang mga opsyon upang sumunod sa Estimator abstraction.

Gayunpaman, kung ang precision ay hindi tinukoy ng anumang PUB o sa run keyword argument (o kung lahat sila ay None), ang halaga ng precision mula sa mga opsyon ay ginagamit, lalo na ang default_precision.

tala

Ang mga parameter ng precision na ito ay para lamang sa pagtukoy ng target na precision, at hindi ginagarantiyahan na maaabot ng mga resulta ang tinukoy na precision.

Tandaan na ang mga opsyon ng Estimator ay naglalaman ng parehong default_shots at default_precision. Gayunpaman, dahil ang gate-twirling ay pinagana bilang default, ang produkto ng num_randomizations at shots_per_randomization ay nangunguna sa dalawang opsyong iyon.

Specifically, para sa anumang Estimator PUB:

  1. Kung ang PUB ay nagtatukoy ng precision, gamitin ang halagang iyon.
  2. Kung ang precision keyword argument ay tinukoy sa run, gamitin ang halagang iyon.
  3. Kung ang twirling ay pinagana (True bilang default), ang produkto ng num_randomizations at shots_per_randomization, tulad ng tinukoy sa mga opsyon ng twirling, ay ginagamit.
  4. Kung ang estimator.options.default_shots ay tinukoy, gamitin ang halagang iyon upang kontrolin ang dami ng data.
  5. Kung ang estimator.options.default_precision ay tinukoy, gamitin ang halagang iyon.

Halimbawa, kung ang precision ay tinukoy sa lahat ng apat na lugar, ang isa na may pinakamataas na precedence (precision na tinukoy sa PUB) ay ginagamit.

tala

Kahit na ang precision na tinukoy sa PUB at sa run ay may mas mataas na precedence, mabibigo ang trabaho kung ang twirling ay pinagana at ang produkto ng num_randomizations at shots_per_randomization ay mas maliit kaysa sa mga shots na kailangan upang makamit ang precision. Sa sitwasyong ito, hindi kayang paghati-hatiin ng EstimatorV2 ang mga shots sa tinukoy na num_randomizations.

tala

Ang precision ay inversely na may kaugnayan sa paggamit. Iyon ay, mas mababa ang precision, mas maraming QPU time ang kailangan para sa pagpapatakbo.

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
from qiskit.quantum_info import SparsePauliOp

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

observable = SparsePauliOp("Z" * 3)

circuit = random_iqp(3)
circuit.measure_all()

pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)

isa_circuit = pass_manager.run(circuit)
isa_observable = observable.apply_layout(isa_circuit.layout)

# Setting precision during primitive initialization
estimator = Estimator(mode=backend, options={"default_precision": 0.05})

# Run with precision=0.02, overwriting the default.
estimator.run(
[(isa_circuit, isa_observable1)],
precision=0.02,
)
<RuntimeJobV2('d8286b00bvlc73d1vn50', 'estimator')>

I-off ang lahat ng error mitigation at error suppression

Maaari mong i-off ang lahat ng error mitigation at suppression kung, halimbawa, nagsasagawa ka ng pananaliksik sa iyong sariling mga diskarteng mitigation. Upang magawa ito, itakda ang resilience_level = 0.

Halimbawa:

from qiskit_ibm_runtime import EstimatorV2 as Estimator, QiskitRuntimeService

# Define the service. This allows you to access an IBM QPU.
service = QiskitRuntimeService()

# Get a backend
backend = service.least_busy(operational=True, simulator=False)

# Define Estimator
estimator = Estimator(backend)

options = estimator.options

# Turn off all error mitigation and suppression
options.resilience_level = 0

Mga opsyong Available

Ang sumusunod na talahanayan ay nagdodokumento ng mga opsyon mula sa pinakabagong bersyon ng qiskit-ibm-runtime. Upang makita ang mga mas lumang bersyon ng opsyon, bisitahin ang API reference ng qiskit-ibm-runtime at pumili ng nakaraang bersyon.

default_shots

Ang kabuuang bilang ng mga shot na gagamitin bawat circuit bawat configuration.

Mga Pagpipilian: Integer >= 0

Default: None

default_shots API documentation

default_precision

Ang default na precision na gagamitin para sa anumang PUB o run() na tawag na hindi nagtutukoy ng isa.

Mga Pagpipilian: Float > 0

Default: 0.015625 (1 / sqrt(4096))

default_precision API documentation

dynamical_decoupling

Kontrolin ang mga setting ng dynamical decoupling error mitigation.

dynamical_decoupling API documentation

dynamical_decoupling.enable

Mga Pagpipilian: True, False

Default: False

dynamical_decoupling.extra_slack_distribution

Mga Pagpipilian: middle, edges

Default: middle

dynamical_decoupling.scheduling_method

Mga Pagpipilian: asap, alap Default: alap

dynamical_decoupling.sequence_type

Mga Pagpipilian: XX, XpXm, XY4 Default: XX

dynamical_decoupling.skip_reset_qubits

Mga Pagpipilian: True, False Default: False

environment

environment API documentation

environment.callback

Callable function na tumatanggap ng Job ID at Job result.

Mga Pagpipilian: None

Default: None

environment.job_tags

Listahan ng mga tag.

Mga Pagpipilian: None

Default: None

environment.log_level

Mga Pagpipilian: DEBUG, INFO, WARNING, ERROR, CRITICAL

Default: WARNING

environment.private

Mga Pagpipilian: True, False

Default: False

execution

execution API documentation

execution.init_qubits

Kung ire-reset ang mga qubit sa ground state para sa bawat shot.

Mga Pagpipilian: True, False

Default: True

execution.rep_delay

Ang pagkaantala sa pagitan ng isang sukat at ng kasunod na quantum circuit.

Mga Pagpipilian: Halaga sa hanay na ibinibigay ng backend.rep_delay_range

Default: Ibinibigay ng backend.default_rep_delay

max_execution_time

Limitahan kung gaano katagal ang maaaring tumakbo ang isang trabaho, sa segundo. Tingnan ang gabay sa maximum execution time para sa mga detalye.

Mga Pagpipilian: Integer na bilang ng segundo sa hanay na [1, 10800]

Default: 10800 (3 oras)

resilience

Mga advanced na opsyon ng resilience upang fine-tune ang estratehiya ng resilience.

resilience API documentation

resilience.layer_noise_learning

Mga opsyon para sa pagkatuto ng layer noise.

resilience.layer_noise_learning API documentation

resilience.layer_noise_learning.layer_pair_depths

Mga Pagpipilian: list[int] ng 2-10 na halaga sa hanay na [0, 200]

Default: (0, 1, 2, 4, 16, 32)

resilience.layer_noise_learning.max_layers_to_learn

Mga Pagpipilian: None, Integer >= 1

Default: 4

resilience.layer_noise_learning.num_randomizations

Mga Pagpipilian: Integer >= 1

Default: 32

resilience.layer_noise_learning.shots_per_randomization

Mga Pagpipilian: Integer >= 1

Default: 128

resilience.layer_noise_model

Mga Pagpipilian: NoiseLearnerResult, Sequence[LayerError]

Default: None

resilience.measure_mitigation

Mga Pagpipilian: True, False

Default: True

resilience.measure_noise_learning

Mga opsyon para sa pagkatuto ng measurement noise.

resilience.measure_noise_learning API documentation

resilience.measure_noise_learning.num_randomizations

Mga Pagpipilian: Integer >= 1

Default: 32

resilience.measure_noise_learning.shots_per_randomization

Mga Pagpipilian: Integer, auto

Default: auto

resilience.pec_mitigation

Mga Pagpipilian: True, False

Default: False

resilience.pec

Mga opsyon ng probabilistic error cancellation mitigation.

resilience.pec API documentation

resilience.pec.max_overhead

Mga Pagpipilian: None, Integer >= 1

Default: 100

resilience.pec.noise_gain

Mga Pagpipilian: auto, float sa hanay na [0, 1]

Default: auto

resilience.zne_mitigation

Mga Pagpipilian: True, False

Default: False

resilience.zne
resilience.zne.amplifier

Mga Pagpipilian: gate_folding, gate_folding_front, gate_folding_back, pea

Default: gate_folding

resilience.zne.extrapolated_noise_factors

Mga Pagpipilian: Listahan ng mga float

Default: [0, *noise_factors]

resilience.zne.extrapolator

Mga Pagpipilian: Isa o higit pa sa: exponential, linear, double_exponential, polynomial_degree_(1 <= k <= 7), fallback

Default: (exponential, linear)

resilience.zne.noise_factors

Mga Pagpipilian: Listahan ng mga float; bawat float >= 1

Default: (1, 1.5, 2) para sa PEA, at (1, 3, 5) kung hindi

resilience_level

Gaano karaming resilience ang itatayo laban sa mga error. Ang mas mataas na antas ay nagbibigay ng mas tumpak na mga resulta sa gastos ng mas mahabang oras ng pagpoproseso. Tingnan ang seksyon ng mga antas ng resilience sa paksa ng Noise management upang matuto nang higit pa.

Mga Pagpipilian: 0, 1, 2

Default: 1

resilience_level API documentation

seed_estimator

Mga Pagpipilian: Integer

Default: None

seed_estimator

simulator

Mga opsyon na ipapasa kapag nag-simulate ng backend

simulator API documentation

simulator.basis_gates

Mga Pagpipilian: Listahan ng mga pangalan ng basis gate na i-unroll

Default: Ang set ng lahat ng basis gate na sinusuportahan ng Qiskit Aer simulator

simulator.coupling_map

Mga Pagpipilian: Listahan ng mga directed two-qubit interaction

Default: None, na nangangahulugang walang mga hadlang sa koneksyon (buong koneksyon).

simulator.noise_model

Mga Pagpipilian: Qiskit Aer NoiseModel, o ang representasyon nito

Default: None

simulator.seed_simulator

Mga Pagpipilian: Integer

Default: None

twirling

Mga opsyon ng Twirling

twirling API documentation

twirling.enable_gates

Mga Pagpipilian: True, False

Default: False

twirling.enable_measure

Mga Pagpipilian: True, False

Default: True

twirling.num_randomizations

Mga Pagpipilian: auto, Integer >= 1

Default: auto

twirling.shots_per_randomization

Mga Pagpipilian: auto, Integer >= 1

Default: auto

twirling.strategy

Mga Pagpipilian: active, active-circuit, active-accum, all

Default: active-accum

experimental

Mga pang-eksperimentong opsyon, kapag available.

Compatibility ng mga Feature

Ang ilang mga runtime feature ay hindi maaaring gamitin nang magkasama sa iisang job. I-click ang naaangkop na tab upang makita ang listahan ng mga feature na hindi compatible sa napiling feature:

Fractional gates

Hindi compatible sa:

  • Gate twirling
  • PEA
  • PEC
Gate-folding ZNE

Maaaring hindi gumana kapag gumagamit ng custom gates. Hindi compatible sa:

  • PEA
  • PEC
Gate twirling

Hindi compatible sa:

  • Fractional gates
  • Stretches

Iba pang mga tala:

  • Ang measurement twirling ay maaari lamang ilapat sa terminal measurements.
  • Hindi gumagana sa non-Clifford entanglers.
PEA

Hindi compatible sa:

  • Fractional gates
  • Gate-folding ZNE
  • PEC
PEC

Hindi compatible sa:

  • Fractional gates
  • Gate-folding ZNE
  • PEA

Mga Susunod na Hakbang

Mga Rekomendasyon