تهيئة حساب IBM Quantum Compute Service الخاص بك
قبل استخدام IBM Quantum® Compute Service، عليك تهيئة (إنشاء نسخة من) حسابك عبر تقديم (تحميل) بيانات الاعتماد. يمكنك إدخال هذه البيانات يدويًا في كل مرة تُهيّئ فيها IBM Quantum Compute Service، أو يمكنك حفظها لإعادة الاستخدام.
- إذا كنت تستخدم جهازًا عامًا أو بيئة غير موثوقة، اتّبع التعليمات الواردة في تهيئة الخدمة في بيئة غير موثوقة عوضًا عن ذلك.
- اتّبع هذه التعليمات إذا أردت الاتصال عبر REST API بدلًا من استخدام Qiskit.
- إذا لزم الأمر، استخدم هذه المعلومات لضبط جدار الحماية لديك وتمكين الوصول إلى نقاط نهاية IBM Quantum API.
قبل البدء
تأكّد من إتمام الخطوات التالية:
-
تأكّد من أنك عضو في حساب IBM Cloud. راجع إعداد حساب IBM Cloud للحصول على التعليمات.
-
أنشئ نسخة واحدة على الأقل أو تأكّد من امتلاك الصلاحية للوصول إليها. اتّبع هذه الخطوات للتحقق:
-
سجّل الدخول إلى IBM Quantum Platform.
-
تأكّد من تحديد الحساب والمنطقة الصحيحين في محوّل الحسابات في الترويسة.
-
إذا ظهرت لك نسخة واحدة أو أكثر، فقد انتهيت من هذه الخطوة. وإلا، أنشئ نسخة جديدة.
-
-
تأكّد من عملك في بيئة Python نشطة مع تثبيت Qiskit SDK و
qiskit-ibm-runtime. -
فعّل البيئة الافتراضية لـ Python وشغّل Python داخل هذه البيئة.
البحث عن بيانات اعتماد الوصول
-
ابحث عن مفتاح API الخاص بك (يُعرف أيضًا بـ رمز API). من لوحة التحكم، أنشئ مفتاح API الخاص بك، ثم انسخه إلى مكان آمن لاستخدامه في المصادقة. لن يكون الرمز مرئيًا مجددًا. لاحظ أنه يمكنك استخدام مفتاح API واحد للاتصال بأي منطقة.
-
اختياري: ابحث عن المثيل الذي تريد استخدامه من صفحة المثيلات. مرّر المؤشر فوق CRN الخاص به، وانقر على الأيقونة لنسخه، ثم احفظه في مكان آمن لاستخدامه للتعرف على المثيل.
ربط Qiskit بنسخة IBM Quantum Compute Service الخاصة بك
هذه التعليمات مصممة لـ qiskit_ibm_runtime الإصدار v0.42 أو الأحدث. بعض الميزات غير متاحة في الإصدارات السابقة من qiskit_ibm_runtime. في هذه الحالات، يجب دائمًا تقديم قيمة لكل من channel وtoken وinstance، إما بصورة صريحة أو عبر حساب محفوظ.
فيما يلي الكود الأساسي لربط Qiskit بنسخة Quantum Compute. غير أن ثمة عدة طرق مختلفة لتخصيص خيارات QiskitRuntimeService بحسب احتياجاتك، وهي موضحة في الأقسام التالية.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(channel=<channel>,
# For `token`, use the 44-character API_KEY you created
# and saved from the IBM Quantum Platform dashboard
token=<your-API_KEY>,
instance=<instance_CRN>)
القناة الافتراضية هي ibm_quantum_platform. وبما أن هذه القناة هي المناسبة في جميع الحالات تقريبًا، فهي غير مدرجة في الأمثلة.
مسار البدء السريع: تحديد بيانات الاعتماد صراحةً
أسرع طريقة لتشغيل مثيل من QiskitRuntimeService هي طريقة الإنشاء المباشر: تقديم رمز API (المفتاح) وCRN (معرّف المثيل) صراحةً في كل مرة تحتاج فيها إلى تهيئة IBM Quantum Compute Service. راجع البحث عن بيانات اعتماد الوصول إذا لزم الأمر.
from qiskit_ibm_runtime import QiskitRuntimeService
# For `token`, use the 44-character API_KEY you created
# and saved from the IBM Quantum Platform dashboard
service = QiskitRuntimeService(token=<cloud_api_key>,
instance=<instance_CRN>)
هذا المسار موثوق لكنه قد يكون مرهقًا إذا احتجت إلى تحميل نفس التفاصيل مرارًا. لتجنّب إدخال بيانات اعتمادك عدة مرات، إذا كنت تعمل في بيئة Python موثوقة (كجهازك الشخصي أو محطة العمل)، يمكنك استخدام بيانات الاعتماد المحفوظة كما هو موضح في القسم التالي.
رغم أن معامل الإدخال instance اختياري، يُنصح دائمًا بتوفير هذه المعلومات، إلا إذا أردت استخدام خدمة واحدة للعمل مع عدة نسخ. في هذه الحالة، راجع قسم الاختيار التلقائي للنسخة.
مسار البدء السريع: تحديد بيانات اعتماد محفوظة
إذا كنت قد حفظت بيانات اعتمادك مسبقًا، استخدم الكود التالي لتطبيق بيانات الاعتماد الافتراضية. للحصول على تعليمات حفظ بيانات الاعتماد، راجع حفظ بيانات اعتماد الوصول.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService()
...
إذا قمت بتسمية مجموعة واحدة أو أكثر من بيانات الاعتماد - مثلًا للوصول المفتوح والمميز - استخدم الكود التالي لاستخدام مجموعة بيانات اعتماد مسمّاة.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...
اعتبارات عند تحميل بيانات الاعتماد المحفوظة
-
إذا هيّأت الخدمة بـ
tokenوnameمعًا، يُتجاهلtokenويتم تحميل التفاصيل المحفوظة من حسابname.في المثال التالي، تقوم الخدمة بتحميل التفاصيل من
account_Aولا تستخدمtoken_B:from qiskit_ibm_runtime import QiskitRuntimeServiceservice = QiskitRuntimeService(token="token_B", name="account_A") -
إذا قدّمت
nameوinstanceعند تهيئة خدمة، تحاول الخدمة تحميل حسابnameو الاتصال بـinstanceالمحددة. وفي حال وجود أي تعارض، يُصدَر تحذير.في المثال التالي، تحاول الخدمة تحميل بيانات اعتماد
account_Aواستخدام المثيلCRN_B- حتى لو كان هناك مثيل مختلف محدد فيaccount_A:from qiskit_ibm_runtime import QiskitRuntimeServiceservice = QiskitRuntimeService(instance="CRN_B", name="account_A") -
تحاول الخدمة تحميل الحساب الافتراضي المحفوظ فقط إذا لم تقدّم
tokenأوnameعند تهيئة الخدمة. ولكن إذا تم تقديمinstanceصراحةً، تحاول الخدمة الاتصال بذلك المثيل باستخدام بيانات الاعتماد الافتراضية. إذا وجد أي تعارض، يُرفع تحذير.في المثال التالي، تحاول الخدمة تحميل بيانات الاعتماد الافتراضية واستخدام المثيل
CRN_B- حتى لو كان هناك مثيل مختلف محدد في الحساب الافتراضي:from qiskit_ibm_runtime import QiskitRuntimeServiceservice = QiskitRuntimeService(instance="CRN_B") -
إذا حفظت مجموعات متعددة من بيانات الاعتماد ولم تحدد واحدة منها عند تهيئة الخدمة وليس هناك حساب افتراضي محفوظ، تُستخدم المجموعة التي يأتي اسمها أخيرًا أبجديًا.
في المثال التالي، حفظ المستخدم حسابات باسم "my_premium" و"my_open" دون وضع علامة على أيٍّ منهما كحساب افتراضي. ثم هيّأ الخدمة باستخدام الكود التالي. في هذه الحالة، تُستخدم بيانات اعتماد "my_premium":
from qiskit_ibm_runtime import QiskitRuntimeServiceservice = QiskitRuntimeService() -
إذا كنت تحصل باستمرار على خطأ "401 Unauthorized"، فقد تحاول استخدام bearer token بدلًا من مفتاح API.
الاختيار التلقائي للنسخة
إذا قدّمت رمزًا (token) لكن لم تقدّم CRN للمثيل عند إنشاء الخدمة، تقوم QiskitRuntimeService بالمصادقة على الحساب المحدد بالرمز وتستخدم الاختيار التلقائي للمثيل لاختيار المثيل الأنسب للمهمة المطلوبة. إذا كان لديك عدة مثيلات متاحة داخل حسابك، تختار الخدمة تلقائيًا من بين المثيلات المتاحة، بناءً على المورد المطلوب وخيارات QiskitRuntimeService التالية (إذا تم ضبطها): plans_preference وregion وtags.
-
plans_preference: أنواع خطط المثيلات التي تُعطى الأولوية. على سبيل المثال، إذا مُرر [open]، تكون مثيلات Open Plan فقط متاحة. القيم المقبولة هيopenوpremiumوpay-as-you-goوflexوon-prem. إذا لم يُحدَّدplans_preference، تُعطى الخطط المجانية الأولوية على الخطط المدفوعة. -
region: منطقة المثيل. القيم المقبولة هيus-eastوeu-de. -
tags: وسوم المثيل. تقبل قائمة من سلاسل أسماء الوسوم.
يمكنك إعداد بيانات اعتمادك المحفوظة لاختيار نسخة تلقائيًا.
يتم البحث عن المثيل واستخدامه بهذا الترتيب:
-
إذا كان حسابك لا يملك صلاحية الوصول إلا لنسخة واحدة، يتم اختيارها تلقائيًا.
-
إذا كانت بيانات الاعتماد المحفوظة مستخدمة وتم تحديد مثيل مع بيانات الاعتماد، يُستخدم ذلك المثيل. راجع اعتبارات عند تحميل بيانات الاعتماد المحفوظة.
-
إذا كان حسابك يملك عدة نسخ يمكنها الوصول إلى QPU المطلوبة، يستخدم النظام تفضيلات خطتك المحددة لاختيار خطة ونسخة. بالنسبة لـ
qiskit-ibm-runtimeالإصدار v0.42 وما بعده، تُعطى الأولوية للخطط المجانية افتراضيًا. -
إذا كان حسابك يملك صلاحية الوصول إلى عدة مثيلات لكن واحدًا فقط يستطيع الوصول إلى QPU المطلوبة، يُختار المثيل الذي يملك الوصول. إذا لم يكن هذا المثيل مرتبطًا بخطة مجانية، ستُحتسب تكلفة.
أمثلة
في هذا المثال، تبحث الخدمة في جميع المثيلات المتاحة للحساب للعثور على تلك التي يمكنها الوصول إلى الخادم الخلفي المحدد:
service = QiskitRuntimeService(token=<your-API_KEY>)
في هذا المثال، تبحث الخدمة في جميع المثيلات المتاحة للحساب في منطقة الاتحاد الأوروبي للعثور على تلك التي يمكنها الوصول إلى الخادم الخلفي المحدد:
service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")
في هذا المثال، تبحث الخدمة في جميع المثيلات المتاحة للحساب والموسومة بـ services للعثور على تلك التي يمكنها الوصول إلى الخادم الخلفي المحدد:
service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])
في هذا المثال، تبحث الخدمة في جميع مثيلات الخطة المميزة والمفتوحة المتاحة للحساب للعثور على تلك التي يمكنها الوصول إلى الخادم الخلفي المحدد. إذا كان الخادم الخلفي متاحًا في كل من مثيل خطة مميزة ومثيل خطة مفتوحة، تُعطى الأولوية لمثيل الخطة المميزة لأن premium محددة أولًا في plans_preference.
service = QiskitRuntimeService(token=<your-API_KEY>,
plans_preference=['premium', 'open'])
تحديد المثيل الذي تم اختياره
يُعاد المثيل المختار على شكل تحذير. بالإضافة إلى ذلك، يمكنك تشغيل service.active_instance() لتحديد المثيل النشط.
الاختبار المحلي مع qiskit-ibm-runtime
يمكن تهيئة فئة QiskitRuntimeService باستخدام channel=local لإجراء محاكاة محلية. في هذه الحالة، لا تكون المصادقة مطلوبة ولا حاجة لتقديم قيم لـ token أو instance. لذلك، لا يُنصح بحفظ حساب محلي. بدلًا من ذلك، يمكنك استخدام الإنشاء المباشر:
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize for local testing
service = QiskitRuntimeService(channel="local")
الخطوات التالية
- إنشاء المثيلات وإدارتها.
- تهيئة الخدمة في بيئة غير موثوقة.
- الإعداد لاستخدام IBM Quantum Platform مع REST API.
- اتّبع الخطوات في دليل تشغيل أول دائرة لك على العتاد لكتابة برنامج كمّي وتشغيله.