ข้ามไปยังเนื้อหาหลัก
โครงการนี้อยู่ในช่วงเบต้า พบข้อผิดพลาด? สร้าง GitHub Issue มีคำถามหรือไอเดีย? ถามใน Discussions — ยินดีรับฟังความคิดเห็น!
คุณภาพการแปลในหน้านี้เป็นอย่างไร?

กำหนดค่า 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 errorsTwirled 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

หมายเหตุ

ตัวอย่างเต็มที่ใช้หลายตัวเลือก​

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

ขั้นตอนถัดไป​

คำแนะนำ