กำหนดค่า noise management ด้วย Estimator
เวอร์ชันแพ็กเกจ
โค้ดในหน้านี้พัฒนาโดยใช้ requirements ต่อไปนี้ แนะนำให้ใช้เวอร์ชันเหล่านี้หรือใหม่กว่า
qiskit-ibm-runtime~=0.47.0
การจัดการ noise ทำได้หลายวิธี ซึ่งโดยทั่วไปจะใช้เทคนิค error mitigation และ error suppression ต่างๆ เพื่อหลีกเลี่ยงข้อผิดพลาดก่อนที่จะเกิดขึ้น เทคนิคเหล่านี้มักทำให้เกิดค่าใช้จ่ายในการประมวลผลล่วงหน้า ดังนั้น จึงสำคัญที่จะต้องหาจุดสมดุลระหว่างการปรับปรุงผลลัพธ์และการทำให้งานเสร็จในเวลาที่เหมาะสม
Estimator รองรับเทคนิค noise management ต่อไปนี้ ดู Error mitigation and suppression techniques สำหรับคำอธิบายของแต่ละเทคนิค ดูส่วน Custom noise management settings สำหรับตัวอย่างการเปิดใช้งานเทคนิคเหล่านี้
Dynamical decoupling
วิธีเปิดใช้งาน: options.dynamical_decoupling.enable = True
API Reference: DynamicalDecouplingOptions
ตัวเลือกที่น่าสนใจ: sequence_type
Pauli twirling
วิธีเปิดใช้งาน: options.twirling.enable_gates = True
API Reference: TwirlingOptions
ตัวเลือกที่น่าสนใจ: num_randomizations, shots_per_randomization
TREX
วิธีเปิดใช้งาน: options.resilience.measure_mitigation = True
API Reference: MeasureNoiseLearningOptions
ตัวเลือกที่น่าสนใจ:
ZNE
วิธีเปิดใช้งาน: options.resilience.zne_mitigation = True
API Reference: ZneOptions
ตัวเลือกที่น่าสนใจ: noise_factors, extrapolator
PEA
วิธีเปิดใช้งาน: (ต้องเปิดใช้ ZNE ด้วย) options.resilience.zne_mitigation = True และ options.resilience.zne.amplifier = "pea"
API Reference: ZneOptions
ตัวเลือกที่น่าสนใจ: noise_factors, extrapolator
PEC
วิธีเปิดใช้งาน: options.resilience.pec_mitigation = True
API Reference: PecOptions
ตัวเลือกที่น่าสนใจ: max_overhead
ระดับ Resilience
resilience_level ระบุระดับความทนทานต่อข้อผิดพลาดที่ต้องการสร้าง ระดับที่สูงกว่าให้ผลลัพธ์ที่แม่นยำกว่า โดยแลกกับเวลาประมวลผลที่นานกว่า Resilience levels สามารถใช้กำหนดค่าการแลกเปลี่ยนระหว่างต้นทุน/ความแม่นยำเมื่อใช้ noise management กับ primitive query Noise management ลดข้อผิดพลาด (bias) ในผลลัพธ์โดยประมวลผลผลลัพธ์จากกลุ่มหรือ ensemble ของ circuits ที่เกี่ยวข้อง ระดับการลดข้อผิดพลาดขึ้นอยู่กับวิธีที่ใช้ resilience level ช่วยซ่อนรายละเอียดของการเลือกวิธี noise management ไว้ เพื่อให้ผู้ใช้สามารถพิจารณาการแลกเปลี่ยนต้นทุน/ความแม่นยำที่เหมาะสมกับงานของตน
ด้วยเหตุนี้ แต่ละระดับจึงสอดคล้องกับวิธีหนึ่งวิธีหรือมากกว่า โดย quantum sampling overhead จะเพิ่มขึ้นตามระดับ เพื่อให้คุณทดสอบการแลกเปลี่ยนระหว่างเวลา/ความแม่นยำที่แตกต่างกัน ตารางต่อไปนี้แสดงระดับและวิธีที่สอดคล้องกันซึ่งมีสำหรับแต่ละ primitive
| Resilience Level | คำอธิบาย | เทคนิค |
|---|---|---|
| 0 | ไม่มี mitigation | ไม่มี |
| 1 [ค่าเริ่มต้น] | ต้นทุน mitigation ขั้นต่ำ: ลด errors ที่เกี่ยวข้องกับ readout errors | Twirled Readout Error eXtinction (TREX) measurement twirling |
| 2 | ต้นทุน mitigation ปานกลาง โดยทั่วไปลด bias ใน estimators แต่ไม่รับประกันว่าจะ zero-bias | ระดับ 1 + Zero Noise Extrapolation (ZNE) และ gate twirling |
Resilience levels ขณะนี้อยู่ในระยะ beta ดังนั้น sampling overhead และคุณภาพของโซลูชันจะแตกต่างกันไปตาม circuit คุณสมบัติใหม่ ตัวเลือกขั้นสูง และเครื่องมือการจัดการจะถูกเผยแพร่แบบต่อเนื่อง ไม่รับประกันว่าวิธี noise management เฉพาะจะถูกใช้ที่แต่ละ resilience level
กำหนดค่า Estimator ด้วย resilience levels
คุณสามารถใช้ resilience levels เพื่อระบุเทคนิค noise management หรือตั้งค่าเทคนิคที่กำหนดเองทีละรายการตามที่อธิบายใน Custom noise management settings
ตัวเลือกใดๆ ที่คุณระบุด้วยตนเองนอกเหนือจาก resilience level จะถูกใช้เพิ่มเติมจากชุดตัวเลือกพื้นฐานที่กำหนดโดย resilience level ดังนั้น ในหลักการ คุณสามารถตั้งค่า resilience level เป็น 1 แต่ปิด measurement mitigation แม้ว่าจะไม่แนะนำ
ตัวอย่างเช่น การตั้งค่า resilience level เป็น 0 จะปิด zne_mitigation แต่ estimator.options.resilience.zne_mitigation = True จะ override ค่านั้น
ตัวอย่าง
โค้ดต่อไปนี้เปิดใช้งาน ZNE, TREX และ gate twirling โดยการตั้งค่า resilience_level 2
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})
การตั้งค่า noise management แบบกำหนดเอง
คุณสามารถเปิด/ปิดวิธี noise management แต่ละรายการโดยใช้ Estimator options
- ตัวเลือกบางตัวไม่สามารถใช้ร่วมกันได้กับ circuit ทุกประเภท ดูตารางความเข้ากันได้ของฟีเจอร์ สำหรับรายละเอียด
- หากคุณใช้ Estimator ฝั่ง client แบบใหม่ที่เปิดตัวใน
qiskit-ibm-runtimev0.50.0 จะต้องมี job noise-learning แยกต่างหากเพื่อใช้ PEA และ PEC ดู Migrate from server-side to client-side Sampler and Estimator สำหรับข้อมูลเพิ่มเติม
ตัวอย่างเต็มที่ใช้หลายตัวเลือก
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True
print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True
ปิด error mitigation ทั้งหมด
สำหรับคำแนะนำการปิด error mitigation ทั้งหมด ดูส่วน Turn off all error suppression and mitigation ในคู่มือ Estimator options
ขั้นตอนถัดไป
- ทำตามตัวอย่างที่ใช้ error mitigation ใน Cost function lesson ใน IBM Quantum Learning
- เรียนรู้เพิ่มเติมเกี่ยวกับ เทคนิค error mitigation และ error suppression
- สำรวจ Estimator options
- ตัดสินใจว่าจะรัน job ใน execution mode แบบใด