Lewati ke konten utama
Proyek ini masih dalam tahap beta. Menemukan bug? Buat isu GitHub. Punya pertanyaan atau ide? Tanya di Discussions — kami sangat menghargai masukan kamu!
Bagaimana kualitas terjemahan di halaman ini?

Pilih compute profile

Managed workflow berjalan di compute profile. Compute profile adalah kombinasi tetap dari vCPU, memori, dan GPU, mirip dengan sumber daya yang kamu minta dari scheduler HPC. Saat kamu mengunggah workflow, kamu memetakan ukurannya, seperti S dan M, ke profile, dan setiap run memilih salah satu ukuran itu. Job lalu berjalan di node sendiri dengan profile tersebut, dan mempertahankan profile itu sampai job selesai.

ProfilevCPUMemori (GB)GPU
8x32832Tidak ada
16x12816128Tidak ada
48x76848768Tidak ada
128x15001281500Tidak ada
24x120x1l40s241201 L40S
20x320x2a100203202 A100
80x1200x8a1008012008 A100
160x1792x8h10016017928 H100

ID profile berbentuk {cpu}x{memory}, dengan memori dalam GB, atau {cpu}x{memory}x{count}{gpu} untuk profile dengan GPU. Misalnya, 24x120x1l40s punya 24 vCPU, memori 120 GB, dan satu GPU NVIDIA L40S.

Cek profile yang tersedia​

Untuk melihat profile apa saja yang tersedia, panggil 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)

Cari profile berdasarkan sumber dayanya​

Alih-alih mengetik ID profile, kamu bisa mendeskripsikan sumber daya yang dibutuhkan workflow dengan compute_profile(), lalu memakai hasilnya sebagai nilai di sizes_map. Kirim cpu dan memory dalam GB, dan kirim gpu untuk 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 menerima ID profile dan profile yang dikembalikan compute_profile(), dan kamu bisa mencampur keduanya dalam satu map. Untuk mengecek ID profile sebelum mengunggah, kirim ke compute_profile(), misalnya client.compute_profile("16x128"). Kalau tidak ada profile yang cocok, error-nya mendaftarkan profile yang tersedia.

compute_profiles() mengembalikan sebuah list, jadi kamu juga bisa memfilternya sendiri. Misalnya, kode berikut menemukan profile GPU:

run_workflow_remotely.ipynb

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

Tetapkan compute profile default untuk workflow kamu​

Kebanyakan workflow mulai dengan satu ukuran. Petakan ke profile dengan sizes_map, dan jadikan default dengan default_size, saat kamu mengunggah 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",
)
)

Setiap run workflow memakai profile ini, jadi kamu tidak perlu mengirim ukuran saat menjalankannya:

run_workflow_remotely.ipynb

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

Praktik terbaik: sesuaikan ukuran dengan besar masalah​

Sebuah workflow menyelesaikan masalah tertentu, dan mungkin butuh compute profile yang berbeda seiring masalahnya membesar dan makin kompleks. Dengan sizes_map untuk setiap workflow, kamu bisa melakukan hal berikut:

  • Beri masalah besar sumber daya komputasi yang cukup supaya bisa selesai.

  • Cegah masalah kecil memakai node yang lebih besar dari yang dibutuhkan.

Kamu bisa mendasarkan ukuran pada faktor yang menentukan pemakaian memori dan CPU workflow, seperti ukuran subruang, jumlah batch, atau jumlah qubit.

Tentukan ukurannya​

Kamu bisa memetakan hingga empat ukuran, untuk masalah kecil (S), sedang (M), besar (L), dan sangat besar (XL). Misalnya, kode berikut mendefinisikan workflow dengan tiga ukuran:

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",
)
)

Aturan ukuran​

Label ukuran harus S, M, L, atau XL, jadi sebuah workflow bisa mendefinisikan hingga empat ukuran. Managed workflow mencocokkan label dalam huruf besar maupun kecil, dan menyimpannya dalam huruf besar. Dua ukuran boleh dipetakan ke profile yang sama.

Workflow menolak unggahan pertama dalam kasus berikut:

  • Sebuah label bukan S, M, L, atau XL.

  • Kamu menetapkan sizes_map tanpa default_size, atau default_size tanpa sizes_map.

  • default_size bukan salah satu label di sizes_map.

  • Sebuah nilai di sizes_map bukan compute profile yang tersedia.

Ubah ukuran saat mengunggah ulang​

Saat kamu mengunggah workflow lagi dengan title yang sama, managed workflow menangani ukurannya seperti berikut:

  • Kalau kamu menetapkan sizes_map, ukuran baru menggantikan semua ukuran yang tersimpan.

  • Kalau kamu tidak menyertakan sizes_map, workflow mempertahankan ukuran dan default yang tersimpan.

  • Untuk mengubah default saja, tetapkan default_size tanpa sizes_map. Nilai default_size harus salah satu ukuran yang tersimpan.

Tetapkan default_size setiap kali kamu menetapkan sizes_map. Unggah ulang tidak mewajibkan default_size. Kalau ukuran baru tidak menyertakan default lama, workflow tidak punya default, dan setiap run tanpa function_size gagal.

Pilih ukuran untuk setiap run​

Kirim function_size ke run() untuk memilih salah satu ukuran workflow bagi job itu. Kalau kamu tidak menyertakannya, job memakai ukuran default 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() dan get_default_size() mengembalikan ukuran yang tersimpan saat kamu memuat workflow. Untuk melihat ukuran yang berubah setelah kamu memuat workflow, muat lagi.

Untuk membaca ukuran dan compute profile job, panggil get_function_size() dan get_compute_profile() di kode workflow kamu:

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'

Atasi masalah ukuran​

MasalahPenyebab
Unggahan gagal dengan Invalid size '...'. Valid sizes are: S, M, L, XL.Sebuah label di sizes_map bukan salah satu dari empat label yang didukung.
Unggahan gagal dengan Unknown compute profile '...' for size '...'.Sebuah nilai di sizes_map bukan profile yang tersedia. Cek ID-nya dengan compute_profiles(), atau pakai compute_profile() untuk mencarinya.
compute_profile() gagal dengan No compute profile matches ...Tidak ada profile dengan sumber daya persis seperti itu. Untuk profile GPU, kirim juga gpu. Pilih profile dari daftar di error.
Unggahan gagal dengan 'default_size' is required when 'sizes' is provided.Unggahan pertama menetapkan sizes_map tanpa default_size.
run() gagal dengan Unknown function size '...' for this function. Available sizes: ...Workflow tidak mendefinisikan ukuran yang kamu kirim ke function_size.
run() gagal dengan This function has no size.Unggah ulang menggantikan ukuran dan menghapus default. Unggah lagi dengan default_size, atau kirim function_size.