Přeskočit na hlavní obsah

Rychlý start se Samplerem

Hlavním úkolem Sampleru je vzorkování výstupního registru z provádění jednoho nebo více kvantových obvodů. Jako vstup jsou přijímány dynamické obvody a parametrizované obvody (pokud jsou odeslány parametrizované obvody, musí být také poskytnuty hodnoty parametrů). Sampler také podporuje vestavěné dynamické odpojování a twirling pro potlačení chyb.

Kroky v tomto tématu popisují, jak nastavit Sampler, prozkoumat možnosti, které můžeš použít pro jeho konfiguraci, a spustit ho v programu.

Verze balíčků

Kód na této stránce byl vyvinut s použitím následujících požadavků. Doporučujeme používat tyto verze nebo novější.

qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-ibm-runtime

Kroky k použití primitiva Sampler

1. Inicializace účtu

Protože Qiskit Runtime je spravovaná služba, musíš nejprve inicializovat svůj účet. Poté můžeš vybrat QPU, které chceš použít pro výpočet střední hodnoty.

Pokud ještě nemáš nastavený účet, postupuj podle kroků v tématu Nastavení účtu IBM Cloud.

Zlomková hradla

Chceš-li používat nově podporovaná zlomková hradla, nastav use_fractional_gates=True při žádosti o backend z instance QiskitRuntimeService. Například:

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

Toto je experimentální funkce a může se v budoucnu změnit.

from qiskit_ibm_runtime import QiskitRuntimeService

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

2. Vytvoření obvodu

Pro primitivum Sampler potřebuješ alespoň jeden obvod jako vstup.

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)

Obvod a pozorovatelná veličina musí být transformovány tak, aby používaly pouze instrukce podporované QPU (označované jako obvody instrukční sady architektury (ISA)). K tomu použij transpiler.

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. Inicializace Qiskit Runtime Sampler

Při inicializaci Sampleru použij parametr mode k určení režimu, ve kterém chceš spustit. Možné hodnoty jsou objekty batch, session nebo backend pro dávkový, session a job prováděcí režim. Více informací najdeš v části Úvod do prováděcích režimů Qiskit Runtime. Vezmi v úvahu, že uživatelé plánu Open Plan nemohou odesílat session úlohy.

from qiskit_ibm_runtime import SamplerV2 as Sampler

sampler = Sampler(mode=backend)

4. Spuštění Sampleru a získání výsledků

Dále spusť metodu run() pro generování výstupu. Obvod a volitelné sady hodnot parametrů jsou jako vstup zadány ve formě n-tic 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: d82863mgbeec73alf9sg
>>> 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: ['1100110011001011111111111010000010001010100100011000001011001101000110011000110100100100101010111001110100100000000011111100000', '0101001001010000100111000110110001001101010110110000110111101110001100000001000001111111101110000000010011111100100110001101000', '0111111110011011000011110111010111101100110010001010010001100000000100000000001010101010111010110000001100100001010110000101000', '0000110011001100110011101100000111011001110100001100001100110111010100101010001010000011000111001010101111110110100110001010000', '0011110011100001100110111001000011011111011110111100000110001000111011101101000110011011101011001110110000010010001100100011001', '1010001000010101011100101010101001101000100010011011100110010111010001110111110010100010111010011010110011001101100110010000010', '0001110010001011001100010000000001001101001110101100110011101111100100100110110010101000011010101000101011101011010100000101010', '1110100100001100110010000010011010111000001010110010111111011010010100110011100101110011101111100001010011100110011000101001001', '1101011100110101011001010100011001110100001011110101101110111011011001100110001011000010001100100011000000110101011100111111000', '1101000110000000101010000000110000011000000000010110011001001000001110101110010111011010101100011000100100110000000000000011001']

Další kroky

Doporučení