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

เลือก compute profile

managed workflow รันบน compute profile compute profile คือการรวม vCPU หน่วยความจำ และ GPU ที่กำหนดไว้ตายตัว คล้ายกับทรัพยากรที่คุณร้องขอจากตัวจัดตารางงาน HPC เมื่ออัปโหลด workflow คุณจะแมปขนาดของ workflow เช่น S และ M กับ profile และแต่ละการรันจะเลือกหนึ่งในขนาดเหล่านั้น จากนั้น job จะรันบน node ของตัวเองด้วย profile นั้น และใช้ profile นั้นจนกว่า job จะสิ้นสุด

ProfilevCPUหน่วยความจำ (GB)GPU
8x32832ไม่มี
16x12816128ไม่มี
48x76848768ไม่มี
128x15001281500ไม่มี
24x120x1l40s241201 L40S
20x320x2a100203202 A100
80x1200x8a1008012008 A100
160x1792x8h10016017928 H100

ID ของ profile มีรูปแบบ {cpu}x{memory} โดยหน่วยความจำเป็น GB หรือ {cpu}x{memory}x{count}{gpu} สำหรับ profile ที่มี GPU ตัวอย่างเช่น 24x120x1l40s มี vCPU 24 ตัว หน่วยความจำ 120 GB และ NVIDIA L40S GPU หนึ่งตัว

ตรวจสอบ profile ที่ใช้ได้​

หากต้องการดูว่ามี profile ใดให้ใช้บ้าง ให้เรียก compute_profiles():

run_workflow_remotely.ipynb

from qiskit_ibm_catalog import ManagedWorkflowClient

client = ManagedWorkflowClient()
print(client.compute_profiles())
8x32 (8 vCPU / 32 GB)
16x128 (16 vCPU / 128 GB)
48x768 (48 vCPU / 768 GB)
128x1500 (128 vCPU / 1500 GB)
24x120x1l40s (24 vCPU / 120 GB / 1l40s)
20x320x2a100 (20 vCPU / 320 GB / 2a100)
80x1200x8a100 (80 vCPU / 1200 GB / 8a100)
160x1792x8h100 (160 vCPU / 1792 GB / 8h100)

ค้นหา profile จากทรัพยากร​

แทนที่จะพิมพ์ ID ของ profile คุณสามารถอธิบายทรัพยากรที่ workflow ต้องการด้วย compute_profile() และใช้ผลลัพธ์เป็นค่าใน sizes_map ส่ง cpu และ memory เป็น GB และส่ง gpu สำหรับ profile ที่มี GPU:

run_workflow_remotely.ipynb

profile = client.compute_profile(cpu=24, memory=120, gpu="1l40s")
print(profile) # 24x120x1l40s

sizes_map = {"S": "8x32", "L": profile}

sizes_map รับทั้ง ID ของ profile และ profile ที่ compute_profile() คืนมา และคุณผสมทั้งสองแบบในแมปเดียวได้ หากต้องการตรวจสอบ ID ของ profile ก่อนอัปโหลด ให้ส่งไปยัง compute_profile() เช่น client.compute_profile("16x128") ถ้าไม่มี profile ที่ตรงกัน ข้อผิดพลาดจะแสดงรายการ profile ที่ใช้ได้

compute_profiles() คืนลิสต์ ดังนั้นคุณจึงกรองเองได้ด้วย ตัวอย่างเช่น โค้ดต่อไปนี้หา profile ที่มี GPU:

run_workflow_remotely.ipynb

gpu_profiles = [p for p in client.compute_profiles() if p.gpu]

ตั้งค่า compute profile เริ่มต้นสำหรับ workflow ของคุณ​

workflow ส่วนใหญ่เริ่มด้วยขนาดเดียว ให้แมปขนาดนั้นกับ profile ด้วย sizes_map และตั้งเป็นค่าเริ่มต้นด้วย default_size เมื่ออัปโหลด workflow:

run_workflow_remotely.ipynb

from qiskit_ibm_catalog import ManagedWorkflow, ManagedWorkflowClient

client = ManagedWorkflowClient()

my_workflow = client.upload(
ManagedWorkflow(
title="my-workflow",
entrypoint="my_workflow.py",
working_dir="./source_files/",
sizes_map={"M": "16x128"},
default_size="M",
)
)

ทุกการรันของ workflow ใช้ profile นี้ ดังนั้นคุณไม่ต้องส่งขนาดเมื่อรัน:

run_workflow_remotely.ipynb

job = my_workflow.run(circuits=circuits) # Runs on 16x128

แนวปฏิบัติที่ดี: จับคู่ขนาดกับขนาดของปัญหา​

workflow แก้ปัญหาเฉพาะอย่าง และอาจต้องใช้ compute profile ที่ต่างกันเมื่อปัญหามีขนาดและความซับซ้อนเพิ่มขึ้น เมื่อมี sizes_map สำหรับแต่ละ workflow คุณทำสิ่งต่อไปนี้ได้:

  • ให้ทรัพยากรคำนวณเพียงพอแก่ปัญหาขนาดใหญ่เพื่อให้รันจนเสร็จ

  • ป้องกันไม่ให้ปัญหาขนาดเล็กใช้ node ที่ใหญ่เกินความจำเป็น

คุณกำหนดขนาดตามปัจจัยที่กำหนดการใช้หน่วยความจำและ CPU ของ workflow ได้ เช่น ขนาดของ subspace จำนวน batch หรือจำนวน qubit

