Lewati ke konten utama

Mode eksekusi menggunakan REST API

Kamu bisa menjalankan workload Qiskit primitive menggunakan REST API dalam salah satu dari tiga mode eksekusi, tergantung kebutuhanmu: job, session, dan batch. Topik ini menjelaskan mode-mode tersebut.

catatan

Dokumentasi ini menggunakan modul Python requests untuk mendemonstrasikan REST API Qiskit Runtime. Namun, alur kerja ini bisa dijalankan menggunakan bahasa atau framework apa pun yang mendukung REST API. Lihat dokumentasi referensi API untuk detailnya.

Mode job dengan REST API​

Dalam mode job, satu permintaan primitive dari Estimator atau Sampler dibuat tanpa context manager. Lihat cara menjalankan Circuit kuantum menggunakan Estimator dan Sampler untuk beberapa contoh.

Mode session dengan REST API​

Session adalah fitur Qiskit Runtime yang memungkinkan kamu menjalankan workload iteratif multi-job secara efisien di komputer kuantum. Menggunakan session membantu menghindari penundaan yang disebabkan oleh antrian setiap job secara terpisah, yang bisa sangat berguna untuk tugas iteratif yang memerlukan komunikasi sering antara sumber daya klasik dan kuantum. Detail lebih lanjut tentang Session bisa ditemukan di dokumentasi.

catatan

Pengguna Open Plan tidak bisa mengirim job session.

Mulai session​

Mulai dengan membuat session dan mendapatkan session ID.

import json
import requests

sessionsUrl = "https://quantum.cloud.ibm.com/api/v1/sessions"
auth_id = "Bearer <YOUR_BEARER_TOKEN>"
backend = "<BACKEND_NAME>"
crn = "<SERVICE-CRN>"

headersList = {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": auth_id,
"Service-CRN": crn
}

payload = json.dumps({
"backend": backend,
"mode": 'dedicated',
})

response = requests.request("POST", sessionsUrl, data=payload, headers=headersList)

sessionId = response.json()['id']

print(response.json())

Output

{'id': 'crw9s7cdbt40008jxesg'}

Tutup session​

Sebaiknya tutup Session ketika semua job sudah selesai. Ini akan mengurangi waktu tunggu bagi pengguna berikutnya.

closureURL="https://quantum.cloud.ibm.com/api/v1/sessions/"+sessionId+"/close"

headersList = {
"Accept": "application/json",
"Authorization": auth_id,
"Service-CRN": crn
}

closure_response = requests.request(
"DELETE",
closureURL,
headers=headersList
)

print("Session closure response ok?:",closure_response.ok,closure_response.text)

Output

Session closure response ok?: True

Mode batch dengan REST API​

Sebagai alternatif, kamu bisa mengirim job batch dengan menentukan mode dalam payload permintaan. Mode batch bisa membantu mempersingkat waktu pemrosesan jika semua job bisa disediakan di awal. Pelajari mode batch di panduan pengenalan mode eksekusi.

import json
import requests

sessionsUrl = "https://quantum.cloud.ibm.com/api/v1/sessions"

headersList = {
"Accept": "application/json",
"Authorization": auth_id,
"Service-CRN": crn,
'Content-Type': 'application/json'
}

payload = json.dumps({
"backend": backend,
"instance": "hub1/group1/project1",
"mode": "batch"
})

response = requests.request("POST", sessionsUrl, data=payload, headers=headersList)

sessionId = response.json()['id']

Contoh job yang dikirim dalam session​

Setelah session disiapkan, satu atau lebih job Sampler atau Estimator bisa dikirim ke session yang sama dengan menentukan session ID.

catatan

<nilai parameter> dalam sebuah PUB bisa berupa parameter tunggal atau daftar parameter. Ini juga mendukung broadcasting numpy.

Job Estimator dalam mode session​

job_input = {
'program_id': 'estimator',
"backend": backend,
"session_id": sessionId, # This specifies the previously created Session
"params": {
"pubs": [[resulting_qasm, [obs1, obs2, obs3, obs4]]], #primitive unified blocs (PUBs) containing one circuit each.
"options":{
"transpilation":{"optimization_level": 1},
"twirling": {"enable_gates": True,"enable_measure": True},
# "dynamical_decoupling": {"enable": True, "sequence_type": "XpXm"}, #(optional)
},
}

}

Job Sampler dalam mode session​

job_input = {
'program_id': 'sampler',
"backend": backend,
"session_id": sessionId, # This specifies the previously created Session
"params": {
"pubs": [[resulting_qasm]], #primitive unified blocs (PUBs) containing one circuit each
"options":{
"transpilation":{"optimization_level": 1},
"twirling": {"enable_gates": True,"enable_measure": True},
# "dynamical_decoupling": {"enable": True, "sequence_type": "XpXm"}, #(optional)
},
}

}

Langkah berikutnya​

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