تحديد خيارات Sampler
إصدارات الحزم
الكود في هذه الصفحة تم تطويره باستخدام المتطلبات التالية. نوصي باستخدام هذه الإصدارات أو أحدث.
qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
يمكنك استخدام الخيارات لتخصيص الأداة البدائية Sampler. يركز هذا القسم على كيفية تحديد خيارات الأداة البدائية في Qiskit Runtime. بينما تكون واجهة طريقة run() للأدوات البدائية مشتركة عبر جميع التطبيقات، إلا أن خياراتها ليست كذلك. راجع مراجع API المقابلة للمزيد من المعلومات حول خيارات qiskit.primitives.BackendSamplerV2 و qiskit_aer.primitives.SamplerV2.
ضبط خيارات Sampler
يمكنك ضبط الخيارات عند تهيئة Sampler، أو بعد تهيئته، أو يمكنك تحديث الخيارات بعد تهيئة Sampler. للتعليمات حول استخدام هذه التقنيات، انظر موضوع مقدمة الخيارات.
بالإضافة إلى ذلك، يمكنك ضبط قيمة shots في طريقة run()، كما هو موضح في القسم التالي.
طريقة Run()
القيم الوحيدة التي يمكنك تمريرها إلى run() هي تلك المحددة في الواجهة. أي shots. يؤدي هذا إلى الكتابة فوق أي قيمة محددة لـ default_shots للتشغيل الحالي.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
sampler = Sampler(mode=backend)
# Default shots to use if not specified in run()
sampler.options.default_shots = 500
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)
<RuntimeJobV2('d8286680bvlc73d1vmu0', 'sampler')>
حالات خاصة
Shots
تقبل طريقة SamplerV2.run وسيطتين: قائمة من PUBs، يمكن لكل منها تحديد قيمة shots خاصة بها، ووسيطة keyword للـ shots. قيم shots هذه جزء من واجهة تنفيذ Sampler، وهي مستقلة عن خيارات Runtime Sampler. وهي تأخذ الأولوية على أي قيم محددة كخيارات للتوافق مع تجريد Sampler.
ومع ذلك، إذا لم يتم تحديد shots من قِبل أي PUB أو في وسيطة keyword للـ run (أو إذا كانت جميعها None)، فيتم استخدام قيمة shots من الخيارات، وأبرزها default_shots.
للتلخيص، هذا هو ترتيب الأولوية لتحديد shots في Sampler، لأي PUB بعينه:
- إذا حدد PUB shots، استخدم تلك القيمة.
- إذا تم تحديد وسيطة keyword
shotsفيrun، استخدم تلك القيمة. - إذا كان
twirlingمفعّلاً (True بشكل افتراضي)، فيُستخدم حاصل ضربnum_randomizationsوshots_per_randomization، كما هو محدد في خياراتtwirling. - إذا تم تحديد
sampler.options.default_shots، استخدم تلك القيمة.
وبالتالي، إذا تم تحديد shots في جميع الأماكن الممكنة، يُستخدم الأعلى أولوية (shots المحددة في PUB).
على الرغم من أن shots المحددة في PUB وفي run لها الأولوية الأعلى، إلا أن المهمة تفشل إذا كان twirling مفعّلاً وكان حاصل ضرب num_randomizations وshots_per_randomization أصغر من قيمة shots. في هذا السيناريو، يكون SamplerV2 غير قادر على توزيع shots بين num_randomizations المحددة.
مثال:
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
# Setting shots during primitive initialization
sampler = Sampler(mode=backend, options={"default_shots": 4096})
# Setting options after primitive initialization
# This uses auto-complete.
sampler.options.default_shots = 2000
# This does bulk update. The value for default_shots is overridden
# if you specify shots with run() or in the PUB.
sampler.options.update(
default_shots=1024, dynamical_decoupling={"sequence_type": "XpXm"}
)
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)
<RuntimeJobV2('d82868ugbeec73alfa80', 'sampler')>
الخيارات المتاحة
يوثق الجدول التالي الخيارات من أحدث إصدار من qiskit-ibm-runtime. لرؤية إصدارات الخيارات القديمة، تفضل بزيارة مرجع API لـ qiskit-ibm-runtime واختر إصداراً سابقاً.
default_shots
العدد الإجمالي للـ shots المستخدمة لكل دائرة لكل تكوين.
الخيارات: عدد صحيح >= 0
الافتراضي: None
dynamical_decoupling
التحكم في إعدادات تخفيف الأخطاء للفصل الديناميكي.
وثائق API لـ dynamical_decoupling
dynamical_decoupling.enable
الخيارات: True, False
الافتراضي: False
dynamical_decoupling.extra_slack_distribution
الخيارات: middle, edges
الافتراضي: middle
dynamical_decoupling.scheduling_method
الخيارات: asap, alap
الافتراضي: alap
dynamical_decoupling.sequence_type
الخيارات: XX, XpXm, XY4
الافتراضي: XX
dynamical_decoupling.skip_reset_qubits
الخيارات: True, False
الافتراضي: False
environment
environment.job_tags
قائمة من العلامات.
الخيارات: None
الافتراضي: None
environment.log_level
الخيارات: DEBUG, INFO, WARNING, ERROR, CRITICAL
الافتراضي: WARNING
environment.private
الخيارات: True, False
الافتراضي: False
execution
execution.init_qubits
ما إذا كان يجب إعادة ضبط القبتات إلى الحالة الأساسية لكل shot.
الخيارات: True, False
الافتراضي: True
execution.rep_delay
التأخير بين القياس والدائرة الكمية اللاحقة.
الخيارات: قيمة في النطاق المقدم من backend.rep_delay_range
الافتراضي: محدد بواسطة backend.default_rep_delay
execution.meas_type
الخيارات: classified, kerneled, avg_kerneled
الافتراضي: classified
max_execution_time
يحدد المدة التي يمكن فيها تشغيل مهمة، بالثواني. انظر دليل الحد الأقصى لوقت التنفيذ لمزيد من التفاصيل.
الخيارات: عدد صحيح بالثواني في النطاق [1, 10800]
الافتراضي: 10800 (3 ساعات)
simulator
خيارات تمريرها عند محاكاة Backend
simulator.basis_gates
الخيارات: قائمة أسماء بوابات الأساس للتحويل إليها
الافتراضي: مجموعة جميع بوابات الأساس المدعومة بواسطة محاكي Qiskit Aer
simulator.coupling_map
الخيارات: قائمة التفاعلات ثنائية القبت الموجهة
الافتراضي: None، مما يعني عدم وجود قيود اتصال (اتصال كامل).
simulator.noise_model
الخيارات: Qiskit Aer NoiseModel، أو تمثيله
الافتراضي: None
simulator.seed_simulator
الخيارات: عدد صحيح
الافتراضي: None
twirling
خيارات Twirling
twirling.enable_gates
الخيارات: True, False
الافتراضي: False
twirling.enable_measure
الخيارات: True, False
الافتراضي: False
twirling.num_randomizations
الخيارات: auto، عدد صحيح >= 1
الافتراضي: auto
twirling.shots_per_randomization
الخيارات: auto، عدد صحيح >= 1
الافتراضي: auto
twirling.strategy
الخيارات: active, active-circuit, active-accum, all
الافتراضي: active-accum
experimental
خيارات تجريبية، عند توفرها.
توافق الميزات
لا يمكن استخدام بعض ميزات Runtime معاً في مهمة واحدة. انقر على التبويب المناسب للحصول على قائمة بالميزات غير المتوافقة مع الميزة المحددة:
الدوائر الديناميكية
غير متوافقة مع:
- الفصل الديناميكي
ملاحظات أخرى:
- يمكن تطبيق Gate twirling على الدوائر الديناميكية، لكن فقط على البوابات غير الموجودة داخل الكتل الشرطية. يمكن تطبيق Measurement twirling فقط على القياسات الطرفية.
- متوافقة مع البوابات الكسرية عند استخدام
qiskit-ibm-runtimeالإصدار v0.42.0 أو أحدث.
الفصل الديناميكي
غير متوافق مع:
- الدوائر الديناميكية
البوابات الكسرية
غير متوافقة مع:
- Gate twirling
متوافقة مع الدوائر الديناميكية عند استخدام qiskit-ibm-runtime الإصدار v0.42.0 أو أحدث.
Gate twirling
غير متوافق مع:
- البوابات الكسرية
- الامتدادات
ملاحظات أخرى:
- يمكن تطبيق Gate twirling على الدوائر الديناميكية، لكن فقط على البوابات غير الموجودة داخل الكتل الشرطية.
- يمكن تطبيق Measurement twirling فقط على القياسات الطرفية.
- Measurement twirling غير متوافق مع تعليمة
store. - لا يعمل مع المشبكات غير الكليفوردية.
الخطوات التالية
- راجع دليل مقدمة الخيارات.
- اعثر على مزيد من التفاصيل حول أساليب
SamplerV2في مرجع Sampler API. - قرر وضع التنفيذ الذي ستشغل مهمتك فيه.
- تعرف على إدارة الضوضاء مع Sampler.