ข้ามไปยังเนื้อหาหลัก

แนะนำการ Transpilation

ภาพรวมของ transpilation และเครื่องมือที่เกี่ยวข้อง ไม่ว่าจะใช้แบบ local หรือบนคลาวด์

Transpilation คือกระบวนการเขียน Circuit input ที่กำหนดขึ้นใหม่ให้ตรงกับ topology ของอุปกรณ์ควอนตัมเฉพาะ และเพิ่มประสิทธิภาพ instruction ใน Circuit สำหรับการรันบนคอมพิวเตอร์ควอนตัมที่มีสัญญาณรบกวน เอกสารนี้ครอบคลุมเครื่องมือและ workflow สำหรับ transpilation แบบ local ที่ผู้ใช้ Qiskit ทุกคนสามารถใช้ได้ รวมถึง Qiskit Transpiler Service บนคลาวด์ที่มีสำหรับผู้ใช้ Premium Plan, Flex Plan และ On-Prem (ผ่าน IBM Quantum Platform API) Plan หากคุณใช้ Primitive และสนใจเฉพาะตัวเลือก transpilation เริ่มต้นที่ Qiskit Runtime ให้ไว้ อ่านหัวข้อ Configure runtime compilation for Qiskit Runtime

กระบวนการ transpilation รับ Circuit ที่มี instruction ของคุณ:

Circuit ควอนตัม 2 Qubit ที่มี Hadamard และ CNOT Gate สอง Gate

จากนั้น Transpilation แปลง Circuit ให้ใช้เฉพาะ instruction ที่มีบน Backend ที่เลือก และเพิ่มประสิทธิภาพ instruction เหล่านั้นเพื่อลดผลกระทบของสัญญาณรบกวน:

Circuit ควอนตัม 2 Qubit เดิมหลังจาก transpilation มี Gate RZ, X, SX และ ECR


Transpiler เป็นส่วนประกอบหลักของ Qiskit SDK ออกแบบมาเพื่อความเป็น modular และขยายได้ การใช้งานหลักคือการเขียน circuit transformation ใหม่ (รู้จักกันในชื่อ transpiler pass) และรวมกับ pass ที่มีอยู่แล้ว ซึ่งช่วยลดความลึกและความซับซ้อนของ Circuit ควอนตัมได้อย่างมาก pass ที่เชื่อมต่อกันและลำดับที่ใช้มีผลสำคัญต่อผลลัพธ์สุดท้าย pipeline นี้ถูกกำหนดโดยออบเจ็กต์ PassManager และ StagedPassManager StagedPassManager จัดการการรัน PassManager หนึ่งตัวหรือมากกว่าและกำหนดลำดับที่รัน ในขณะที่ออบเจ็กต์ PassManager เป็นเพียงคอลเลกชันของ pass หนึ่งตัวหรือมากกว่า คิดว่า StagedPassManager เหมือนผู้ควบคุมวงออเคสตรา PassManager เหมือนส่วนของเครื่องดนตรีต่างๆ และออบเจ็กต์ Pass เหมือนนักดนตรีแต่ละคน ด้วยวิธีนี้ คุณสามารถประกอบ Circuit ควอนตัมที่มีประสิทธิภาพด้านฮาร์ดแวร์ที่ช่วยให้รัน utility-scale work ได้โดยควบคุมสัญญาณรบกวนได้

ดูข้อมูลเพิ่มเติมเกี่ยวกับ pass manager stage ในหัวข้อ Transpiler stages

สถาปัตยกรรมชุด Instruction

นอกเหนือจากการลดความลึกและความซับซ้อนของ Circuit ควอนตัม Transpiler ยังออกแบบมาเพื่อแปลง instruction ที่มีอยู่ใน QuantumCircuit ที่กำหนดให้เป็นไปตาม Instruction Set Architecture (ISA) ของ Backend เฉพาะ Circuit ที่เป็นไปตาม ISA ประกอบด้วยเฉพาะ instruction ที่ Backend รองรับผ่าน Target ของฮาร์ดแวร์ เช่น basis gate ที่มีของฮาร์ดแวร์ การวัด การ reset และการดำเนินการ control flow และเป็นไปตามข้อจำกัดที่ระบุโดย connectivity ของฮาร์ดแวร์ นั่นคือ CouplingMap ของ target เมื่อส่งงานไปยัง IBM Quantum® Backend Circuit ต้องเป็นไปตาม ISA ของ Backend

ขั้นตอนของ Transpiler

