Přeskočit na hlavní obsah

Uživatelský průvodce SPANK pluginem

SPANK plugin pro Quantum Resource Management Interface (QRMI) slouží ke konfiguraci přístupu ke kvantovým zdrojům z uživatelských úloh ve výpočetním prostředí spravovaném správcem úloh Slurm. Tento průvodce je určen uživatelům pluginu a popisuje, jak konfigurovat přidělování zdrojů QPU při vytváření Slurm úloh.

Definice zdrojů QPU ve Slurmn určují, jaké fyzické zdroje mohou Slurm úlohy v prostředí vysokovýkonných výpočtů (HPC) využívat. Zdrojový kód uživatele by měl být nezávislý na konkrétních instancích Backend, a pokud možno i na typech Backend. Díky tomu zůstává zdrojový kód přenositelný, zatímco kritéria výběru QPU jsou součástí definice zdrojů (která se považuje spíše za konfiguraci než za zdrojový kód).

Konfigurace zdrojů QPU při vytváření úlohy

pozor

Upozorňujeme, že tento plugin je aktivně vyvíjen a přesná syntaxe se může změnit.

Rozsah správce

HPC administrátoři konfigurují SPANK plugin tak, aby určili, jaké fyzické zdroje mohou být poskytnuty Slurm úlohám. Tato konfigurace obsahuje veškeré informace potřebné k tomu, aby Slurm úlohy měly přístup k fyzickým zdrojům, jako jsou koncové body a přístupové přihlašovací údaje.

Prohlédni si qrmi_config.json.example pro komplexní ukázkovou konfiguraci.

V souboru slurm.conf lze přiřadit zdroje QPU některým nebo všem uzlům pro jejich využití:

...
GresTypes=qpu,name
NodeName=node[1-5000] Gres=qpu,name:ibm_fez
...

Rozsah uživatele

Uživatelé HPC odesílají úlohy využívající zdroje QPU, které jsou svázány se zdroji QPU definovanými ve Slurmn. Atribut name odkazuje na to, co definoval HPC administrátor. Během běhu Slurm úlohy může být výběr Backend založen na jiných kritériích, než je předdefinovaný název odkazující na konkrétní Backend (například podle kapacity a kvalifikátorů chybovosti, které pomáhají zúžit výběr z definované sady Backend).

Mohou být vyžadovány další proměnné prostředí, v závislosti na typu Backend.

Parametry SBATCH budou odkazovat na jeden nebo více zdrojů QPU přiřazených aplikaci jako generické zdroje. Proměnné prostředí poskytované prostřednictvím pluginu dodají aplikaci potřebné informace (podrobnosti viz sekce Rozsah HPC aplikace).

#SBATCH --time=100
#SBATCH --output=<LOGS_PATH>
#SBATCH --gres=qpu:1
#SBATCH --qpu=ibm_fez
#SBATCH --... # other options

srun ...

Chceš-li využít více zdrojů QPU, přidej další QPU do parametru --qpu:

#SBATCH --time=100
#SBATCH --output=<LOGS_PATH>
#SBATCH --gres=qpu:3
#SBATCH --qpu=my_local_qpu,ibm_fez,ibm_marrakesh
#SBATCH --... # other options

srun ...

Rozsah HPC aplikace

HPC aplikace využívají zdroje QPU přiřazené Slurm úloze.

Proměnné prostředí poskytují další podrobnosti pro použití aplikací; například SLURM_JOB_QPU_RESOURCES uvádí názvy kvantových zdrojů (oddělené čárkami, pokud je jich více). Tyto proměnné bude využívat QRMI. (Více podrobností najdeš v souborech README v různých adresářích QRMI (IBM, pasqal).)

from qiskit import QuantumCircuit
# Using an IBM QRMI flavor:
from qrmi.primitives import QRMIService
from qrmi.primitives.ibm import SamplerV2, get_backend

# define circuit

circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all()

# instantiate QRMI service and get quantum resource (we'll take the first one should there be several of them)
# inject credentials needed for accessing the service at this point
load_dotenv()
service = QRMIService()

