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)
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 ServerlessINITIALIZING: Program jarak jauh sedang dimulai; ini termasuk menyiapkan lingkungan jarak jauh dan menginstal dependensiRUNNING: Program sedang berjalan. Pada tahap ini, jika kamu memiliki outputprint()dalam programmu, kamu bisa mengambil log menggunakanjob.logs()DONE: Program sudah selesai, dan kamu bisa mengambil data yang tersimpan disave_result()denganjob.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
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β
- Jelajahi alat manajemen komputasi dan data yang tersedia untuk programmu, termasuk paralelisasi.