Přeskočit na hlavní obsah

Sledování nebo zrušení úlohy

Zobraz seznam svých pracovních zátěží na stránce Workloads.

Zobrazení stavu úlohy

Přejdi do své tabulky Workloads a zkontroluj sloupec Status, zda byla úloha dokončena nebo selhala.

Zobrazení zbývajícího využití

Přejdi do své tabulky Instances a vyber záložku odpovídající plánu, pro který chceš zobrazit zbývající využití. Zobrazí se celkový použitý čas a celkový zbývající čas na tvém plánu.

Zobrazení metrik počtu odeslaných úloh a pracovních zátěží

Přejdi na stránku Analytics, kde uvidíš celkový počet odeslaných úloh a také počet dávkových pracovních zátěží a Session pracovních zátěží. Upozorňujeme, že stránku Analytics vidíš pouze pro účty, které vlastníš nebo spravuješ.

Sledování úlohy

Použij instanci úlohy ke kontrole stavu úlohy nebo k načtení výsledků zavoláním příslušného příkazu:

job.result()Zobraz výsledky úlohy ihned po jejím dokončení. Výsledky úlohy jsou dostupné po jejím dokončení. Proto je job.result() blokující volání až do dokončení úlohy.
job.job_id()Vrátí ID, které jednoznačně identifikuje danou úlohu. Načtení výsledků úlohy později vyžaduje ID úlohy. Proto se doporučuje ukládat ID úloh, které si možná budeš chtít načíst později.
job.status()Zkontroluj stav úlohy.
job = service.job(<job_id>)Načti úlohu, kterou jsi dříve odeslal(a). Toto volání vyžaduje ID úlohy.

Načtení výsledků úlohy později

Zavolej service.job(\<job\_id>) pro načtení úlohy, kterou jsi dříve odeslal(a). Pokud nemáš ID úlohy nebo chceš načíst více úloh najednou — včetně úloh z vyřazených QPU (quantum processing units) — zavolej místo toho service.jobs() s volitelnými filtry. Viz QiskitRuntimeService.jobs.

Zastaralé balíčky provider

service.jobs() také vrací úlohy spuštěné ze zastaralého balíčku qiskit-ibm-provider. Úlohy odeslané starším (také zastaralým) balíčkem qiskit-ibmq-provider již nejsou dostupné.

Příklad

Tento příklad vrátí 10 nejnovějších runtime úloh, které byly spuštěny na my_backend:

# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-ibm-runtime
# This cell is hidden from users
from qiskit import QuantumCircuit
from qiskit.circuit import Parameter
from qiskit.transpiler import generate_preset_pass_manager

from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2
import numpy as np

my_backend = "ibm_torino"
service = QiskitRuntimeService()
# backend = service.backend(my_backend)
backend = service.least_busy()

# Define two circuits, each with one parameter with two parameters.
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.ry(Parameter("a"), 0)
circuit.cx(0, 1)
circuit.h(0)
circuit.measure_all()

pm = generate_preset_pass_manager(optimization_level=1, backend=backend)
transpiled_circuit = pm.run(circuit)

params = np.random.uniform(size=(2, 3)).T

sampler_pub = (transpiled_circuit, params)

# Instantiate the new estimator object, then run the transpiled circuit
# using the set of parameters and observables.
sampler = SamplerV2(mode=backend)
job = sampler.run([sampler_pub], shots=4)
print(job.job_id())
d305ck0ocacs73ajagvg
result = job.result()

spans = job.result().metadata["execution"]["execution_spans"]
print(spans)
ExecutionSpans([DoubleSliceSpan(<start='2025-09-09 16:31:16', stop='2025-09-09 16:31:16', size=24>)])
params = np.random.uniform(size=(2, 3))
params
array([[0.2260416 , 0.8747859 , 0.44361995],
[0.94700856, 0.96826017, 0.98426562]])
mask = spans[0].mask(0)
mask
array([[[ True,  True,  True,  True],
[ True, True, True, True]],

[[ True, True, True, True],
[ True, True, True, True]],

[[ True, True, True, True],
[ True, True, True, True]]])
from qiskit_ibm_runtime import QiskitRuntimeService

