Pantau atau batalkan kerja
Panduan ini menerangkan cara memantau status kerja, melihat maklumat penggunaan, dan membatalkan kerja. Anda boleh mengakses maklumat ini melalui IBM Quantum® Platform dan secara programatik menggunakan Qiskit.
Versi pakej
Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan menggunakan versi ini atau yang lebih baharu.
qiskit-ibm-runtime~=0.46.1
Pantau kerja
Gunakan kaedah ini untuk menyemak status kerja yang anda hantar, mendapatkan semula keputusan, dan melihat butiran berkaitan kerja tersebut dan pelaksanaannya.
- Pantau kerja dengan Qiskit
- Pantau kerja pada IBM Quantum Platform
Instans kerja menyediakan beberapa kaedah untuk pemantauan:
| Kaedah | Penerangan |
|---|---|
job.status() | Semak status tugas semasa |
job.job_id() | Dapatkan pengecam tugas yang unik |
job.result() | Dapatkan hasil tugas (panggilan menyekat sehingga selesai) |
job.wait_for_final_state() | Sekat sehingga tugas mencapai keadaan akhir |
Navigasi ke halaman Workloads dan semak lajur Status. Status kerja anda akan muncul sebagai salah satu daripada berikut:
- Pending: Kerja sedang menunggu untuk dijalankan pada QPU
- In progress: Kerja sedang dilaksanakan
- Completed: Kerja selesai dengan jayanya
- Failed: Kerja mengalami ralat
- Canceled: Pengguna membatalkan kerja
Klik pada nama kerja atau baris untuk membuka paparan terperinci, di mana anda boleh melihat maklumat seperti keputusan dan sebarang mesej ralat.
Mengapa kerja kekal "In progress"
Anda mungkin perasan bahawa kerja (menggunakan sama ada mod kerja atau mod kumpulan) yang anda jangkakan hanya mengambil masa beberapa saat kekal pada status In progress (dipanggil RUNNING dalam Qiskit) untuk tempoh yang lebih lama. Ini adalah normal, dan ia tidak bermakna kerja tersebut menggunakan keseluruhan masa itu sebagai penggunaan. Ini berlaku disebabkan cara kerja dijadualkan pada QPU:
-
Setiap kerja memerlukan pra-pemprosesan klasik sebelum ia boleh berjalan pada QPU. Kerja beralih ke In progress (
RUNNING) sebaik sahaja pemprosesan klasik ini bermula — bukan apabila ia mula dilaksanakan pada QPU. -
Kebanyakan pemprosesan klasik ini berjalan secara selari, jadi beberapa kerja boleh berada dalam status In progress pada masa yang sama.
-
Walau bagaimanapun, hanya satu kerja pada satu masa boleh berjalan pada QPU. Apabila beberapa kerja menyelesaikan pemprosesan klasik mereka dan bersedia untuk dilaksanakan, mereka perlu menunggu giliran untuk QPU. Ini dikenali sebagai pertikaian QPU. Apabila pertikaian tinggi, kerja boleh kekal pada In progress dengan ketara lebih lama daripada beberapa saat masa QPU yang sebenarnya diperlukan.
-
Pertikaian juga boleh berlaku apabila tugas penyelenggaraan sistem, seperti kalibrasi, sedang dijalankan pada QPU. Kerja anda kekal pada In progress sehingga tugas penyelenggaraan itu selesai dan QPU tersedia.
Disebabkan ini, masa jam-dinding yang berlalu yang dihabiskan oleh kerja pada In progress tidak sama dengan penggunaannya. Kedua-dua anggaran penggunaan dan masa pelaksanaan maksimum hanya berdasarkan masa QPU dikunci untuk melaksanakan kerja anda, dan oleh itu tidak termasuk pemprosesan klasik berbenang-berbilang yang diterangkan di atas. Masa In progress yang lama tidak meningkatkan penggunaan atau kos yang dilaporkan.
Mod Session adalah berbeza
Tingkah laku sebelumnya berlaku untuk mod kerja dan mod kumpulan. Dalam mod Session, semasa tetingkap aktif Session, pengguna mempunyai akses eksklusif kepada Backend dan tiada kerja lain boleh berjalan, termasuk kerja kalibrasi. Oleh itu, sebarang pertikaian QPU hanya berlaku antara kerja Session anda sendiri. Selain itu, kerana kapasiti QPU dikhaskan untuk tempoh Session, penggunaan Session diukur sebagai masa berlalu semasa Session kekal aktif, tanpa mengira sama ada kerja sedang dijalankan secara aktif. Lihat Penggunaan beban kerja untuk maklumat lanjut.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# Retrieve a job by ID
job = service.job("<job_id>")
# Get job ID (useful for saving for later retrieval)
print(f"Job ID: {job.job_id()}")
# Check current status
print(f"Status: {job.status()}")
# Wait for job to complete (blocking call)
job.wait_for_final_state()
print("Job completed")
# Get results
results = job.result()
print(results)
Lihat baki penggunaan
Jejaki berapa banyak kuota penggunaan pelan anda yang tinggal.
- Semak penggunaan dengan Qiskit
- Lihat penggunaan pada IBM Quantum Platform
Gunakan kaedah service.usage() untuk mendapatkan maklumat penggunaan bagi instans aktif anda semasa.
Navigasi ke halaman Instances dan pilih tab yang berkaitan dengan pelan yang anda ingin semak. Jumlah masa yang digunakan dan jumlah masa yang tinggal pada pelan anda akan dipaparkan.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# Get usage information for the current active instance
usage = service.usage()
print(usage)
Lihat metrik kerja
Dapatkan gambaran keseluruhan penghantaran kerja anda, termasuk metrik beban kerja kumpulan dan Session.
- Dapatkan metrik kerja dengan Qiskit
- Lihat metrik kerja pada IBM Quantum Platform
Gunakan kaedah service.jobs() dengan penapis untuk mendapatkan semula maklumat tentang kerja yang anda hantar, seperti berapa banyak yang telah dihantar, apakah status mereka, dan bila ia dicipta. Contoh berikut mendapatkan semula semua kerja yang dihantar dalam tujuh hari lepas dan mengira jumlah penggunaan daripada kerja tersebut.
Navigasi ke halaman Analytics untuk melihat dan memuat turun data, seperti berikut:
- Jumlah penggunaan
- Penggunaan ditapis mengikut instans, komputer kuantum, dan pengguna
- Kiraan beban kerja kerja, kumpulan, dan Session
Nota: Anda hanya boleh mengakses halaman Analytics untuk akaun yang anda miliki atau uruskan.
from datetime import datetime, timedelta
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# Retrieve all jobs in the last 7 days
seven_days_ago = datetime.now() - timedelta(days=7)
jobs = service.jobs(limit=None, created_after=seven_days_ago)
# To retrieve all jobs in a Session or Batch, use the session_id filter
# jobs = service.jobs(session_id="<session id>")
total_usage = 0
for job in jobs:
total_usage += job.usage()
print(f"{len(jobs)} jobs were submitted in the last 7 days.")
print(f"Total usage was {total_usage} seconds")
Dapatkan semula keputusan kerja pada masa kemudian
Anda boleh menyimpan ID kerja dan mendapatkan semula keputusan kemudian, walaupun selepas menutup Session anda.
- Dapatkan semula keputusan dengan Qiskit
- Dapatkan semula keputusan pada IBM Quantum Platform
Jika anda menyimpan ID kerja semasa anda menghantar kerja, gunakan service.job(<job_id>) untuk mendapatkannya semula kemudian. Jika anda tidak mempunyai ID kerja, atau jika anda ingin mendapatkan semula beberapa kerja sekali gus (termasuk kerja daripada QPU yang telah dinyahaktifkan), gunakan service.jobs() sebaliknya, dengan penapis pilihan.
Lihat dokumentasi API QiskitRuntimeService.jobs untuk penapis yang tersedia.
Contoh ini menunjukkan cara mendapatkan semula keputusan terkini yang dijalankan pada Backend tertentu.
- Pergi ke halaman Workloads.
- Gunakan pilihan carian atau penapis untuk mencari kerja anda mengikut nama, tarikh, atau status.
- Klik pada kerja untuk melihat keputusan dan butirannya.
Dapatkan semula ciri Backend
- Dapatkan semula ciri Backend dengan Qiskit
- Dapatkan semula ciri Backend pada IBM Quantum Platform
Anda boleh menggunakan job.properties() untuk mendapatkan semula ciri Backend, termasuk kadar ralat, pada masa pelaksanaan kerja.
Contoh ini menunjukkan cara mendapatkan semula ciri Backend yang berlaku pada masa kerja dilaksanakan, termasuk masa / dan kadar ralat untuk Qubit tertentu (0).
service.jobs() juga mengembalikan kerja yang dijalankan daripada pakej qiskit-ibm-provider yang telah dinyahaktifkan. Kerja yang dihantar oleh pakej qiskit-ibmq-provider yang lebih lama (juga telah dinyahaktifkan) tidak lagi tersedia.
Anda boleh melihat data kalibrasi untuk Backend pada masa pelaksanaan kerja, serta pada masa penciptaan kerja.
- Pergi ke halaman Workloads
- Klik beban kerja untuk membuka halaman Details-nya
- Di bawah Quantum computer, klik View calibration history
- Gunakan menu lungsur untuk menukar daripada melihat data "At job execution start" kepada "At job creation"
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# Uncomment the next line to retrieve a specific job by ID
# job = service.job("<job_id>")
# Optionally retrieve multiple jobs with filters
# Use `limit` to retrieve a specific number of jobs. The default `limit` is 10.
my_backend = "<your-backend>"
recent_jobs = service.jobs(backend_name=my_backend, limit=10)
print(f"Retrieved {len(recent_jobs)} recent jobs from {my_backend}\n")
# Get results from all jobs
for job in recent_jobs:
print(f"Job ID: {job.job_id()}")
print(f"Status: {job.status()}")
# Retrieve results if the job is complete
if str(job.status()) == "DONE":
try:
results = job.result()
print(f"Results: {results}")
except Exception as e:
print(f"Error retrieving results: {e}")
else:
print("Results: Not available (job still running or failed)")
print()
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# Retrieve a specific job by ID
job = service.job("<job_id>")
print(f"Job ID: {job.job_id()}")
print(f"Backend: {job.backend}\n")
# Fetch backend properties at the time of job execution
properties = job.properties()
if properties:
print("Backend Properties at Job Execution Time:")
print("=" * 60)
# Get T1 (relaxation time) for qubit 0
t1 = properties.t1(0)
print(f"Qubit 0 T1 (relaxation time): {t1}")
# Get T2 (dephasing time) for qubit 0
t2 = properties.t2(0)
print(f"Qubit 0 T2 (dephasing time): {t2}")
# Get readout error for qubit 0
readout_error = properties.readout_error(0)
print(f"Qubit 0 readout error: {readout_error}")
# Get all properties for a specific qubit
print("All properties for qubit 0:")
qubit_props = properties.qubit_property(0)
for prop_name, prop_value in qubit_props.items():
print(f" {prop_name}: {prop_value}")
else:
print("No properties available for this job")
Batalkan kerja
Batalkan kerja yang sedang dalam giliran atau berjalan. Setelah kerja dibatalkan, ia tidak boleh disambung semula.
- Batal dengan Qiskit
- Batal pada IBM Quantum Platform
Gunakan kaedah job.cancel() untuk membatalkan kerja secara programatik.
- Daripada jadual beban kerja: Klik menu limpahan di hujung baris untuk beban kerja yang anda ingin batalkan, dan pilih Cancel.
- Daripada halaman butiran kerja: Klik pada beban kerja untuk membuka halaman butirannya, gunakan menu lungsur Actions di bahagian atas, dan pilih Cancel.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# Retrieve the job
job = service.job("<job_id>")
# Cancel the job
job.cancel()
print(f"Job {job.job_id()} has been canceled")
Langkah seterusnya
- Semak rujukan API
QiskitRuntimeServiceuntuk kaedah pengurusan kerja tambahan. - Terokai mod pelaksanaan untuk memahami jenis beban kerja kumpulan dan Session.