Перейти до основного вмісту

Моніторинг або скасування завдання

Переглянь список своїх робочих навантажень на сторінці Workloads.

Перегляд статусу завдання

Перейди до таблиці Workloads і перевір стовпець Status, щоб дізнатися, чи завершено або провалено завдання.

Перегляд залишку використання

Перейди до таблиці Instances і вибери вкладку, що відповідає тарифному плану, для якого хочеш переглянути залишок. Відображається загальний витрачений час та загальний залишок часу за твоїм планом.

Перегляд метрик кількості поданих завдань і робочих навантажень

Перейди на сторінку Analytics, щоб побачити загальну кількість поданих завдань, а також кількість пакетних і сесійних робочих навантажень. Зверни увагу, що сторінка Analytics доступна лише для облікових записів, якими ти володієш або керуєш.

Моніторинг завдання

Використовуй екземпляр завдання, щоб перевірити його статус або отримати результати, викликавши відповідну команду:

job.result()Перегляд результатів завдання одразу після його завершення. Результати доступні після завершення завдання. Тому job.result() є блокувальним викликом до завершення завдання.
job.job_id()Повертає ідентифікатор, що унікально визначає завдання. Для отримання результатів завдання пізніше потрібен його ID. Тому рекомендується зберігати ID завдань, результати яких може знадобитися отримати згодом.
job.status()Перевірка статусу завдання.
job = service.job(<job_id>)Отримання раніше поданого завдання. Для цього виклику потрібен ID завдання.

Отримання результатів завдання пізніше

Викличи service.job(\<job\_id>), щоб отримати раніше подане завдання. Якщо у тебе немає ID завдання або ти хочеш отримати кілька завдань одночасно, включно із завданнями від виведених з експлуатації QPU (квантових процесорів), натомість виклич service.jobs() з необов'язковими фільтрами. Дивись QiskitRuntimeService.jobs.

Застарілі пакети провайдера

service.jobs() також повертає завдання, виконані з застарілого пакету qiskit-ibm-provider. Завдання, подані за допомогою старішого (також застарілого) пакету qiskit-ibmq-provider, більше недоступні.

Приклад

Цей приклад повертає 10 найновіших завдань runtime, виконаних на 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)

Скасування завдання

Ти можеш скасувати завдання з панелі керування IBM Quantum Platform на сторінці Workloads або на сторінці деталей конкретного робочого навантаження. На сторінці Workloads натисни меню переповнення в кінці рядка цього робочого навантаження та вибери Cancel. Якщо ти перебуваєш на сторінці деталей конкретного робочого навантаження, скористайся спадним меню Actions угорі сторінки та вибери Cancel.

У Qiskit використовуй job.cancel(), щоб скасувати завдання.

Перегляд проміжків виконання Sampler

Результати завдань SamplerV2, виконаних у Qiskit Runtime, містять у своїх метаданих інформацію про час виконання. Ця інформація про час може використовуватися для встановлення верхніх і нижніх меж часових позначок, коли саме конкретні шоти були виконані на QPU. Шоти групуються в об'єкти ExecutionSpan, кожен з яких вказує час початку, час зупинки та специфікацію того, які шоти були зібрані в цьому проміжку.

Проміжок виконання вказує, які дані були виконані протягом його вікна, надаючи метод ExecutionSpan.mask. Цей метод, отримавши індекс будь-якого Primitive Unified Block (PUB), повертає булеву маску зі значенням True для всіх шотів, виконаних протягом його вікна. PUB-и індексуються за порядком, у якому вони були передані у виклик запуску Sampler. Наприклад, якщо PUB має форму (2, 3) і був запущений з чотирма шотами, то форма маски дорівнює (2, 3, 4). Повні відомості дивись на сторінці API execution_span.

Приклад: Щоб переглянути інформацію про проміжки виконання, перевір метадані результату, повернутого SamplerV2, — вони мають форму об'єкта ExecutionSpans. Цей об'єкт є контейнером, схожим на список, що містить екземпляри підкласів ExecutionSpan, наприклад 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)

Проміжки виконання можна фільтрувати, щоб включати інформацію, що стосується конкретних PUB-ів, обраних за їхніми індексами:

# 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>)])

Перегляд загальної інформації про колекцію проміжків виконання:

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

Вилучення та перевірка конкретного проміжку:

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
примітка

Часові вікна, задані різними проміжками виконання, можуть перекриватися. Це не означає, що QPU виконував кілька операцій одночасно, а є артефактом певної класичної обробки, яка може відбуватися паралельно з квантовим виконанням. Гарантія полягає в тому, що зазначені дані точно відбулися в межах зазначеного проміжку виконання, але не обов'язково, що межі часового вікна є якомога вужчими.

Наступні кроки

Рекомендації