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
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=trueurč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í úlohouexclusive=falseumožň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