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 :
- 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 naoptions. - Kung hindi mo tutukuyin ang halaga para sa isang opsyon, bibigyan ito ng espesyal na halaga ng
Unsetat gagamitin ang mga default ng server. - Ang attribute na
optionsay uri ngdataclasssa Python. Maaari mong gamitin ang built-in na pamamaraan naasdictupang 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.
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:
- Kung ang PUB ay nagtatukoy ng precision, gamitin ang halagang iyon.
- Kung ang precision keyword argument ay tinukoy sa
run, gamitin ang halagang iyon. - Kung ang
twirlingay pinagana (True bilang default), ang produkto ngnum_randomizationsatshots_per_randomization, tulad ng tinukoy sa mga opsyon ngtwirling, ay ginagamit. - Kung ang
estimator.options.default_shotsay tinukoy, gamitin ang halagang iyon upang kontrolin ang dami ng data. - Kung ang
estimator.options.default_precisionay 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.
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.
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_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))
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.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.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.layer_noise_learning
Mga opsyon para sa pagkatuto ng layer noise.
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.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.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
seed_estimator
simulator
Mga opsyon na ipapasa kapag nag-simulate ng backend
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.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
- Hanapin ang karagdagang detalye tungkol sa mga pamamaraan ng
EstimatorV2sa Estimator API reference. - Magpasya kung aling execution mode ang gagamitin para sa iyong job.
- Matuto tungkol sa pamamahala ng noise gamit ang Estimator.