Lewati ke konten utama

Jalankan workload Qiskit Serverless pertamamu dari jarak jauh

Versi paket

Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami menyarankan menggunakan versi ini atau yang lebih baru.

qiskit[all]~=1.4.0
qiskit-ibm-runtime~=0.36.1
qiskit-ibm-catalog~=0.4

Bagian ini membahas cara menggunakan qiskit-ibm-catalog untuk melihat daftar program yang tersedia di Qiskit Serverless, meneruskan input ke program-program tersebut, menjalankannya dari jarak jauh, memeriksa statusnya, dan mengambil hasil serta log.

Pastikan kamu sudah melakukan autentikasi ke Qiskit Serverless menggunakan API key milikmu (lihat Deploy ke IBM Quantum Platform untuk instruksinya).

Daftar program yang tersedia​

Kamu bisa menggunakan QiskitServerless.list() untuk mengambil daftar program yang tersedia untuk dijalankan dengan Qiskit Serverless. Ini termasuk transpile_remote_serverless yang sebelumnya sudah diunggah.

# Added by doQumentation β€” required packages for this notebook
!pip install -q qiskit qiskit-ibm-catalog qiskit-ibm-runtime
from qiskit_ibm_catalog import QiskitServerless

serverless = QiskitServerless()
next(
program
for program in serverless.list()
if program.title == "transpile_remote_serverless"
)
QiskitFunction(transpile_remote_serverless)

Jalankan program yang sudah diunggah dan teruskan input​

Pertama, siapkan inputmu. Programmu memiliki tiga input: circuits, backend, dan optimization_level. Kamu bisa menggunakan random_circuit untuk membuat 30 Circuit acak:

from qiskit.circuit.random import random_circuit

qc_random = [(random_circuit(4, 4, measure=True, seed=i)) for i in range(10)]
qc_random[0].draw(output="mpl", idle_wires=False)

Output dari sel kode sebelumnya

Selanjutnya, gunakan QiskitRuntimeService dan least_busy untuk memilih backend:

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
print(backend.name)

Atur level optimisasimu:

optimization_level = 3

Pilih programmu dengan serverless.load('PROGRAM_NAME'):

transpile_remote_serverless = serverless.load("transpile_remote_serverless")

Selanjutnya, teruskan inputmu dan jalankan secara pythonic seperti berikut:

job = transpile_remote_serverless.run(
circuits=qc_random,
backend=backend.name,
optimization_level=optimization_level,
)
job.job_id
'118256c5-bbb0-4ea8-9e9f-51aac2220aef'

Periksa status job​

Dengan job_id Qiskit Serverless milikmu, kamu bisa memeriksa status job yang sedang berjalan. Ini mencakup status-status berikut:

  • QUEUED: Program jarak jauh sedang berada dalam antrean Qiskit Serverless. Prioritas antrean saat ini didasarkan pada seberapa banyak kamu telah menggunakan Qiskit Serverless
  • INITIALIZING: Program jarak jauh sedang dimulai; ini termasuk menyiapkan lingkungan jarak jauh dan menginstal dependensi
  • RUNNING: Program sedang berjalan. Pada tahap ini, jika kamu memiliki output print() dalam programmu, kamu bisa mengambil log menggunakan job.logs()
  • DONE: Program sudah selesai, dan kamu bisa mengambil data yang tersimpan di save_result() dengan job.results()

Kamu juga bisa mengatur status job yang lebih detail di Kelola sumber daya komputasi dan data Qiskit Serverless.

job.status()
'QUEUED'
# This cell is hidden from users, it checks the job status
assert _ in ["QUEUED", "INITIALIZING", "RUNNING", "DONE"] # noqa: F821
tips

Saat ini, tabel workload IBM Quantum hanya menampilkan workload Qiskit Runtime. Gunakan job.status() untuk melihat status terkini workload Qiskit Serverless-mu.

Kamu telah berhasil menjalankan program Qiskit Serverless pertamamu!

Ambil log dan hasil​

Seperti yang disebutkan sebelumnya, setelah program berada dalam status RUNNING, kamu bisa menggunakan job.logs() untuk mengambil log yang dibuat dari output print():

logs = job.logs()
print(logs)
No logs yet.

Kapan saja, kamu juga bisa membatalkan job:

job.stop()
'Job has been stopped.'

Setelah program berada dalam status DONE, kamu bisa menggunakan job.results() untuk mengambil hasil yang tersimpan di save_result():

# We can't get results from a cancelled job, so we'll fetch a completed one instead
completed_job = next(
job for job in serverless.jobs() if job.status() == "DONE"
)
completed_job.result()
{'transpiled_circuits': [<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93eca64810>,
<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93ec5e5310>,
<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93ec5d5310>,
<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93ec58b490>,
<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93ec57d310>,
<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93ec535950>,
<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93ec523c90>,
<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93ec60a990>,
<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93ec5527d0>,
<qiskit.circuit.quantumcircuit.QuantumCircuit at 0x7f93ec4152d0>]}

Daftar job yang sebelumnya dijalankan dengan Qiskit Serverless​

Kamu bisa menggunakan jobs() untuk melihat daftar semua job yang dikirimkan ke Qiskit Serverless:

old_jobs = serverless.jobs()
old_jobs
[<Job | 118256c5-bbb0-4ea8-9e9f-51aac2220aef>,
<Job | e9a36469-7d6b-4f00-bf91-78709ebdbbff>,
<Job | 4efd601b-8f61-4c8e-b14a-0b8a9c649dc0>,
<Job | 87cd22c7-8eb9-4606-bdb4-befe946e9e9b>,
<Job | be9a6dfd-0830-4250-aa60-acdd05bb8818>,
<Job | 479513dd-6a76-4c3e-ba49-bb21351b9a05>,
<Job | f9c20c31-be46-41b3-97ac-99f7be61f89e>,
<Job | 37fa2489-4449-4bfb-974e-9d9a9ec3cc21>,
<Job | b754c4e8-6817-48db-9bb9-74c151d6349a>,
<Job | 78bc6744-b417-48cb-8e01-59bb63bcc2be>]

Langkah selanjutnya​

Rekomendasi
Source: IBM Quantum docs β€” updated 27 Apr 2026
English version on doQumentation β€” updated 7 Mei 2026
This translation based on the English version of 11 Mar 2026