Přeskočit na hlavní obsah
Tento projekt je v betě. Našel jsi chybu? Otevřít issue na GitHubu. Máš otázku nebo nápad? Zeptej se v Discussions — rádi si poslechneme tvou zpětnou vazbu!
Jaká je kvalita překladu na této stránce?

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čí.

ProfilvCPUPaměť (GB)GPU
8x32832Žádné
16x12816128Žádné
48x76848768Žádné
128x15001281500Žádné
24x120x1l40s241201 L40S
20x320x2a100203202 A100
80x1200x8a1008012008 A100
160x1792x8h10016017928 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, L ani XL.

  • Nastavíš sizes_map bez default_size nebo default_size bez sizes_map.

  • default_size není jedním ze štítků v sizes_map.

  • Hodnota v sizes_map není 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_map vynecháš, workflow zachová uložené velikosti i výchozí.

  • Chceš-li změnit pouze výchozí velikost, nastav default_size bez sizes_map. Hodnota default_size musí 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émPříč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.