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

เริ่มต้นใช้งานบัญชี Qiskit Runtime service

ก่อนใช้งาน Qiskit Runtime ต้องเริ่มต้น (สร้าง instance) บัญชีก่อนโดยส่ง (โหลด) credentials ซึ่ง credentials เหล่านี้สามารถส่งด้วยตนเองทุกครั้งที่เริ่มต้น Qiskit Runtime service หรือบันทึกไว้เพื่อใช้ซ้ำได้

หมายเหตุ

ก่อนเริ่มต้น

ตรวจสอบให้แน่ใจว่าได้ดำเนินการขั้นตอนเหล่านี้แล้ว:

  1. ตรวจสอบว่าเป็นสมาชิกของบัญชี IBM Cloud ดู ตั้งค่าบัญชี IBM Cloud สำหรับคำแนะนำ
  2. สร้าง (หรือมีสิทธิ์เข้าถึง) อย่างน้อยหนึ่ง instance ทำตามขั้นตอนเหล่านี้เพื่อตรวจสอบ:
    1. เข้าสู่ระบบ IBM Quantum Platform
    2. ตรวจสอบให้แน่ใจว่าเลือกบัญชีและภูมิภาคที่ถูกต้องใน account switcher ในส่วนหัว
    3. หากมี instance แสดงอยู่หนึ่งหรือมากกว่า ขั้นตอนนี้เสร็จสิ้นแล้ว มิฉะนั้น สร้าง instance
  3. ตรวจสอบว่ากำลังทำงานในสภาพแวดล้อม Python ที่ใช้งานอยู่โดยติดตั้ง Qiskit SDK และ Qiskit Runtime แล้ว
  4. เปิดใช้งาน Python virtual environment และรัน Python ใน virtual environment นั้น

ค้นหา access credentials

  1. ค้นหา API key (เรียกอีกชื่อว่า API token) จาก dashboard สร้าง API key แล้วคัดลอกไปยังตำแหน่งที่ปลอดภัยเพื่อใช้สำหรับการยืนยันตัวตน token จะไม่แสดงอีกครั้ง โปรดทราบว่าสามารถใช้ API key เดียวเชื่อมต่อกับทุกภูมิภาคได้
  2. (ไม่บังคับ) ค้นหา instance ที่ต้องการใช้จากหน้า Instances วางเมาส์เหนือ CRN แล้วคลิกไอคอนเพื่อคัดลอก จากนั้นบันทึกไว้ในตำแหน่งที่ปลอดภัยเพื่อใช้ระบุ instance

เชื่อมต่อ Qiskit กับ Qiskit Runtime service instance

หมายเหตุ

คำแนะนำเหล่านี้ออกแบบสำหรับ qiskit_ibm_runtime v0.42 หรือใหม่กว่า บางฟีเจอร์ไม่รองรับในเวอร์ชันก่อนหน้าของ qiskit_ibm_runtime ในกรณีเหล่านี้ ควรระบุค่าสำหรับ channel, token และ instance เสมอ ไม่ว่าจะเป็นแบบชัดเจนหรือผ่าน saved account

โค้ดพื้นฐานสำหรับเชื่อมต่อ Qiskit กับ Qiskit Runtime service instance มีดังนี้ อย่างไรก็ตาม มีหลายวิธีในการปรับแต่ง QiskitRuntimeService options ตามความต้องการ ซึ่งอธิบายในส่วนถัดไป

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(channel=<channel>,
token=<your-API_KEY>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)
หมายเหตุ

channel เริ่มต้นคือ ibm_quantum_platform เนื่องจากนี่คือ channel ที่เหมาะสมเกือบเสมอ จึงไม่ได้รวมไว้ในตัวอย่าง

เส้นทางเริ่มต้นด่วน: ระบุ credentials อย่างชัดเจน

วิธีที่เร็วที่สุดในการเริ่มใช้งาน QiskitRuntimeService instance คือวิธี direct instantiation: ระบุ API token (key) และ CRN (instance identifier) อย่างชัดเจนทุกครั้งที่ต้องการเริ่มต้น Qiskit Runtime service ดู ค้นหา access credentials หากจำเป็น