resources = service.resources()
qrmi = resources[0]

# Generate transpiler target from backend configuration & properties and transpile
backend = get_backend(qrmi)
pm = generate_preset_pass_manager(
optimization_level=1,
backend=backend,
)

isa_circuit = pm.run(circuit)

# Run the circuit
options = {}
sampler = SamplerV2(qrmi, options=options)

job = sampler.run([(isa_circuit, isa_observable, param_values)])
print(f">>> Job ID: {job.job_id()}")

result = job.result()

if job.done():
pub_result = result[0]
print(f"Counts for the 'meas' output register: {pub_result.data.meas.get_counts()}")
elif job.cancelled():
print("Cancelled")
elif job.errored():
print(qrmi.task_logs(job.job_id()))

Příklady najdeš v adresáři s ukázkami.

Specifika Backend

IBM Direct Access API

Rozsah správce

Konfigurace Backend s Direct Access API (rozsah HPC admina) zahrnuje koncové body a přihlašovací údaje ke koncovému bodu Direct Access a autentizačním službám, jakož i ke koncovému bodu S3. Konkrétně to zahrnuje:

  • API klíč IBM Cloud® pro vytváření nosných tokenů (bearer tokens)
  • Koncový bod Direct Access API
  • S3 bucket a přístupové údaje

Přístupové přihlašovací údaje by neměly být viditelné pro uživatele HPC ani jiné neprivilegované uživatele systému. Proto lze citlivá data uložit do samostatných souborů, které lze odpovídajícím způsobem chránit přístupovými oprávněními.

Upozorňujeme, že Slurm má plný přístup k Backend. To má několik důsledků:

  • Slurm plugin je zodpovědný za multi-tenancy (zajišťuje, že uživatelé nevidí výsledky úloh jiných uživatelů)
  • Strana HPC clusteru je zodpovědná za prověřování uživatelů (kdo má povolen přístup k QPU) a za zajištění odpovídajícího přístupu
  • Kapacita a priorita využití QPU je spravována výhradně prostřednictvím Slurm; mimo Slurm neprobíhá žádné jiné plánování uživatelů
Rozsah uživatele

Prováděcí linky (execution lanes) nejsou HPC administrátorovi ani uživateli přímo zpřístupněny. Místo toho mohou být za běhu k dispozici dva různé režimy, které mohou uživatelé HPC nastavit:

  • exclusive=true určuje, že žádná jiná úloha nemůže zdroj využívat ve stejnou dobu. Úloha v exkluzivním režimu získá všechny prováděcí linky a nemůže běžet současně s neexkluzivní úlohou
  • exclusive=false umožňuje souběžné spuštění jiných úloh. V tom případě může běžet tolik úloh, kolik je prováděcích linek, všechny zároveň, přičemž každé úloze je přiřazena jedna linka

Qiskit Runtime Service

Rozsah uživatele

Očekává se, že uživatelé zadají další přístupové údaje v proměnných prostředí. Konkrétně to zahrnuje:

  • Instanci služby Qiskit Runtime (CRN, Cloud Resource Name)
  • Koncový bod pro Qiskit Runtime (pokud není automaticky detekován z CRN)
  • API klíč s přístupem k CRN
  • Instanci S3, bucket a přístupový token/přihlašovací údaje pro přenos dat

Tyto údaje určují, pod jakým uživatelem a instancí služby je Qiskit Runtime Service využívána. Plánování IBM Quantum® Platform proto zohledňuje možnosti uživatele a instance služby.

V tuto chvíli musí uživatelé výše uvedené údaje poskytnout sami (sdílený přístup ke kvantovým zdrojům v rámci celého clusteru není k dispozici).

Pasqal Cloud Services

Rozsah HPC admina

Pro využívání PCS není ze strany HPC adminů vyžadováno žádné specifické nastavení.

Rozsah uživatele HPC

Očekává se, že uživatelé zadají další přístupové údaje v proměnných prostředí. V současné době to zahrnuje:

  • Cílový PCS zdroj (FRESNEL, EMU_FRESNEL, EMU_MPS)
  • Autorizační token