Transpile วงจรจากระยะไกลด้วย Qiskit Transpiler Service
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-transpiler
ตั้งแต่วันที่ 18 กรกฎาคม 2025 บริการนี้กำลังถูกย้ายเพื่อรองรับ IBM Quantum® Platform ใหม่และยังไม่พร้อมให้ใช้งาน สำหรับ AI passes สามารถใช้ โหมด local ได้
บริการนี้เป็น beta release ซึ่งอาจมีการเปลี่ยนแปลงได้ หากมีความคิดเห็นหรือต้องการติดต่อทีมพัฒนา ใช้ช่องทาง Qiskit Slack Workspace นี้
Qiskit Transpiler Service ให้ความสามารถในการ transpile บนคลาวด์ นอกจากความสามารถของ Qiskit transpiler แบบ local แล้ว งาน transpilation ของคุณยังสามารถใช้ประโยชน์จากทั้งทรัพยากรคลาวด์ IBM Quantum และ transpiler passes ที่ขับเคลื่อนด้วย AI
Qiskit Transpiler Service มีไลบรารี Python เพื่อผสานรวมบริการและความสามารถนี้เข้ากับ Qiskit patterns และ workflows ที่มีอยู่ได้อย่างราบรื่น บริการนี้ใช้ได้เฉพาะผู้ใช้ IBM Quantum Premium Plan, Flex Plan และ On-Prem (ผ่าน IBM Quantum Platform API) Plan เท่านั้น
ติดตั้งแพ็กเกจ qiskit-ibm-transpiler
หากต้องการใช้ Qiskit Transpiler Service ให้ติดตั้งแพ็กเกจ qiskit-ibm-transpiler:
pip install qiskit-ibm-transpiler
แพ็กเกจจะตรวจสอบสิทธิ์โดยอัตโนมัติโดยใช้ ข้อมูลรับรอง IBM Quantum Platform ของคุณ ซึ่งสอดคล้องกับวิธีที่ Qiskit Runtime จัดการ:
- ตัวแปรสภาพแวดล้อม:
QISKIT_IBM_TOKEN - ไฟล์ configuration
~/.qiskit/qiskit-ibm.json(ในส่วนdefault-ibm-quantum)
หมายเหตุ: แพ็กเกจนี้ต้องใช้ Qiskit SDK v1.X
ตัวเลือก transpile ของ qiskit-ibm-transpiler
backend_name(ไม่บังคับ, str) - ชื่อ Backend ตามที่ QiskitRuntimeService คาดหวัง (เช่นibm_torino) หากตั้งค่านี้ไว้ เมธอด transpile จะใช้ layout จาก Backend ที่ระบุสำหรับการ transpile หากมีตัวเลือกอื่นที่ส่งผลต่อการตั้งค่าเหล่านี้ เช่นcoupling_mapการตั้งค่าbackend_nameจะถูกแทนที่coupling_map(ไม่บังคับ, List[List[int]]) - รายการ coupling map ที่ถูกต้อง (เช่น [[0,1],[1,2]]) หากตั้งค่านี้ไว้ เมธอด transpile จะใช้ coupling map นี้สำหรับการ transpile หากกำหนดไว้จะแทนที่ค่าที่ระบุสำหรับtargetoptimization_level(int) - ระดับการ optimize ที่จะใช้ในกระบวนการ transpile ค่าที่ถูกต้องคือ [1,2,3] โดย 1 คือการ optimize น้อยที่สุด (และเร็วที่สุด) และ 3 คือการ optimize มากที่สุด (และใช้เวลามากที่สุด)ai("true", "false", "auto") - ว่าจะใช้ความสามารถที่ขับเคลื่อนด้วย AI ระหว่างการ transpile หรือไม่ ความสามารถที่ขับเคลื่อนด้วย AI ที่มีให้ใช้งานได้แก่AIRoutingtranspiling passes หรือวิธีสังเคราะห์ที่ขับเคลื่อนด้วย AI อื่นๆ หากค่านี้เป็น"true"บริการจะใช้ transpiling passes ที่ขับเคลื่อนด้วย AI ต่างกันขึ้นอยู่กับoptimization_levelที่ร้องขอ หาก"false"จะใช้คุณสมบัติ transpile ล่าสุดของ Qiskit โดยไม่มี AI สุดท้าย หาก"auto"บริการจะตัดสินใจว่าจะใช้ Qiskit heuristic passes มาตรฐานหรือ AI-powered passes ตาม Circuit ของคุณqiskit_transpile_options(dict) - Python dictionary object ที่สามารถรวมตัวเลือกอื่นๆ ที่ถูกต้องใน เมธอดtranspile()ของ Qiskit หากqiskit_transpile_optionsมีoptimization_levelจะถูกละทิ้งแทนที่ด้วยoptimization_levelที่ระบุเป็นพารามิเตอร์ input หากqiskit_transpile_optionsมีตัวเลือกที่ไม่รู้จักโดยเมธอดtranspile()ของ Qiskit ไลบรารีจะแสดงข้อผิดพลาด
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเมธอด qiskit-ibm-transpiler ที่มีให้ใช้งาน ดู qiskit-ibm-transpiler API reference หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ service API ดู Qiskit Transpiler Service REST API documentation
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธี transpile วงจรโดยใช้ Qiskit Transpiler Service ด้วยพารามิเตอร์ต่างๆ
- สร้าง Circuit และเรียก Qiskit Transpiler Service เพื่อ transpile Circuit โดยใช้
ibm_torinoเป็นbackend_name, 3 เป็นoptimization_levelและไม่ใช้ AI ระหว่างการ transpile
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService
circuit = efficient_su2(101, entanglement="circular", reps=1)
cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="false",
optimization_level=3,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
หมายเหตุ: คุณใช้ได้เฉพาะอุปกรณ์ backend_name ที่คุณเข้าถึงได้ด้วยบัญชี IBM Quantum ของคุณ นอกจาก backend_name แล้ว TranspilerService ยังรองรับ coupling_map เป็นพารามิเตอร์ด้วย
- สร้าง Circuit ที่คล้ายกันและ transpile โดยขอความสามารถ AI transpiling ด้วยการตั้งค่าแฟล็ก
aiเป็นTrue:
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService
circuit = efficient_su2(101, entanglement="circular", reps=1)
cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="true",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
- สร้าง Circuit ที่คล้ายกันและ transpile โดยให้บริการตัดสินใจว่าจะใช้ AI-powered transpiling passes หรือไม่
from qiskit.circuit.library import efficient_su2
from qiskit_ibm_transpiler.transpiler_service import TranspilerService
circuit = efficient_su2(101, entanglement="circular", reps=1)
cloud_transpiler_service = TranspilerService(
backend_name="ibm_torino",
ai="auto",
optimization_level=1,
)
transpiled_circuit = cloud_transpiler_service.run(circuit)
ข้อจำกัดของ Qiskit Transpiler Service
ต่อไปนี้คือข้อจำกัดที่สำคัญที่สุดของบริการ:
- จำนวน two-qubit gates สูง สุดต่อ Circuit ในงาน transpilation ในโหมด
aiใดก็ตามคือ 1 ล้าน - เวลาสูงสุดที่อนุญาตให้เรียกใช้กระบวนการ transpilation คือ 30 นาทีต่องาน
- คุณต้องดึงผลลัพธ์ transpilation จากบริการภายใน 20 นาทีหลังจากกระบวนการ transpilation สิ้นสุด หลังจาก 20 นาที ผลลัพธ์งานจะถูกลบทิ้ง
- เวลาสูงสุดที่ชุด Circuit สามารถอยู่ในคิวภายในระหว่างรอ transpile คือ 120 นาที หลังจากเวลานั้น หากงานยังไม่ถูก transpile จะถูกลบทิ้ง
- ยังไม่ได้กำหนดจำนวน Qubit สูงสุด บริการได้รับการทดสอบกับ Qubit มากกว่า 900 ตัว
การอ้างอิง
หากใช้คุณสมบัติ AI-powered จาก Qiskit Transpiler Service ในงานวิจัย ให้ใช้การอ้างอิงที่แนะนำต่อไปนี้:
@misc{2405.13196,
Author = {David Kremer and Victor Villar and Hanhee Paik and Ivan Duran and Ismael Faro and Juan Cruz-Benito},
Title = {Practical and efficient quantum circuit synthesis and transpiling with Reinforcement Learning},
Year = {2024},
Eprint = {arXiv:2405.13196},
}
ขั้นตอนถัดไป
- เรียนรู้วิธ ีสร้าง AI transpiler passes
- เรียนรู้ วิธี transpile วงจร ซึ่งเป็นส่วนหนึ่งของ Qiskit patterns workflow โดยใช้ Qiskit Runtime
- ทบทวนเอกสาร Qiskit Transpiler Service Python client