Lumaktaw sa pangunahing nilalaman
Ang proyektong ito ay nasa beta. Nakakita ng bug? Mag-bukas ng GitHub issue. May tanong o ideya? Magtanong sa Discussions — gusto naming marinig ang iyong feedback!
Gaano kaganda ang kalidad ng pagsasalin sa pahinang ito?

Mabilisang pagsisimula sa Sampler

Ang pangunahing gawain ng Sampler ay ang pag-sample ng output register mula sa pagpapatupad ng isa o higit pang mga quantum circuit. Tinatanggap bilang input ang mga dynamic na circuit at mga parametrized na circuit (kung nagsumite ng mga parametrized na circuit, ang mga halaga ng parameter ay dapat ding ibigay). Sinusuportahan din ng Sampler ang built-in na dynamical decoupling at twirling para sa error suppression.

Inilalarawan ng mga hakbang sa paksang ito kung paano i-set up ang Sampler, i-explore ang mga opsyon na maaari mong gamitin para i-configure ito, at i-invoke ito sa isang programa.

Bagong implementasyon ng Sampler

Inilabas ang mga bagong implementasyon ng Qiskit SamplerV2 at EstimatorV2 interface sa qiskit-ibm-runtime v0.50.0. Ang mga client-side na primitive na ito ay gumagawa ng karamihan sa pre- at post-processing sa client side at ipinapasa ang execution sa Executor primitive. Ang pagpapatakbo sa client side ay nagbibigay ng mas malaking transparency, mas mabilis na debugging feedback, at mas pinong kontrol.

Dahil ipinapatupad nila ang parehong API, ang mga client-side na primitive na ito ay halos mga drop-in replacement ng mga legacy server-side na primitive, kung saan ang tanging pagbabago ay ang import statement. Tingnan ang Mag-migrate mula sa server-side patungo sa client-side na Sampler at Estimator para sa karagdagang impormasyon.

Mga bersyon ng package

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

qiskit[all]~=2.5.2
qiskit-ibm-runtime~=0.47.0

Mga hakbang para gamitin ang Sampler primitive​

1. I-initialize ang account​

Kailangan mo munang i-initialize ang iyong account. Pagkatapos, maaari mo nang piliin ang QPU na gusto mong gamitin.

Sundin ang mga hakbang sa paksa ng I-set up ang iyong IBM Cloud account kung wala ka pang naka-set up na account.

Mga fractional gate

Para gamitin ang bagong sinusuportahang mga fractional gate, itakda ang use_fractional_gates=True kapag humihiling ng backend mula sa isang QiskitRuntimeService instance. Halimbawa:

service = QiskitRuntimeService()
fractional_gate_backend = service.least_busy(use_fractional_gates=True)

Ito ay isang experimental na feature at maaaring magbago sa hinaharap.

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"numpy": "numpy", "qiskit": "qiskit", "qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService

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

2. Lumikha ng circuit​

Kailangan mo ng kahit isang circuit bilang input sa Sampler primitive.

import numpy as np
from qiskit.circuit.library import efficient_su2

circuit = efficient_su2(127, entanglement="linear")
circuit.measure_all()
# The circuit is parametrized, so we will define the parameter values for execution
param_values = np.random.rand(circuit.num_parameters)

Ang circuit at observable ay kailangang i-transform para gumamit lamang ng mga tagubilin na sinusuportahan ng QPU (tinatawag na instruction set architecture (ISA) circuit). Gamitin ang transpiler para gawin ito.

from qiskit.transpiler import generate_preset_pass_manager

pm = generate_preset_pass_manager(optimization_level=1, backend=backend)
isa_circuit = pm.run(circuit)
print(f">>> Circuit ops (ISA): {isa_circuit.count_ops()}")
>>> Circuit ops (ISA): OrderedDict([('rz', 3036), ('sx', 1769), ('cz', 378), ('measure', 127), ('barrier', 1)])

3. I-initialize ang IBM Quantum Sampler​

Kapag ini-initialize mo ang Sampler, gamitin ang parameter na mode para tukuyin ang mode na gusto mong patakbuhin nito. Ang mga posibleng halaga ay mga object na batch, session, o backend para sa batch, session, at job execution mode, ayon sa pagkakasunod. Para sa karagdagang impormasyon, tingnan ang Panimula sa IBM Quantum Compute Service execution modes. Tandaan na ang mga gumagamit ng Open Plan ay hindi makakapagsumite ng mga session job.

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Sampler

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_sampler import Sampler

sampler = Sampler(mode=backend)

4. I-invoke ang Sampler at makuha ang mga resulta​

Susunod, i-invoke ang method na run() para makabuo ng output. Ang circuit at mga opsyonal na set ng halaga ng parameter ay inilalagay bilang mga tuple ng primitive unified bloc (PUB).

job = sampler.run([(isa_circuit, param_values)])
print(f">>> Job ID: {job.job_id()}")
print(f">>> Job Status: {job.status()}")
>>> Job ID: dab7lb6rrl7c7386gjgg
>>> Job Status: QUEUED
result = job.result()

# Get results for the first (and only) PUB
pub_result = result[0]
print(
f"First ten results for the 'meas' output register: "
f"{pub_result.data.meas.get_bitstrings()[:10]}"
)
First ten results for the 'meas' output register: ['1110001000100100100111011000001001000101010000001100010010110011001100110111100000000110001000011001101000110100101110101010011', '1110101100010101010001010111111011000110011010100101001100110101010010101010101110001010100100000000011110101101011000100000100', '1100110011101000110000000100110111101010110001100010111100001101100001010100111001101010101110000101010001001101010101001000100', '1011001001011000000101010111111010011101001111010100001011110011000101110101011001100110011011110011101010000111001111110110011', '1110111011011111101011110101110101010110011001100110101111100100011101100011011100101100101001001111110101111010101110111111011', '0101001110001110010001010100010111011001000000011110000000000001110000010010101101011001000100000001011011101111010010110111110', '1101101001000100010000110001000101010010101011000011000011001010000111100110010101010110100110011010101100001011100110001111011', '1000110011111111100010101010101111001001100001110111101001100111010101010111110110011000110011010010010000100000100010010010101', '0101010100110011110011010000000100011001111100101100101100101111101110100001101101111010100011011000010011111010001100110000010', '0010000111011100000000110000001110001100010011000100101110111111100011001100011001101010011111111100000000011100101101111010100']

Mga susunod na hakbang​

Mga rekomendasyon