דלג לתוכן הראשי
פרויקט זה בשלב בטא. מצאת באג? פתח issue ב-GitHub. יש שאלה או רעיון? שאל ב-Discussions — נשמח לשמוע ממך!
מה איכות התרגום בדף זה?

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

Package versions

הקוד בעמוד זה פותח באמצעות הדרישות הבאות. אנחנו ממליצים להשתמש בגרסאות אלה או חדשות יותר.

qiskit[all]~=2.3.0

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

הערה

תיעוד זה משתמש במודול requests של Python כדי להדגים את IBM Quantum Compute Service REST API. עם זאת, ניתן לבצע תהליך עבודה זה בכל שפה או מסגרת התומכת בעבודה עם REST APIs. עיין בתיעוד הפניית API לפרטים.

Job mode עם REST API​

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

Session mode עם REST API​

session הוא תכונה המאפשרת להריץ בצורה יעילה עומסי עבודה איטרטיביים הכוללים משימות (jobs) מרובות במחשבים קוונטיים. שימוש ב-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 mode עם REST API​

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

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

}

השלבים הבאים​

המלצות
  • ראה בדוגמאות מפורטות של Sampler primitives באמצעות REST API.
  • ראה בדוגמאות מפורטות של Estimator primitives באמצעות REST API.
  • תרגל עם primitives דרך שיעור פונקציית העלות ב-IBM Quantum® Learning.
  • למד כיצד לבצע Transpile מקומי בחלק Transpile.