Hello World: วงจรควอนตัมแรกของคุณ
สร้าง Bell state (qubit ที่พัวพันกันสองตัว) แล้วรันด้วยสามวิธี:
- การจำลองแบบ Ideal — ผลลัพธ์สมบูรณ์แบบ ไม่ต้องมีบัญชี
- การจำลองแบบ Noisy — จำลองอุปกรณ์จริง ไม่ต้องมีบัญชี
- ฮาร์ดแวร์ควอนตัมจริง — ต้องมีบัญชี IBM Quantum ฟรี (ดูขั้นตอนการตั้งค่าด้านล่าง)
สร้าง Circuit
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
qc.draw(output="mpl")
ตัวเลือกที่ 1: การจำลองแบบ Ideal (ไม่ต้องมีบัญชี)
ใช้ StatevectorSampler — simulator ในเครื่องที่ให้ผลลัพธ์สมบูรณ์แบบ ปราศจาก noise
from qiskit.primitives import StatevectorSampler
result = StatevectorSampler().run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
from qiskit.visualization import plot_histogram
plot_histogram(counts)
ตัวเลือกที่ 2: การจำลองแบบ Noisy (ไม่ต้องมีบัญชี)
ใช้ FakeManilaV2 — simulator ในเครื่องที่เลียนแบบอุปกรณ์ควอนตัม IBM จริง รวมถึงคุณสมบัติ noise ของอุปกรณ์นั้นด้วย วงจรจะต้องถูก transpile (ปรับให้เข้ากัน) กับชุด gate และการเชื่อมต่อ qubit ของอุปกรณ์ก่อน
from qiskit_ibm_runtime import SamplerV2
from qiskit_ibm_runtime.fake_provider import FakeManilaV2
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
backend = FakeManilaV2()
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_qc = pm.run(qc)
result = SamplerV2(mode=backend).run([isa_qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
plot_histogram(counts)
ตัวเลือกที่ 3: ฮาร์ดแวร์ควอนตัมจริง
ต้องมีบัญชี IBM Quantum ฟรี หากต้องการสมัคร:
- ลงทะเบียนที่ quantum.cloud.ibm.com/registration — ไม่ต้องใช้บัตรเครดิตใน 30 วันแรก
- ลงชื่อเข้าใช้ที่ quantum.cloud.ibm.com และเลือกภูมิภาค us-east (จำเป็นสำหรับ Open Plan ฟรี)
- สร้าง instance (Open Plan ฟรี) ที่ Instances หากยังไม่มี
- สร้าง API key ที่ quantum.cloud.ibm.com (หรือที่ cloud.ibm.com/iam/apikeys)
- คัดลอก CRN (Cloud Resource Name) จากหน้า Instances ของคุณ
หากยังไม่ได้บันทึก credentials ในเซสชัน Binder นี้ ให้รัน cell ด้านล่าง โดยแทนที่ <your-api-key> ด้วย API key จากขั้นตอนที่ 4 และ <your-crn> ด้วย CRN จากขั้นตอนที่ 5
from qiskit_ibm_runtime import QiskitRuntimeService
QiskitRuntimeService.save_account(
channel="ibm_quantum_platform",
token="<your-api-key>",
instance="<your-crn>",
set_as_default=True,
overwrite=True,
)
หมายเหตุ: งานบนฮาร์ดแวร์จริงอาจใช้เวลาสักพักขึ้นอยู่กับคิวรอ หาก cell ยังรันอยู่ สามารถตรวจสอบสถานะงานและดูผลลัพธ์ได้ที่ quantum.cloud.ibm.com/workloads
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
print(f"Running on {backend.name}")
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
isa_qc = pm.run(qc)
result = SamplerV2(mode=backend).run([isa_qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
counts
plot_histogram(counts)
ขั้นตอนถัดไป
- Tutorials — คู่มือทีละขั้นตอนเกี่ยวกับ algorithm, การลด error, transpilation และอื่น ๆ
- Guides — เอกสารอ้างอิงเกี่ยวกับการรันวงจร, primitives และ Qiskit Runtime
- Courses — เส้นทางการเรียนรู้แบบมีโครงสร้าง ตั้งแต่พื้นฐานควอนตัมไปจนถึงการคำนวณระดับ utility
- Modules — โมดูลเชิงแนวคิดเชิงลึกด้านวิทยาการคอมพิวเตอร์และกลศาสตร์ควอนตัม