from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService(token=<cloud_api_key>, # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance=<instance_CRN>)

วิธีนี้เชื่อถือได้แต่อาจยุ่งยากหากต้องโหลดรายละเอียดเดิมซ้ำหลายครั้ง เพื่อหลีกเลี่ยงการโหลด credentials หลายครั้ง หากทำงานในสภาพแวดล้อม Python ที่เชื่อถือได้ (เช่น บน laptop หรือ workstation ส่วนตัว) สามารถใช้ saved account credentials ตามที่อธิบายในส่วนถัดไปได้

แม้ว่าพารามิเตอร์ input instance จะเป็นตัวเลือก แต่แนะนำให้ระบุข้อมูลนี้เสมอ เว้นแต่ต้องการใช้ service เดียวเพื่อทำงานกับหลาย instances ในกรณีนี้ ดูส่วน การเลือก instance อัตโนมัติ

เส้นทางเริ่มต้นด่วน: ระบุ saved credentials

หากบันทึก credentials ไว้แล้ว ใช้โค้ดต่อไปนี้เพื่อใช้ default credentials สำหรับคำแนะนำในการบันทึก credentials ดู บันทึก access credentials

from qiskit_ibm_runtime import QiskitRuntimeService

# run every time you need the service
service = QiskitRuntimeService()
...

หากตั้งชื่อ credentials หนึ่งชุดหรือมากกว่า — เช่น สำหรับ open และ premium access — ใช้โค้ดต่อไปนี้เพื่อใช้ชุด credentials ที่มีชื่อ

from qiskit_ibm_runtime import QiskitRuntimeService

# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...

ข้อควรพิจารณาเมื่อโหลด saved credentials

  • หากเริ่มต้น service ด้วย token และ name token จะถูกละเว้นและโหลดรายละเอียดที่บันทึกไว้จากบัญชี name

    ในตัวอย่างต่อไปนี้ service โหลดรายละเอียดจาก account_A และไม่ใช้ token_B:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(token="token_B", name="account_A")
  • หากระบุ name และ instance เมื่อเริ่มต้น service service จะพยายามโหลดบัญชี name และ เชื่อมต่อกับ instance ที่ระบุ หากมีความขัดแย้ง จะมีการแจ้งเตือน

    ในตัวอย่างต่อไปนี้ service พยายามโหลด credentials ของ account_A และใช้ instance CRN_B — แม้จะมี instance ที่แตกต่างระบุอยู่ใน account_A:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(instance="CRN_B", name="account_A")
  • service พยายามโหลด default saved account เฉพาะเมื่อไม่ได้ระบุ token หรือ name เมื่อเริ่มต้น service อย่างไรก็ตาม หากระบุ instance อย่างชัดเจน service จะพยายามเชื่อมต่อกับ instance นั้นโดยใช้ default credentials หากมีความขัดแย้ง จะมีการแจ้งเตือน

    ในตัวอย่างต่อไปนี้ service พยายามโหลด default credentials และใช้ instance CRN_B — แม้จะมี instance ที่แตกต่างระบุอยู่ใน default account:

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService(instance="CRN_B")
  • หากบันทึก credentials หลายชุดแต่ไม่ระบุชุดใดเมื่อเริ่มต้น service และไม่มี default saved account ชุดที่ชื่อมาเป็นลำดับสุดท้ายตามลำดับตัวอักษรจะถูกใช้

    ในตัวอย่างต่อไปนี้ ผู้ใช้บันทึกบัญชีชื่อ "my_premium" และ "my_open" แต่ไม่ได้ทำเครื่องหมายชุดใดเป็น default จากนั้นเริ่มต้น service โดยใช้โค้ดต่อไปนี้ ในกรณีนี้ จะใช้ credentials "my_premium":

    from qiskit_ibm_runtime import QiskitRuntimeService

    service = QiskitRuntimeService()
  • หากได้รับข้อผิดพลาด "401 Unauthorized" อย่างต่อเนื่อง อาจกำลังพยายามใช้ bearer token แทน API key

เลือก instance อัตโนมัติ

หากระบุ token แต่ ไม่ระบุ instance CRN เมื่อสร้าง service instance QiskitRuntimeService จะยืนยันตัวตนกับบัญชีที่ระบุโดย token และใช้การเลือก instance อัตโนมัติเพื่อเลือก instance ที่เหมาะสมที่สุดสำหรับงานที่ร้องขอ หากมี instances หลายตัวในบัญชี service จะเลือกจาก instances ที่มีอยู่โดยอัตโนมัติ ขึ้นอยู่กับทรัพยากรที่ร้องขอและ QiskitRuntimeService options เหล่านี้ (หากตั้งไว้): plans_preference, region, tags

  • plans_preference: ประเภทของแผน instance ที่ต้องการจัดลำดับความสำคัญ ตัวอย่างเช่น หากส่ง [open] เข้าไป จะมีเฉพาะ Open Plan instances เท่านั้น ค่าที่ยอมรับคือ open, premium, pay-as-you-go, flex และ on-prem หากไม่ระบุ plans_preference แผนฟรีจะถูกจัดลำดับความสำคัญก่อนแผนที่ต้องเสียเงิน
  • region: ภูมิภาคของ instance ค่าที่ยอมรับคือ us-east และ eu-de
  • tags: tags ของ instance รับรายการ tag name strings
หมายเหตุ

สามารถตั้งค่า saved credentials เพื่อเลือก instance อัตโนมัติได้

instance ถูกค้นหาและใช้ในลำดับนี้:

  1. หากบัญชีของคุณมีสิทธิ์เข้าถึงเพียงหนึ่ง instance จะถูกเลือกโดยอัตโนมัติ
  2. หากกำลังใช้ saved credentials และระบุ instance ไว้กับ credentials นั้น instance นั้นจะถูกใช้ ดู ข้อควรพิจารณาเมื่อโหลด saved credentials
  3. หากบัญชีของคุณมีหลาย instances ที่สามารถเข้าถึง QPU ที่ร้องขอ ระบบจะใช้ plan preferences ที่ระบุเพื่อเลือกแผนและ instance สำหรับ Qiskit Runtime v0.42 และใหม่กว่า แผนฟรีจะถูกจัดลำดับความสำคัญโดยค่าเริ่มต้น
  4. หากบัญชีของคุณมีสิทธิ์เข้าถึงหลาย instances แต่มีเพียงหนึ่งที่สามารถเข้าถึง QPU ที่ร้องขอ instance ที่มีสิทธิ์เข้าถึงจะถูกเลือก หาก instance นี้ไม่เกี่ยวข้องกับแผนฟรี จะมีค่าใช้จ่ายเกิดขึ้น

ตัวอย่าง

ในตัวอย่างนี้ service ค้นหา instances ทั้งหมดที่มีให้กับบัญชีเพื่อหาตัวที่สามารถเข้าถึง Backend ที่ระบุ:

service = QiskitRuntimeService(token=<your-API_KEY>)

ในตัวอย่างนี้ service ค้นหา instances ทั้งหมดที่มีให้กับบัญชีในภูมิภาค EU เพื่อหาตัวที่สามารถเข้าถึง Backend ที่ระบุ:

service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")

ในตัวอย่างนี้ service ค้นหา instances ทั้งหมดที่มีให้กับบัญชีและมี tag services เพื่อหาตัวที่สามารถเข้าถึง Backend ที่ระบุ:

service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])

