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.
| Profil | vCPU | Memori (GB) | GPU |
|---|---|---|---|
8x32 | 8 | 32 | Tiada |
16x128 | 16 | 128 | Tiada |
48x768 | 48 | 768 | Tiada |
128x1500 | 128 | 1500 | Tiada |
24x120x1l40s | 24 | 120 | 1 L40S |
20x320x2a100 | 20 | 320 | 2 A100 |
80x1200x8a100 | 80 | 1200 | 8 A100 |
160x1792x8h100 | 160 | 1792 | 8 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,LatauXL. -
Anda menetapkan
sizes_maptanpadefault_size, ataudefault_sizetanpasizes_map. -
default_sizebukan salah satu label dalamsizes_map. -
Nilai dalam
sizes_mapbukan 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_sizetanpasizes_map. Nilaidefault_sizemestilah 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
| Masalah | Punca |
|---|---|
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. |