pipeline Transpiler ที่สร้างไว้ล่วงหน้าของ Qiskit ประกอบด้วยหกขั้นตอนพื้นฐาน:

  1. init - pass นี้รัน pass เบื้องต้นที่จำเป็นก่อนที่ Circuit จะถูกฝัง โดยทั่วไปจะเกี่ยวข้องกับการคลี่ instruction แบบกำหนดเองและแปลง Circuit เป็น Gate เดี่ยว- และสอง Qubit ทั้งหมด ตามค่าเริ่มต้น จะตรวจสอบความถูกต้องของ instruction ใน Circuit และแปล multi-qubit gate เป็น Gate เดี่ยว- และสอง Qubit
  2. layout - pass นี้ใช้ layout โดยแมป Qubit เสมือนใน Circuit ของคุณกับ Qubit ทางกายภาพของ QPU
  3. routing - pass นี้รันหลังจากมีการใช้ layout และจะฉีด Gate (คือ SWAP) ลงใน Circuit เดิมเพื่อให้เข้ากันได้กับ connectivity ของ QPU (coupling map)
  4. translation - pass นี้แปล Gate ใน Circuit เป็นชุด instruction basis set ของ QPU
  5. optimization - pass นี้รัน optimization loop เพื่อหา decomposition ที่มีประสิทธิภาพมากขึ้นของ Circuit ควอนตัมจนกว่าจะตรงตามเงื่อนไข (เช่น ความลึกที่กำหนด)
  6. scheduling - ขั้นตอนนี้สำหรับ scheduling pass ที่รู้จักฮาร์ดแวร์ ถ้าผู้ใช้ระบุวิธี scheduling ขั้นตอนนี้จะคำนึงถึงเวลาที่ว่างทั้งหมดใน Circuit

ถ้าคุณปรับแต่ง workflow transpilation ให้ใช้ขั้นตอนเหล่านี้เป็นแนวทางระหว่างการพัฒนา

Transpile ด้วย Pass Manager

วิธีที่แนะนำในการ transpile Circuit คือสร้าง staged pass manager แล้วรัน method run ด้วย Circuit ของคุณเป็น input คุณสามารถใช้ฟังก์ชัน generate_preset_pass_manager เพื่อสร้าง staged pass manager ที่มีค่าเริ่มต้นที่สมเหตุสมผล

ผู้ใช้ขั้นสูงสามารถปรับแต่งชุดออบเจ็กต์ PassManager และ StagedPassManager และกำหนดลำดับที่แต่ละขั้นตอนรัน ซึ่งสามารถเปลี่ยน Circuit output สุดท้ายได้อย่างมาก ในความเป็นจริง แนวทางแบบกำหนดเองในการ transpile อัลกอริทึมควอนตัมมักให้การระงับข้อผิดพลาดที่มีประสิทธิภาพมากกว่าแนวทางเริ่มต้น แนวทางแบบกำหนดเองเกี่ยวข้องกับการเขียน Circuit ควอนตัมใหม่ให้ตรงกับข้อจำกัดของฮาร์ดแวร์และระงับผลกระทบของสัญญาณรบกวน การไหลของตรรกะสำหรับ toolchain นี้ปรับแต่งได้และไม่จำเป็นต้องเป็นแบบเส้นตรง กระบวนการ transpilation สามารถเตรียม iterative loop สาขาเงื่อนไข และพฤติกรรมที่ซับซ้อนอื่นๆ จุดเริ่มต้นที่ดีเมื่อพัฒนาชุด pass แบบกำหนดเองคือการตรวจสอบลำดับการแปลงเริ่มต้น

สำหรับภาพรวมของการ transpile โดยใช้ pass manager ดู Transpile with pass managers

Transpilation เริ่มต้น

สำหรับวิธีการ "out-of-the-box" ที่ง่ายกว่าแต่ปรับแต่งได้น้อยกว่าในการใช้ Transpiler ให้ใช้ฟังก์ชัน qiskit.compiler.transpile ฟังก์ชันนี้สร้างและรันออบเจ็กต์ StagedPassManager ที่ preset ไว้ตามตัวเลือกต่างๆ รวมถึง flag optimization_level ที่ตั้งได้เป็น 0, 1, 2 หรือ 3 ระดับที่สูงขึ้นสร้าง Circuit ที่เพิ่มประสิทธิภาพมากขึ้นแลกกับเวลา transpilation ที่นานขึ้น

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

คำแนะนำ
Source: IBM Quantum docs — updated 27 เม.ย. 2569
English version on doQumentation — updated 7 พ.ค. 2569
This translation based on the English version of 11 มี.ค. 2569