ข้ามไปยังเนื้อหาหลัก

Execution modes โดยใช้ REST API

สามารถรัน Qiskit primitive workloads โดยใช้ REST APIs ใน execution modes สามแบบ ขึ้นอยู่กับความต้องการของคุณ: job, session และ batch หัวข้อนี้อธิบายโหมดเหล่านี้

หมายเหตุ

เอกสารนี้ใช้โมดูล Python requests เพื่อแสดง Qiskit Runtime REST API อย่างไรก็ตาม เวิร์กโฟลว์นี้สามารถรันได้โดยใช้ภาษาหรือ framework ใดก็ตามที่รองรับการทำงานกับ REST APIs ดูรายละเอียดได้ที่เอกสาร API reference

Job mode โดยใช้ REST API

ใน job mode การร้องขอ primitive เดียวของ Estimator หรือ Sampler ทำโดยไม่มี context manager ดูวิธีรัน quantum circuit โดยใช้ Estimator และ Sampler สำหรับตัวอย่างบางส่วน

Session mode โดยใช้ REST API

Session คือฟีเจอร์ของ Qiskit Runtime ที่ให้คุณรัน multi-job iterative workloads บน quantum computers ได้อย่างมีประสิทธิภาพ การใช้ sessions ช่วยหลีกเลี่ยงความล่าช้าที่เกิดจากการจัดคิว job แต่ละตัวแยกกัน ซึ่งมีประโยชน์มากสำหรับงานแบบ iterative ที่ต้องการการสื่อสารบ่อยครั้งระหว่างทรัพยากร classical และ quantum ดูรายละเอียดเพิ่มเติมเกี่ยวกับ Sessions ได้ในเอกสาร

หมายเหตุ

ผู้ใช้ Open Plan ไม่สามารถส่ง session jobs

เริ่ม session

เริ่มต้นด้วยการสร้าง session และรับ 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'}

ปิด session

เป็นแนวปฏิบัติที่ดีในการปิด Session เมื่อ job ทั้งหมดเสร็จสมบูรณ์ สิ่งนี้จะช่วยลดเวลารอสำหรับผู้ใช้รายถัดไป

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

Batch mode โดยใช้ REST API

หรือจะส่ง batch job ได้โดยระบุ mode ใน request payload Batch mode ช่วยลดเวลาการประมวลผลได้หากสามารถระบุ job ทั้งหมดได้ตั้งแต่เริ่มต้น เรียนรู้เกี่ยวกับ batch mode ในคู่มือบทนำสู่ execution modes

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']

ตัวอย่าง job ที่ส่งใน session

เมื่อตั้งค่า session แล้ว สามารถส่ง Sampler หรือ Estimator job หนึ่งตัวหรือมากกว่าไปยัง session เดียวกันได้โดยระบุ session ID

หมายเหตุ

<parameter values> ใน PUB สามารถเป็น parameter เดียวหรือรายการของ parameters ก็ได้ และรองรับ numpy broadcasting ด้วย

Estimator jobs ใน session mode

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

}

Sampler jobs ใน session mode

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

}

ขั้นตอนถัดไป

คำแนะนำ
Source: IBM Quantum docs — updated 27 เม.ย. 2569
English version on doQumentation — updated 7 พ.ค. 2569
This translation based on the English version of 11 มี.ค. 2569