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

الانتقال من BackendV1 إلى BackendV2

تم إهمال فئة BackendV1 في Qiskit وستُزال من الخدمة. يصف دليل الترحيل هذا التعديلات الصغيرة التي تحتاج لإجرائها إذا كنت تستخدم موفرًا انتقل من BackendV1 إلى BackendV2.

ملاحظة

إذا كنت تستخدم حصرًا qiskit_ibm_runtime وqiskit_aer، فلا حاجة لأي إجراء. حزمة qiskit_ibm_runtime استخدمت دائمًا BackendV2، وqiskit_aer تستخدمها منذ الإصدار 0.13.

التغييرات الرئيسية في BackendV2

صُمّم نموذج Backend في Qiskit لتزويد Qiskit SDK بطبقة تجريد تتيح التفكير في أجهزة الحوسبة الكمومية ضمن نطاق SDK. قُدّمت النسخة الأولى من هذا النموذج مع فئة BackendV1. كانت هذه الفئة تخزّن معلومات الواجهة الخلفية في سلسلة من حاويات البيانات، وهي فئتا BackendConfiguration و BackendProperties.

أعادت فئة BackendV2 تعريف طريقة وصول المستخدم لمعظم خصائص الواجهة الخلفية لتعمل مع هياكل البيانات الأصلية في Qiskit وتوفر أنماط وصول أبسط. جوهر نموذج BackendV2 هو فئة Target، وهي تمثيل لوحدة المعالجة الكمومية (QPU) يحتوي على قيود التحويل البرمجي التي يستطيع Qiskit استخدامها لتحسين الدوائر قبل التنفيذ.

تم تحديث Qiskit SDK للعمل حصرًا مع مدخلات BackendV2، وانتقل معظم الموفرين من BackendV1 إلى BackendV2. من المتوقع أن يُهمل الموفرون الحاليون طريقة الوصول القديمة حيثما أمكن لتوفير انتقال سلس، لكن في النهاية سيحتاج المستخدمون لتعديل الكود.

المبدأ الأساسي في BackendV2 هو أن معظم المعلومات المتعلقة بالواجهة الخلفية موجودة في كائن Target الخاص بها، وكثيرًا ما تستعلم سمات الواجهة الخلفية عن سمة BackendV2.target لإرجاع المعلومات. إلا أن السمات في كثير من الحالات لا توفر إلا جزءًا من المعلومات التي يمكن للـ Target أن يحتويها. مثلاً، يُرجع backend.coupling_map كائن CouplingMap مبنيًا من Target المتاح في سمة BackendV2.target. ومع ذلك، قد يحتوي الـ Target على تعليمات تعمل على أكثر من كيوبتين (لا يمكن تمثيلها في CouplingMap)، أو قد يحتوي على تعليمات تعمل فقط على مجموعة فرعية من الكيوبتات (أو روابط ثنائية الكيوبتات في حالة التعليمات ثنائية الكيوبت)، وهو ما لن يظهر في خريطة الاقتران الكاملة التي يُرجعها BackendV2.coupling_map. لذا حسب حالة الاستخدام لديك، قد يكون من الضروري البحث بعمق أكبر بدلاً من الاكتفاء بأنماط الوصول المكافئة في BackendV2.

التغييرات التفصيلية في BackendV2

معظم السمات لها بديل مباشر، مما يبسّط جهود الترحيل. نقطة عدم التطابق الوحيدة بين الواجهتين تكمن في CouplingMap.

في ما يلي جدول بأمثلة على أنماط الوصول في BackendV1 والصيغة الجديدة في BackendV2.

important

مرّر للجهة اليمنى لقراءة الملاحظات المهمة.

BackendV1BackendV2ملاحظات
backend.configuration().n_qubitsbackend.num_qubits
backend.configuration().coupling_mapbackend.coupling_mapالقيمة المُرجَعة من BackendV2 هي كائن CouplingMap، بينما في BackendV1 هي قائمة حواف. كذلك، هذا مجرد عرض للمعلومات الموجودة في backend.target وقد يكون جزءًا فقط من المعلومات المتوفرة في كائن Target.
backend.configuration().backend_namebackend.name
backend.configuration().backend_versionbackend.backend_versionسمة BackendV2.version تمثّل إصدار واجهة Backend المجردة التي ينفّذها الكائن، بينما BackendV2.backend_version هي بيانات وصفية عن إصدار الواجهة الخلفية نفسها.
backend.configuration().basis_gatesbackend.operation_namesتُرجع BackendV2 قائمة بأسماء العمليات الموجودة في سمة backend.target. قد يحتوي Target على معلومات أكثر مما يمكن التعبير عنه بهذه الأسماء. مثلاً، بعض العمليات تعمل فقط على مجموعة فرعية من الكيوبتات، وبعض الأسماء تنفّذ نفس الـ Gate بمعاملات مختلفة.
backend.configuration().dtbackend.dt
backend.configuration().dtmbackend.dtm
backend.configuration().max_experimentsbackend.max_circuits
backend.configuration().online_datebackend.online_date
InstructionDurations.from_backend(backend)backend.instruction_durations
backend.defaults().instruction_schedule_mapbackend.instruction_schedule_map
backend.properties().t1(0)backend.qubit_properties(0).t1
backend.properties().t2(0)backend.qubit_properties(0).t2
backend.properties().frequency(0)backend.qubit_properties(0).frequency
backend.properties().readout_error(0)backend.target["measure"][(0,)].errorفي BackendV2، يُستخدم معدل الخطأ لعملية Measure على كيوبت معين لنمذجة خطأ القراءة. ومع ذلك، يمكن لكائن BackendV2 تنفيذ أنواع قياس متعددة وإدراجها بشكل منفصل في Target.
backend.properties().readout_length(0)backend.target["measure"][(0,)].durationفي BackendV2، تُستخدم مدة عملية Measure على كيوبت معين لنمذجة طول القراءة. ومع ذلك، يمكن لكائن BackendV2 تنفيذ أنواع قياس متعددة وإدراجها بشكل منفصل في Target.