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.
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
- Zjisti, jak testovat lokálně před spuštěním na kvantových počítačích.
- Projdi si podrobné příklady.
- Procvič práci s primitivy v lekci cost function v IBM Quantum Learning.
- Zjisti, jak transpilovat lokálně v sekci Transpilace.
- Vyzkoušej průvodce Porovnat nastavení transpileru.
- Zjisti, jak používat možnosti primitiv.
- Zobrazit API pro možnosti Sampleru.
- Přečti si Migraci na primitiva V2.