انتقل إلى المحتوى الرئيسي
هذا المشروع في مرحلة تجريبية. وجدت خطأ؟ افتح مشكلة على GitHub. لديك سؤال أو فكرة؟ اسأل في Discussions — نحب سماع ملاحظاتك!
كيف جودة الترجمة في هذه الصفحة؟

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

Package versions

تم تطوير الكود في هذه الصفحة باستخدام المتطلبات التالية. نوصي باستخدام هذه الإصدارات أو إصدارات أحدث.

qiskit[all]~=2.3.0

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

ملاحظة

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

Job mode مع REST API​

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

Session mode مع REST API​

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

ملاحظة

لا يمكن لمستخدمي الخطة المجانية (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

Batch mode مع REST API​

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

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

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

ملاحظة

يمكن أن تكون <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 باستخدام REST API.
  • راجع أمثلة مفصّلة على أوليّات Estimator باستخدام REST API.
  • تدرّب على الأوليّات من خلال درس دالة التكلفة في IBM Quantum® Learning.
  • تعلّم كيفية التحويل البرمجي محلياً في قسم Transpile.