تهيئة حساب خدمة Qiskit Runtime
قبل استخدام Qiskit Runtime، عليك تهيئة (إنشاء نسخة من) حسابك عبر تقديم (تحميل) بيانات الاعتماد. يمكنك إدخال هذه البيانات يدويًا في كل مرة تُهيّئ فيها خدمة Qiskit Runtime، أو يمكنك حفظها لإعادة الاستخدام.
- إذا كنت تستخدم جهازًا عامًا أو بيئة غير موثوقة، اتّبع التعليمات الواردة في تهيئة الخدمة في بيئة غير موثوقة عوضًا عن ذلك.
- اتّبع هذه التعليمات إذا أردت الاتصال عبر REST API بدلًا من استخدام Qiskit.
- إذا لزم الأمر، استخدم هذه المعلومات لضبط جدار الحماية لديك وتمكين الوصول إلى نقاط نهاية IBM Quantum API.
قبل البدء
تأكّد من إتمام الخطوات التالية:
- تأكّد من أنك عضو في حساب IBM Cloud. راجع إعداد حساب IBM Cloud للحصول على التعليمات.
- أنشئ نسخة واحدة على الأقل أو تأكّد من امتلاك الصلاحية للوصول إليها. اتّبع هذه الخطوات للتحقق:
- سجّل الدخول إلى IBM Quantum Platform.
- تأكّد من تحديد الحساب والمنطقة الصحيحين في محوّل الحسابات في الترويسة.
- إذا ظهرت لك نسخة واحدة أو أكثر، فقد انتهيت من هذه الخطوة. وإلا، أنشئ نسخة جديدة.
- تأكّد من عملك في بيئة Python نشطة مع تثبيت Qiskit SDK وQiskit Runtime.
- فعّل البيئة الافتراضية لـ Python وشغّل Python داخل هذه البيئة.
البحث عن بيانات اعتماد الوصول
- ابحث عن مفتاح API الخاص بك (يُعرف أيضًا بـ رمز API). من لوحة التحكم، أنشئ مفتاح API الخاص بك، ثم انسخه إلى مكان آمن لاستخدامه في المصادقة. لن يكون الرمز مرئيًا مجددًا. لاحظ أنه يمكنك استخدام مفتاح API واحد للاتصال بأي منطقة.
- اختياري: ابحث عن النسخة التي تريد استخدامها من صفحة النسخ. مرّر المؤشر فوق CRN الخاص بها، وانقر على الأيقونة لنسخه، ثم احفظه في مكان آمن لاستخدامه للتعرف على النسخة.
ربط Qiskit بنسخة خدمة Qiskit Runtime
هذه التعليمات مصممة لـ qiskit_ibm_runtime الإصدار v0.42 أو الأحدث. بعض الميزات غير متاحة في الإصدارات السابقة من qiskit_ibm_runtime. في هذه الحالات، يجب دائمًا تقديم قيمة لكل من channel وtoken وinstance، إما بصورة صريحة أو عبر حساب محفوظ.
فيما يلي الكود الأساسي لربط Qiskit بنسخة خدمة Qiskit Runtime. غير أن ثمة عدة طرق مختلفة لتخصيص خيارات QiskitRuntimeService بحسب احتياجاتك، وهي موضحة في الأقسام التالية.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(channel=<channel>,
token=<your-API_KEY>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)
القناة الافتراضية هي ibm_quantum_platform. وبما أن هذه القناة هي الأنسب في معظم الأحيان، فهي غير مدرجة في الأمثلة.
مسار البدء السريع: تحديد بيانات الاعتماد صراحةً
أسرع طريقة لتشغيل نسخة من QiskitRuntimeService هي طريقة الإنشاء المباشر: تقديم رمز API (المفتاح) وCRN (معرّف النسخة) صراحةً في كل مرة تحتاج فيها إلى تهيئة خدمة Qiskit Runtime. راجع البحث عن بيانات اعتماد الوصول إذا لزم الأمر.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(token=<cloud_api_key>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
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 QiskitRuntimeService
service = QiskitRuntimeService(token="token_B", name="account_A") -
إذا قدّمت
nameوinstanceعند تهيئة الخدمة، تحاول الخدمة تحميل حسابnameوالاتصال بالنسخة المحددة. إذا وجد أي تعارض، يُرفع تحذير.في المثال التالي، تحاول الخدمة تحميل بيانات اعتماد
account_Aواستخدام النسخةCRN_B- حتى لو كانت هناك نسخة مختلفة محددة فيaccount_A:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B", name="account_A") -
تحاول الخدمة تحميل الحساب الافتراضي المحفوظ فقط إذا لم تقدّم
tokenأوnameعند تهيئة الخدمة. ولكن إذا تم تقديمinstanceصراحةً، تحاول الخدمة الاتصال بتلك النسخة باستخدام بيانات الاعتماد الافتراضية. إذا وجد أي تعارض، يُرفع تحذير.في المثال التالي، تحاول الخدمة تحميل بيانات الاعتماد الافتراضية واستخدام النسخة
CRN_B- حتى لو كانت هناك نسخة مختلفة محددة في الحساب الافتراضي:from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(instance="CRN_B") -
إذا حفظت مجموعات متعددة من بيانات الاعتماد ولم تحدد واحدة منها عند تهيئة الخدمة وليس هناك حساب افتراضي محفوظ، تُستخدم المجموعة التي يأتي اسمها أخيرًا أبجديًا.
في المثال التالي، حفظ المستخدم حسابات باسم "my_premium" و"my_open" دون وضع علامة على أيٍّ منهما كحساب افتراضي. ثم هيّأ الخدمة باستخدام الكود التالي. في هذه الحالة، تُستخدم بيانات اعتماد "my_premium":
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService() -
إذا كنت تحصل باستمرار على خطأ "401 Unauthorized"، فقد تحاول استخدام bearer token بدلًا من مفتاح API.
الاختيار التلقائي للنسخة
إذا قدّمت رمزًا (token) لكن لم تقدّم CRN للنسخة عند إنشاء الخدمة، تقوم QiskitRuntimeService بالمصادقة على الحساب المحدد بالرمز وتستخدم الاختيار التلقائي للنسخة لاختيار النسخة الأنسب للمهمة المطلوبة. إذا كان لديك عدة نسخ متاحة داخل حسابك، تختار الخدمة تلقائيًا من بين النسخ المتاحة، بناءً على المورد المطلوب وخيارات QiskitRuntimeService التالية (إذا تم ضبطها): plans_preference وregion وtags.
plans_preference: أنواع خطط النسخ التي يُعطى لها الأولوية. مثلًا، إذا مُرِّر[open]، تكون فقط نسخ الخطة المفتوحة متاحة. القيم المقبولة هيopenوpremiumوpay-as-you-goوflexوon-prem. إذا لم يتم تحديدplans_preference، تُعطى الأولوية للخطط المجانية على الخطط المدفوعة.region: منطقة النسخة. القيم المقبولة هيus-eastوeu-de.tags: وسوم النسخة. تقبل قائمة من سلاسل أسماء الوسوم.
يمكنك إعداد بيانات اعتمادك المحفوظة لاختيار نسخة تلقائيًا.
يتم البحث عن النسخة واستخدامها بهذا الترتيب:
- إذا كان حسابك لا يملك صلاحية الوصول إلا لنسخة واحدة، يتم اختيارها تلقائيًا.
- إذا كانت بيانات الاعتماد المحفوظة مستخدمة وتم تحديد نسخة مع بيانات الاعتماد، تُستخدم تلك النسخة. راجع اعتبارات عند تحميل بيانات الاعتماد المحفوظة.
- إذا كان حسابك يملك عدة نسخ يمكنها الوصول إلى QPU المطلوبة، يستخدم النظام تفضيلات خطتك المحددة لاختيار خطة ونسخة. بالنسبة لـ Qiskit 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 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.
- اتّبع الخطوات في مرحبًا بالعالم لكتابة برنامج كمّي وتشغيله.