Panduan pengguna plugin SPANK
Plugin SPANK untuk Quantum Resource Management Interface (QRMI) digunakan untuk mengkonfigurasi akses kepada sumber kuantum daripada kerja pengguna dalam persekitaran pengkomputeran yang ditadbir oleh pengurus beban kerja Slurm. Ini ialah panduan untuk pengguna plugin mengkonfigurasi peruntukan sumber QPU semasa mencipta kerja Slurm.
Definisi sumber QPU Slurm menentukan sumber fizikal yang boleh digunakan oleh kerja Slurm dalam persekitaran pengkomputeran berprestasi tinggi (HPC). Kod sumber pengguna sepatutnya tidak bergantung pada contoh Backend tertentu, malah jenis Backend jika boleh. Ini memastikan kod sumber mudah alih sementara kriteria pemilihan QPU adalah sebahagian daripada definisi sumber (yang dianggap sebagai konfigurasi dan bukan kod sumber).
Konfigurasi sumber QPU dalam penciptaan kerja​
Perhatikan bahawa plugin ini sedang dalam pembangunan aktif dan sintaks tepat boleh berubah.
Skop pentadbir​
Pentadbir HPC mengkonfigurasi plugin SPANK untuk menentukan sumber fizikal yang boleh diberikan kepada kerja Slurm. Konfigurasi ini mengandungi semua maklumat yang diperlukan supaya kerja Slurm boleh mengakses sumber fizikal, seperti titik akhir dan kelayakan akses.
Baca qrmi_config.json.example untuk contoh konfigurasi yang komprehensif.
Dalam slurm.conf, sumber QPU boleh diberikan kepada sebahagian atau semua nod untuk digunakan:
...
GresTypes=qpu,name
NodeName=node[1-5000] Gres=qpu,name:ibm_fez
...
Skop pengguna​
Pengguna HPC menghantar kerja menggunakan sumber QPU yang dikaitkan dengan sumber QPU Slurm. Atribut nama merujuk kepada apa yang telah ditakrifkan oleh pentadbir HPC. Semasa masa jalan kerja Slurm, pemilihan Backend boleh berdasarkan kriteria selain nama yang telah ditetapkan yang merujuk kepada Backend tertentu (contohnya, menggunakan kelayakan kapasiti dan kadar ralat, untuk membantu memilih daripada set Backend yang ditakrifkan).
Mungkin ada pemboleh ubah persekitaran tambahan yang diperlukan, bergantung pada jenis Backend.
Parameter SBATCH akan menunjuk kepada satu atau lebih sumber QPU yang diberikan kepada aplikasi sebagai sumber generik.
Pemboleh ubah persekitaran yang disediakan melalui plugin akan menyediakan maklumat yang diperlukan kepada aplikasi (lihat bahagian Skop aplikasi HPC untuk butiran).
#SBATCH --time=100
#SBATCH --output=<LOGS_PATH>
#SBATCH --gres=qpu:1
#SBATCH --qpu=ibm_fez
#SBATCH --... # other options
srun ...
Untuk menggunakan lebih banyak sumber QPU, tambahkan lebih banyak QPU pada parameter --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 ...
Skop aplikasi HPC​
Aplikasi HPC menggunakan sumber QPU Slurm yang diberikan kepada kerja Slurm.
Pemboleh ubah persekitaran memberikan butiran lanjut untuk digunakan oleh aplikasi; contohnya, SLURM_JOB_QPU_RESOURCES menyenaraikan nama sumber kuantum (dipisahkan koma jika beberapa diberikan).
Pemboleh ubah ini akan digunakan oleh QRMI. (Lihat fail README dalam pelbagai direktori QRMI (IBM, pasqal) untuk butiran lanjut.)
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()))
Lihat direktori contoh untuk fail contoh.
Spesifik Backend​
API Akses Langsung IBM​
Skop pentadbir​
Konfigurasi Backend API Akses Langsung (skop pentadbir HPC) termasuk titik akhir dan kelayakan kepada titik akhir Akses Langsung dan perkhidmatan pengesahan, serta titik akhir S3. Secara khusus, ini termasuk:
- Kunci API IBM Cloud® untuk mencipta token pembawa
- Titik akhir API Akses Langsung
- Baldi S3 dan butiran akses
Kelayakan akses tidak sepatutnya kelihatan kepada pengguna HPC atau pengguna bukan istimewa lain pada sistem. Oleh itu, data sensitif boleh diletakkan dalam fail berasingan, yang boleh dilindungi dengan sewajarnya.
Perhatikan bahawa Slurm mempunyai akses penuh kepada Backend. Ini mempunyai beberapa implikasi:
- Plugin Slurm bertanggungjawab untuk multi-tenancy (memastikan pengguna tidak melihat keputusan kerja pengguna lain)
- Pihak kluster HPC bertanggungjawab untuk menyaring pengguna (siapa yang dibenarkan mengakses QPU) dan memastikan akses yang sesuai
- Kapasiti dan keutamaan penggunaan QPU diurus sepenuhnya melalui Slurm; tiada penjadualan pengguna lain di luar Slurm
Skop pengguna​
Lorong pelaksanaan tidak dedahkan kepada pentadbir atau pengguna HPC secara langsung. Sebaliknya, semasa masa jalan, terdapat dua mod berbeza yang boleh ditentukan oleh pengguna HPC:
exclusive=truemenentukan bahawa tiada kerja lain boleh menggunakan sumber pada masa yang sama. Kerja mod eksklusif mendapat semua lorong pelaksanaan dan tidak boleh berjalan pada masa yang sama dengan kerja bukan eksklusifexclusive=falsemembenarkan kerja lain berjalan secara selari. Dalam kes ini, boleh ada seberapa banyak kerja sebanyak terdapat lorong pelaksanaan, semua berjalan pada masa yang sama, dan kerja diberikan satu lorong
Perkhidmatan Qiskit Runtime​
Skop pengguna​
Dijangkakan bahawa pengguna menentukan butiran akses tambahan dalam pemboleh ubah persekitaran. Secara khusus, ini termasuk yang berikut:
- Contoh perkhidmatan Qiskit Runtime (CRN, Cloud Resource Name)
- Titik akhir untuk Qiskit Runtime (kecuali dikesan secara automatik daripada CRN)
- Kunci API, yang mempunyai akses kepada CRN
- Contoh S3, baldi, dan token akses/kelayakan untuk pemindahan data
Butiran ini menentukan di bawah pengguna dan contoh perkhidmatan mana Qiskit Runtime digunakan. Dengan demikian, penjadualan IBM Quantum® Platform mempertimbangkan keupayaan pengguna dan contoh perkhidmatan untuk penjadualan.
Pada masa ini, pengguna mesti menyediakan butiran di atas (tiada akses kuantum bersama seluruh kluster).
Perkhidmatan Awan Pasqal​
Skop pentadbir HPC​
Tiada persediaan khusus yang diperlukan daripada pentadbir HPC untuk penggunaan PCS.
Skop pengguna HPC​
Dijangkakan bahawa pengguna menentukan butiran akses tambahan dalam pemboleh ubah persekitaran. Pada masa ini, ini termasuk yang berikut:
- Sumber PCS untuk disasarkan (FRESNEL, EMU_FRESNEL, EMU_MPS)
- Token kebenaran