Langkau ke kandungan utama

Jalankan beban kerja Qiskit Serverless pertama anda dari jauh

Versi pakej

Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau yang lebih baharu.

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

Bahagian ini meneroka cara menggunakan qiskit-ibm-catalog untuk menyenaraikan program yang tersedia dalam Qiskit Serverless, menghantar input ke program ini, menjalankannya dari jauh, menyemak status, dan mendapatkan semula keputusan dan log.

Pastikan anda telah mengesahkan ke Qiskit Serverless menggunakan kunci API anda (lihat Sebarkan ke IBM Quantum Platform untuk arahan).

Senaraikan program yang tersedia​

Anda boleh menggunakan QiskitServerless.list() untuk mendapatkan senarai program yang tersedia untuk dijalankan dengan Qiskit Serverless. Ini termasuk transpile_remote_serverless yang dimuat naik sebelumnya.

# 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 dimuat naik dan hantar input​

Pertama, sediakan input anda. Program anda mempunyai tiga input: circuits, backend, dan optimization_level. Anda boleh menggunakan random_circuit untuk mencipta 30 Circuit rawak:

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 of the previous code cell

Seterusnya, 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)

Tetapkan tahap pengoptimuman anda:

optimization_level = 3

Pilih program anda dengan serverless.load('PROGRAM_NAME'):

transpile_remote_serverless = serverless.load("transpile_remote_serverless")

Seterusnya, hantar input anda dan jalankannya dalam gaya 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'

Semak status kerja​

Dengan job_id Qiskit Serverless anda, anda boleh menyemak status kerja yang sedang berjalan. Ini termasuk status berikut:

  • QUEUED: Program jauh berada dalam barisan Qiskit Serverless. Keutamaan barisan pada masa ini berdasarkan sejauh mana anda telah menggunakan Qiskit Serverless
  • INITIALIZING: Program jauh sedang dimulakan; ini termasuk menyediakan persekitaran jauh dan memasang kebergantungan
  • RUNNING: Program sedang berjalan. Pada peringkat ini, jika anda mempunyai output print() dalam program anda, anda boleh mendapatkan semula log menggunakan job.logs()
  • DONE: Program selesai, dan anda boleh mendapatkan semula data yang disimpan dalam save_result() dengan job.results()

Anda juga boleh menetapkan status kerja yang lebih terperinci dalam Urus sumber pengkomputeran 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
petua

Pada masa ini, jadual beban kerja IBM Quantum hanya mencerminkan beban kerja Qiskit Runtime. Gunakan job.status() untuk melihat status semasa beban kerja Qiskit Serverless anda.

Anda telah berjaya menjalankan program Qiskit Serverless pertama anda!

Dapatkan semula log dan keputusan​

Seperti yang disebutkan sebelumnya, sebaik sahaja program berada dalam status RUNNING, anda boleh menggunakan job.logs() untuk mendapatkan log yang dibuat daripada output print():

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

Pada bila-bila masa, anda juga boleh membatalkan kerja:

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

Setelah program berada dalam status DONE, anda boleh menggunakan job.results() untuk mendapatkan keputusan yang disimpan dalam 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>]}

Senaraikan kerja yang pernah dijalankan dengan Qiskit Serverless​

Anda boleh menggunakan jobs() untuk menyenaraikan semua kerja yang dihantar 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 seterusnya​

Cadangan
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 Mac 2026