ציון אפשרויות 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 ספציפי ל-PUB, וארגומנט keyword של shots. ערכי ה-shots האלה הם חלק מממשק הביצוע של Sampler, ועצמאיים מאפשרויות ה-Runtime Sampler. הם גוברים על כל ערך שצוין כאפשרויות כדי לציית לאבסטרקציה של Sampler.
אם shots לא צוין על ידי אף PUB ולא בארגומנט keyword של הריצה (או שכולם 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
שליטה בהגדרות הפחתת שגיאות של 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 מסוימות יחד במשימה אחת. לחץ על הכרטיסייה המתאימה לקבלת רשימת התכונות שאינן תואמות לתכונה הנבחרת:
מעגלים דינמיים
לא תואם עם:
- Dynamical decoupling
הערות נוספות:
- ניתן להחיל Gate twirling על מעגלים דינמיים, אך רק על שערים שאינם בתוך בלוקים מותנים. Measurement twirling ניתן להחיל רק על מדידות סופיות.
- תואם לשערים שברייים בעת שימוש ב-
qiskit-ibm-runtimev0.42.0 ומעלה.
Dynamical decoupling
לא תואם עם:
- מעגלים דינמיים
שערים שברייים
לא תואם עם:
- Gate twirling
תואם למעגלים דינמיים בשימוש ב-qiskit-ibm-runtime v0.42.0 ומעלה.
Gate twirling
לא תואם עם:
- שערים שברייים
- Stretches
הערות נוספות:
- ניתן להחיל Gate twirling על מעגלים דינמיים, אך רק על שערים שאינם בתוך בלוקים מותנים.
- Measurement twirling ניתן להחיל רק על מדידות סופיות.
- Measurement twirling אינו תואם להוראה
store. - לא עובד עם משלבים שאינם Clifford.
השלבים הבאים
- עיין במדריך מבוא לאפשרויות.
- מצא פרטים נוספים על שיטות
SamplerV2ב-מקור ה-API של Sampler. - החלט באיזה מצב ביצוע להריץ את המשימה שלך.
- למד על ניהול רעש עם Sampler.