Langkau ke kandungan utama
Projek ini dalam fasa beta. Jumpa pepijat? Buat isu GitHub. Ada soalan atau idea? Tanya dalam Discussions — kami suka dengar maklum balas anda!
Bagaimana kualiti terjemahan pada halaman ini?

Pilih profil pengkomputeran

Aliran kerja terurus berjalan pada profil pengkomputeran. Profil pengkomputeran ialah gabungan tetap vCPU, memori dan GPU, serupa dengan sumber yang anda minta daripada penjadual HPC. Apabila anda memuat naik aliran kerja, anda memetakan saiznya, seperti S dan M, kepada profil, dan setiap larian memilih salah satu saiz itu. Job kemudian berjalan pada nodnya sendiri dengan profil tersebut, dan mengekalkan profil itu sehingga job tamat.

ProfilvCPUMemori (GB)GPU
8x32832Tiada
16x12816128Tiada
48x76848768Tiada
128x15001281500Tiada
24x120x1l40s241201 L40S
20x320x2a100203202 A100
80x1200x8a1008012008 A100
160x1792x8h10016017928 H100

ID profil berbentuk {cpu}x{memory}, dengan memori dalam GB, atau {cpu}x{memory}x{count}{gpu} bagi profil yang mempunyai GPU. Contohnya, 24x120x1l40s mempunyai 24 vCPU, 120 GB memori dan satu GPU NVIDIA L40S.

Semak profil yang tersedia​

Untuk melihat profil 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 profil mengikut sumbernya​

Daripada menaip ID profil, anda boleh menerangkan sumber yang diperlukan oleh aliran kerja anda dengan compute_profile(), dan menggunakan hasilnya sebagai nilai dalam sizes_map. Hantar cpu dan memory dalam GB, dan hantar gpu bagi profil 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 profil dan profil yang dikembalikan oleh compute_profile(), dan anda boleh mencampurkan kedua-duanya dalam satu peta. Untuk menyemak ID profil sebelum anda memuat naik, hantarnya kepada compute_profile(), contohnya client.compute_profile("16x128"). Jika tiada profil yang sepadan, ralat itu menyenaraikan profil yang tersedia.

compute_profiles() mengembalikan senarai, jadi anda juga boleh menapisnya sendiri. Contohnya, kod berikut mencari profil GPU:

run_workflow_remotely.ipynb

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

Tetapkan profil pengkomputeran lalai untuk aliran kerja anda​

Kebanyakan aliran kerja bermula dengan satu saiz. Petakan ia kepada profil dengan sizes_map, dan jadikannya lalai dengan default_size, apabila anda memuat naik aliran kerja:

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 larian aliran kerja menggunakan profil ini, jadi anda tidak perlu menghantar saiz apabila anda menjalankannya:

run_workflow_remotely.ipynb

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

Amalan terbaik: padankan saiz dengan saiz masalah​

Aliran kerja menyelesaikan masalah tertentu, dan ia mungkin memerlukan profil pengkomputeran yang berbeza apabila skala dan kerumitan masalah bertambah. Dengan sizes_map bagi setiap aliran kerja, anda boleh melakukan perkara berikut:

  • Berikan masalah besar sumber pengkomputeran yang mencukupi untuk berjalan sehingga selesai.

  • Elakkan masalah kecil menggunakan nod yang lebih besar daripada yang diperlukan.

Anda boleh mendasarkan saiz pada faktor yang menentukan penggunaan memori dan CPU aliran kerja anda, seperti saiz subruang, bilangan batch, atau bilangan qubit.

Tentukan saiz​

Anda boleh memetakan sehingga empat saiz, untuk masalah kecil (S), sederhana (M), besar (L) dan sangat besar (XL). Contohnya, kod berikut mentakrifkan aliran kerja dengan tiga saiz:

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

Peraturan saiz​

Label saiz mestilah S, M, L atau XL, jadi aliran kerja boleh mentakrifkan sehingga empat saiz. Aliran kerja terurus memadankan label dalam huruf besar atau huruf kecil, dan menyimpannya dalam huruf besar. Dua saiz boleh dipetakan kepada profil yang sama.

Aliran kerja menolak muat naik pertama dalam kes berikut:

  • Label bukan S, M, L atau XL.

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

  • default_size bukan salah satu label dalam sizes_map.

  • Nilai dalam sizes_map bukan profil pengkomputeran yang tersedia.

Ubah saiz semasa muat naik semula​

Apabila anda memuat naik aliran kerja sekali lagi dengan title yang sama, aliran kerja terurus mengendalikan saiz seperti berikut:

  • Jika anda menetapkan sizes_map, saiz baharu menggantikan semua saiz yang tersimpan.

  • Jika anda tidak menyertakan sizes_map, aliran kerja mengekalkan saiz yang tersimpan dan lalai.

  • Untuk mengubah lalai sahaja, tetapkan default_size tanpa sizes_map. Nilai default_size mestilah salah satu saiz yang tersimpan.

Tetapkan default_size setiap kali anda menetapkan sizes_map. Muat naik semula tidak memerlukan default_size. Jika saiz baharu tidak termasuk lalai lama, aliran kerja tidak mempunyai lalai, dan setiap larian tanpa function_size gagal.

Pilih saiz bagi setiap larian​

Hantar function_size kepada run() untuk memilih salah satu saiz aliran kerja bagi job itu. Jika anda tidak menyertakannya, job menggunakan saiz lalai aliran kerja:

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 saiz yang disimpan semasa anda memuatkan aliran kerja. Untuk melihat saiz yang berubah selepas anda memuatkan aliran kerja, muatkannya sekali lagi.

Untuk membaca saiz dan profil pengkomputeran job, panggil get_function_size() dan get_compute_profile() dalam kod aliran kerja anda:

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'

Selesaikan masalah saiz​

MasalahPunca
Muat naik gagal dengan Invalid size '...'. Valid sizes are: S, M, L, XL.Label dalam sizes_map bukan salah satu daripada empat label yang disokong.
Muat naik gagal dengan Unknown compute profile '...' for size '...'.Nilai dalam sizes_map bukan profil yang tersedia. Semak ID dengan compute_profiles(), atau gunakan compute_profile() untuk mencarinya.
compute_profile() gagal dengan No compute profile matches ...Tiada profil yang mempunyai sumber tepat seperti itu. Bagi profil GPU, hantar juga gpu. Pilih profil daripada senarai dalam ralat.
Muat naik gagal dengan 'default_size' is required when 'sizes' is provided.Muat naik pertama menetapkan sizes_map tanpa default_size.
run() gagal dengan Unknown function size '...' for this function. Available sizes: ...Aliran kerja tidak mentakrifkan saiz yang anda hantar kepada function_size.
run() gagal dengan This function has no size.Muat naik semula menggantikan saiz dan membuang lalai. Muat naik semula dengan default_size, atau hantar function_size.