ในตัวอย่างนี้ service ค้นหา instances ทั้งหมดแบบ premium และ open ที่มีให้กับบัญชีเพื่อหาตัวที่สามารถเข้าถึง Backend ที่ระบุ หาก Backend อยู่ทั้งใน Premium และ Open Plan instance จะจัดลำดับความสำคัญ Premium Plan instance เพราะ premium ระบุอยู่ก่อนใน plans_preference

service = QiskitRuntimeService(token=<your-API_KEY>, plans_preference=['premium', 'open'])

ตรวจสอบว่าเลือก instance ใด

instance ที่เลือกจะถูกส่งคืนเป็นการแจ้งเตือน นอกจากนี้ สามารถรัน service.active_instance() เพื่อตรวจสอบ active instance ได้

การทดสอบภายในเครื่องด้วย Qiskit Runtime

คลาส QiskitRuntimeService สามารถเริ่มต้นด้วย channel=local เพื่อทำ local simulation ในกรณีนี้ไม่จำเป็นต้องยืนยันตัวตนและไม่ต้องระบุค่าสำหรับ token หรือ instance ดังนั้นจึงไม่แนะนำให้บันทึก local account แต่ให้ใช้ direct instantiation แทน:

from qiskit_ibm_runtime import QiskitRuntimeService

# Initialize for local testing

service = QiskitRuntimeService(channel="local")

ขั้นตอนต่อไป

Source: IBM Quantum docs — updated 5 มี.ค. 2569
English version on doQumentation — updated 7 พ.ค. 2569
This translation based on the English version of 11 มี.ค. 2569