กำหนดขนาด​

คุณแมปได้สูงสุดสี่ขนาด สำหรับปัญหาขนาดเล็ก (S) กลาง (M) ใหญ่ (L) และใหญ่พิเศษ (XL) ตัวอย่างเช่น โค้ดต่อไปนี้กำหนด workflow ที่มีสามขนาด:

run_workflow_remotely.ipynb

sizes_map = {"S": "8x32", "M": "16x128", "L": "128x1500"}

my_workflow = client.upload(
ManagedWorkflow(
title="my-workflow",
entrypoint="my_workflow.py",
working_dir="./source_files/",
sizes_map=sizes_map,
default_size="M",
)
)

กฎของขนาด​

ป้ายกำกับขนาดต้องเป็น S, M, L หรือ XL ดังนั้น workflow กำหนดขนาดได้สูงสุดสี่ขนาด managed workflow จับคู่ป้ายกำกับทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก และเก็บเป็นตัวพิมพ์ใหญ่ สองขนาดแมปไปยัง profile เดียวกันได้

workflow จะปฏิเสธการอัปโหลดครั้งแรกในกรณีต่อไปนี้:

  • ป้ายกำกับไม่ใช่ S, M, L หรือ XL

  • คุณตั้ง sizes_map โดยไม่มี default_size หรือตั้ง default_size โดยไม่มี sizes_map

  • default_size ไม่ใช่หนึ่งในป้ายกำกับใน sizes_map

  • ค่าใน sizes_map ไม่ใช่ compute profile ที่ใช้ได้

เปลี่ยนขนาดเมื่ออัปโหลดซ้ำ​

เมื่อคุณอัปโหลด workflow อีกครั้งด้วย title เดิม managed workflow จะจัดการขนาดดังนี้:

  • ถ้าคุณตั้ง sizes_map ขนาดใหม่จะแทนที่ขนาดที่เก็บไว้ทั้งหมด

  • ถ้าคุณไม่ระบุ sizes_map workflow จะคงขนาดที่เก็บไว้และค่าเริ่มต้นไว้

  • หากต้องการเปลี่ยนเฉพาะค่าเริ่มต้น ให้ตั้ง default_size โดยไม่มี sizes_map ค่าของ default_size ต้องเป็นหนึ่งในขนาดที่เก็บไว้

ให้ตั้ง default_size ทุกครั้งที่คุณตั้ง sizes_map การอัปโหลดซ้ำไม่บังคับให้มี default_size แต่ถ้าขนาดใหม่ไม่รวมค่าเริ่มต้นเดิม workflow จะไม่มีค่าเริ่มต้น และทุกการรันที่ไม่ระบุ function_size จะล้มเหลว

เลือกขนาดสำหรับแต่ละการรัน​

ส่ง function_size ให้ run() เพื่อเลือกหนึ่งในขนาดของ workflow สำหรับ job นั้น ถ้าไม่ระบุ job จะใช้ขนาดเริ่มต้นของ workflow:

run_workflow_remotely.ipynb

print(my_workflow.sizes()) # {'S': '8x32', 'M': '16x128', 'L': '128x1500'}
print(my_workflow.get_default_size()) # 'M'

job = my_workflow.run(function_size="L", circuits=circuits) # Runs on 128x1500
job = my_workflow.run(circuits=circuits) # Runs on the default size, M

sizes() และ get_default_size() คืนขนาดที่เก็บไว้ ณ ตอนที่คุณโหลด workflow หากต้องการดูขนาดที่เปลี่ยนไปหลังจากโหลด workflow ให้โหลดใหม่อีกครั้ง

หากต้องการอ่านขนาดและ compute profile ของ job ให้เรียก get_function_size() และ get_compute_profile() ในโค้ด workflow ของคุณ:

source_files/my_workflow.py

from qiskit_serverless import get_compute_profile, get_function_size

print(get_function_size()) # 'L'
print(get_compute_profile()) # '128x1500'

แก้ปัญหาเรื่องขนาด​

ปัญหาสาเหตุ
การอัปโหลดล้มเหลวพร้อม Invalid size '...'. Valid sizes are: S, M, L, XL.ป้ายกำกับใน sizes_map ไม่ใช่หนึ่งในสี่ป้ายกำกับที่รองรับ
การอัปโหลดล้มเหลวพร้อม Unknown compute profile '...' for size '...'.ค่าใน sizes_map ไม่ใช่ profile ที่ใช้ได้ ตรวจสอบ ID ด้วย compute_profiles() หรือใช้ compute_profile() เพื่อค้นหา
compute_profile() ล้มเหลวพร้อม No compute profile matches ...ไม่มี profile ที่มีทรัพยากรตรงกันเป๊ะ สำหรับ profile ที่มี GPU ให้ส่ง gpu ด้วย เลือก profile จากรายการในข้อความข้อผิดพลาด
การอัปโหลดล้มเหลวพร้อม 'default_size' is required when 'sizes' is provided.การอัปโหลดครั้งแรกตั้ง sizes_map โดยไม่มี default_size
run() ล้มเหลวพร้อม Unknown function size '...' for this function. Available sizes: ...workflow ไม่ได้กำหนดขนาดที่คุณส่งให้ function_size
run() ล้มเหลวพร้อม This function has no size.การอัปโหลดซ้ำแทนที่ขนาดและลบค่าเริ่มต้นออก ให้อัปโหลดอีกครั้งพร้อม default_size หรือส่ง function_size