انتقل إلى المحتوى الرئيسي

أوضاع التنفيذ باستخدام REST API

يمكنك تشغيل أحمال عمل Qiskit الأولية باستخدام REST APIs في أحد ثلاثة أوضاع تنفيذ، بحسب احتياجاتك: وضع المهمة (job)، ووضع الجلسة (session)، ووضع الدُّفعة (batch). يشرح هذا الموضوع هذه الأوضاع.

ملاحظة

تستخدم هذه الوثائق وحدة Python المسماة requests لتوضيح كيفية التعامل مع Qiskit Runtime REST API. غير أن هذا العمل يمكن تنفيذه بأي لغة أو إطار عمل يدعم REST APIs. راجع توثيق مرجع API لمزيد من التفاصيل.

وضع المهمة مع REST API

في وضع المهمة، يُرسَل طلب أولي واحد من Estimator أو Sampler دون استخدام مدير سياق. اطّلع على أمثلة تشغيل دوائر كمية باستخدام Estimator وSampler.

وضع الجلسة مع REST API

الجلسة هي ميزة في Qiskit Runtime تتيح لك تشغيل أحمال عمل متعددة المهام وتكرارية على الحواسيب الكمية بكفاءة. يساعد استخدام الجلسات على تجنب التأخيرات الناجمة عن وضع كل مهمة في قائمة الانتظار بشكل منفصل، وهو أمر مفيد بشكل خاص للمهام التكرارية التي تستلزم تواصلاً متكرراً بين الموارد الكلاسيكية والكمية. يمكنك الاطلاع على مزيد من التفاصيل حول الجلسات في التوثيق.

ملاحظة

لا يمكن لمستخدمي الخطة المجانية (Open Plan) إرسال مهام الجلسة.

بدء جلسة

ابدأ بإنشاء جلسة والحصول على معرّف الجلسة.

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 عند الانتهاء من جميع المهام. سيُقلّل ذلك من وقت الانتظار للمستخدمين التاليين.

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

وضع الدُّفعة مع REST API

بدلاً من ذلك، يمكنك إرسال مهمة دُفعية عن طريق تحديد 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']

أمثلة على مهام مُرسَلة داخل جلسة

بمجرد إعداد الجلسة، يمكن إرسال مهمة أو أكثر من مهام Sampler أو Estimator إلى الجلسة نفسها عن طريق تحديد معرّف الجلسة.

ملاحظة

يمكن أن تكون <parameter values> في PUB إما معاملاً واحداً أو قائمة من المعاملات. كما تدعم البثّ broadcast الخاص بـ numpy.

مهام Estimator في وضع الجلسة

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 في وضع الجلسة

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

}

الخطوات التالية

توصيات