דלג לתוכן הראשי

מצבי הרצה באמצעות REST API

ניתן להריץ את עומסי העבודה של Qiskit primitives באמצעות REST APIs באחד משלושה מצבי הרצה, בהתאם לצרכים שלך: job, session ו-batch. נושא זה מסביר את המצבים האלה.

הערה

תיעוד זה משתמש במודול Python‏ requests כדי להדגים את Qiskit Runtime REST API. עם זאת, ניתן לבצע תהליך עבודה זה בכל שפה או מסגרת התומכת בעבודה עם REST APIs. עיין בתיעוד ה-API Reference לפרטים נוספים.

מצב Job עם REST API

במצב job, מתבצעת בקשה בודדת של Estimator או Sampler ללא מנהל הקשר. ראה כיצד להריץ Circuit קוונטי באמצעות Estimator ו-Sampler לדוגמאות.

מצב Session עם REST API

session הוא תכונה של Qiskit Runtime המאפשרת להריץ בצורה יעילה עומסי עבודה איטרטיביים רב-משימתיים במחשבים קוונטיים. שימוש ב-sessions מסייע למנוע עיכובים הנגרמים מהמתנה בתור לכל משימה בנפרד, דבר שיכול להיות שימושי במיוחד למשימות איטרטיביות הדורשות תקשורת תכופה בין משאבים קלאסיים לקוונטיים. פרטים נוספים על Sessions ניתן למצוא בתיעוד.

הערה

משתמשי Open Plan אינם יכולים לשלוח משימות session.

פתיחת session

התחל ביצירת session וקבלת מזהה session.

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 כאשר כל המשימות הסתיימו. פעולה זו תקצר את זמן ההמתנה עבור משתמשים הבאים.

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 עם REST API

לחלופין, ניתן לשלוח משימת batch על ידי ציון ה-mode ב-payload של הבקשה. מצב batch יכול לסייע בקיצור זמן העיבוד אם ניתן לספק את כל המשימות מראש. למד על מצב batch במדריך מבוא למצבי הרצה.

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

דוגמאות למשימות שנשלחו ב-session

לאחר הגדרת session, ניתן לשלוח משימת Sampler או Estimator אחת או יותר לאותו session על ידי ציון מזהה ה-session.

הערה

ה-<parameter values> ב-PUB יכול להיות פרמטר בודד או רשימה של פרמטרים. הוא תומך גם ב-broadcasting של numpy.

משימות Estimator במצב 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)
},
}

}

משימות Sampler במצב 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)
},
}

}

השלבים הבאים

המלצות