Vyber výpočetní profil
Spravované workflow běží na výpočetních profilech. Výpočetní profil je pevná kombinace vCPU, paměti a GPU, podobná zdrojům, které žádáš od plánovače HPC. Když nahraješ workflow, namapuješ jeho velikosti, například S a M, na profily a každý běh si vybere jednu z těchto velikostí. Úloha pak běží na vlastním uzlu s tímto profilem a profil si ponechá, dokud úloha neskončí.
| Profil | vCPU | Paměť (GB) | GPU |
|---|---|---|---|
8x32 | 8 | 32 | Žádné |
16x128 | 16 | 128 | Žádné |
48x768 | 48 | 768 | Žádné |
128x1500 | 128 | 1500 | Žádné |
24x120x1l40s | 24 | 120 | 1 L40S |
20x320x2a100 | 20 | 320 | 2 A100 |
80x1200x8a100 | 80 | 1200 | 8 A100 |
160x1792x8h100 | 160 | 1792 | 8 H100 |
ID profilu má tvar {cpu}x{memory}, kde paměť je v GB, nebo {cpu}x{memory}x{count}{gpu} u profilu s GPU. Například 24x120x1l40s má 24 vCPU, 120 GB paměti a jednu GPU NVIDIA L40S.
Zkontroluj dostupné profily
Chceš-li zjistit, které profily jsou dostupné, zavolej 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)
Najdi profil podle jeho zdrojů
Místo zadávání ID profilu můžeš popsat zdroje, které tvůj workflow potřebuje, pomocí compute_profile() a použít výsledek jako hodnotu v sizes_map. Předej cpu a memory v GB a pro profil s GPU předej 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 přijímá ID profilů i profily, které vrací compute_profile(), a v jedné mapě můžeš obojí kombinovat. Chceš-li ID profilu zkontrolovat před nahráním, předej ho do compute_profile(), například client.compute_profile("16x128"). Pokud žádný profil neodpovídá, chyba vypíše dostupné profily.
compute_profiles() vrací seznam, takže ho můžeš také sám filtrovat. Například následující kód najde profily s GPU:
run_workflow_remotely.ipynb
gpu_profiles = [p for p in client.compute_profiles() if p.gpu]
Nastav výchozí výpočetní profil pro svůj workflow
Většina workflow začíná s jednou velikostí. Při nahrávání workflow ji namapuj na profil pomocí sizes_map a pomocí default_size ji nastav jako výchozí:
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",
)
)
Každý běh workflow používá tento profil, takže při jeho spuštění nemusíš předávat velikost:
run_workflow_remotely.ipynb
job = my_workflow.run(circuits=circuits) # Runs on 16x128
Osvědčený postup: přizpůsob velikosti velikostem problémů
Workflow řeší konkrétní problémy a s rostoucím rozsahem a složitostí problémů může vyžadovat různé výpočetní profily. S sizes_map pro každý workflow můžeš provést následující:
-
Dej velkým problémům dostatek výpočetních zdrojů, aby doběhly do konce.
-
Zabraň tomu, aby malé problémy používaly větší uzel, než potřebují.
Velikosti můžeš odvodit od faktorů, které určují využití paměti a CPU tvého workflow, například od velikosti podprostoru, počtu batchů nebo počtu qubitů.
Definuj velikosti
Můžeš namapovat až čtyři velikosti pro malé (S), střední (M), velké (L) a extra velké (XL) problémy. Například následující kód definuje workflow se třemi velikostmi:
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",
)
)
Pravidla pro velikosti
Štítky velikostí musí být S, M, L nebo XL, takže workflow může definovat až čtyři velikosti. Spravovaný workflow přijímá štítky velkými i malými písmeny a ukládá je velkými. Dvě velikosti mohou odkazovat na stejný profil.
Workflow odmítne první nahrání v následujících případech:
-
Štítek není
S,M,LaniXL. -
Nastavíš
sizes_mapbezdefault_sizenebodefault_sizebezsizes_map. -
default_sizenení jedním ze štítků vsizes_map. -
Hodnota v
sizes_mapnení dostupný výpočetní profil.
Změň velikosti při opakovaném nahrání
Když nahraješ workflow znovu se stejným title, spravovaný workflow zachází s velikostmi následovně:
-
Pokud nastavíš
sizes_map, nové velikosti nahradí všechny uložené velikosti. -
Pokud
sizes_mapvynecháš, workflow zachová uložené velikosti i výchozí. -
Chceš-li změnit pouze výchozí velikost, nastav
default_sizebezsizes_map. Hodnotadefault_sizemusí být jednou z uložených velikostí.
Nastav default_size pokaždé, když nastavuješ sizes_map. Opakované nahrání default_size nevyžaduje. Pokud nové velikosti neobsahují původní výchozí, workflow nemá žádnou výchozí velikost a každý běh bez function_size selže.
Zvol velikost pro každý běh
Předej function_size do run(), abys pro danou úlohu zvolil jednu z velikostí workflow. Pokud ho vynecháš, úloha použije výchozí velikost 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() a get_default_size() vracejí velikosti, které byly uloženy při načtení workflow. Chceš-li vidět velikosti, které se změnily po načtení workflow, načti ho znovu.
Chceš-li přečíst velikost a výpočetní profil úlohy, zavolej ve kódu svého workflow get_function_size() a get_compute_profile():
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'
Řešení potíží s velikostmi
| Problém | Příčina |
|---|---|
Nahrání selže s Invalid size '...'. Valid sizes are: S, M, L, XL. | Štítek v sizes_map není jedním ze čtyř podporovaných štítků. |
Nahrání selže s Unknown compute profile '...' for size '...'. | Hodnota v sizes_map není dostupný profil. Zkontroluj ID pomocí compute_profiles() nebo ho vyhledej pomocí compute_profile(). |
compute_profile() selže s No compute profile matches ... | Žádný profil nemá přesně tyto zdroje. U profilu s GPU předej také gpu. Vyber profil ze seznamu v chybě. |
Nahrání selže s 'default_size' is required when 'sizes' is provided. | První nahrání nastavuje sizes_map bez default_size. |
run() selže s Unknown function size '...' for this function. Available sizes: ... | Workflow nedefinuje velikost, kterou jsi předal do function_size. |
run() selže s This function has no size. | Opakované nahrání nahradilo velikosti a odstranilo výchozí. Nahraj znovu s default_size nebo předej function_size. |