# Initialize the account first.
service = QiskitRuntimeService()
# Use `limit` to retrieve a specific number of jobs. The default `limit` is 10.
service.jobs(backend_name=my_backend)

Zrušení úlohy

Úlohu můžeš zrušit z řídicího panelu IBM Quantum Platform buď na stránce Workloads, nebo na stránce s podrobnostmi konkrétní pracovní zátěže. Na stránce Workloads klikni na nabídku přetečení na konci řádku dané pracovní zátěže a vyber Zrušit. Pokud jsi na stránce s podrobnostmi konkrétní pracovní zátěže, použij rozbalovací nabídku Actions v horní části stránky a vyber Zrušit.

V Qiskit použij job.cancel() pro zrušení úlohy.

Zobrazení Sampler execution spans

Výsledky úloh SamplerV2 spuštěných v Qiskit Runtime obsahují ve svých metadatech informace o časování provádění. Tyto informace o časování lze použít k určení horní a dolní časové hranice, kdy byly konkrétní snímky provedeny na QPU. Snímky jsou seskupeny do objektů ExecutionSpan, z nichž každý udává čas začátku, čas konce a specifikaci toho, které snímky byly v daném rozsahu sesbírány.

Execution span určuje, která data byla provedena během jejího okna, prostřednictvím metody ExecutionSpan.mask. Tato metoda, pro libovolný index Primitive Unified Block (PUB), vrací booleovskou masku, která je True pro všechny snímky provedené během tohoto okna. PUBs jsou indexovány podle pořadí, v jakém byly předány volání Sampler run. Pokud má například PUB tvar (2, 3) a byl spuštěn se čtyřmi snímky, pak tvar masky je (2, 3, 4). Úplné podrobnosti najdeš na stránce API execution_span.

Příklad: Pro zobrazení informací o execution span si prohlédni metadata výsledku vráceného SamplerV2, která mají podobu objektu ExecutionSpans. Tento objekt je kontejner podobný seznamu, který obsahuje instance podtříd ExecutionSpan, například SliceSpan:

from qiskit.primitives import BitArray

# Get the mask of the 1st PUB for the 0th span.
mask = spans[0].mask(0)

# Decide whether the 0th shot of parameter set (1, 2) occurred in this span.
in_this_span = mask[2, 1, 0]

# Create a new bit array containing only the PUB-1 data collected during this span.
bits = result[0].data.meas
filtered_data = BitArray(bits.array[mask], bits.num_bits)

Execution spans lze filtrovat tak, aby obsahovaly informace týkající se konkrétních PUBs vybraných podle jejich indexů:

# take the subset of spans that reference data in PUBs 0 or 2
spans.filter_by_pub([0, 2])
ExecutionSpans([DoubleSliceSpan(<start='2025-09-09 16:31:16', stop='2025-09-09 16:31:16', size=24>)])

Zobraz globální informace o kolekci execution spans:

print("Number of execution spans:", len(spans))
print(" Start of the first span:", spans.start)
print(" End of the last span:", spans.stop)
print(" Total duration (s):", spans.duration)
Number of execution spans: 1
Start of the first span: 2025-09-09 16:31:16.320568
End of the last span: 2025-09-09 16:31:16.865858
Total duration (s): 0.54529

Extrahuj a prozkoumej konkrétní span:

spans.sort()
print(" Start of first span:", spans[0].start)
print(" End of first span:", spans[0].stop)
print("#shots in first span:", spans[0].size)
Start of first span: 2025-09-09 16:31:16.320568
End of first span: 2025-09-09 16:31:16.865858
#shots in first span: 24
poznámka

Je možné, že se časová okna určená různými execution spans překrývají. To není proto, že by QPU provádělo více operací najednou, ale je to artefakt určitého klasického zpracování, které může probíhat souběžně s kvantovým prováděním. Garance je taková, že uvedená data se definitivně vyskytla v hlášeném execution span, ale ne nutně to, že hranice časového okna jsou co nejužší.

Další kroky

Doporučení