-
Kvanttitöiden ajaminen
Q20-palvelu MyCSC:ssä
Q20-palvelussa on tällä hetkellä joitakin ongelmia projekteissa, joilla on Q20-allokaatioita. Jos et löydä Aalto-Q20-palvelua tai kohtaat muita ongelmia, ota yhteyttä CSC:n asiakastukeen osoitteessa servicedesk@csc.fi.
Ajaminen Q20:llä ja Q50:llä
Tällä hetkellä Q20 ja Q50 tukevat töiden lähettämistä Qiskitin tai Cirqin avulla. Nämä skriptit on lähetettävä tavallisina Python-tiedostoina.
Jos haluat ajaa töitä kvanttitietokoneilla, määritä oikea ympäristö LUMIssa seuraavien vaiheiden avulla:
Laitekohtaiset arvot
Tämän sivun esimerkeissä käytetään paikkamerkkejä <DEVICE_VALUE>, <QUANTUM_COMPUTER_ID> ja <CORTEX_URL>. Korvaa ne kohdelaitteesi ajonaikaisilla tunnisteilla, jotka on lueteltu kohdassa "Runtime identifiers" sivulla Aalto Q20 tai VTT Q50.
Info
Suorita nämä komennot joko eräajokomentosarjassasi tai interaktiivisessa istunnossa, joka on käynnistetty komennolla srun
-
Lisää moduulipolku, jotta järjestelmä löytää saatavilla olevat moduulit:
module use /appl/local/quantum/modulefilestaimodule load Local-quantum -
Lataa kehystä vastaava ympäristömoduuli:
- Qiskitille:
module load fiqci-vtt-qiskit - Cirqille:
module load fiqci-vtt-cirq
- Qiskitille:
Moduulit fiqci-vtt-qiskit ja fiqci-vtt-cirq tarjoavat valmiiksi määritetyt Python-ympäristöt töiden ajamiseen kvanttitietokoneilla.
Oman Python-ympäristön luominen
Jos haluat käyttää mukautettua Python-ympäristöä moduulien fiqci-vtt-qiskit/fiqci-vtt-cirq sijaan, voit rakentaa oman säiliösi käyttämällä LUMI container wrapper -työkalua.
Jotta voit käyttää mukautettua säiliötäsi kvanttitietokoneiden kanssa, lataa sen rinnalle moduuli fiqci-vtt-standard:
module use /appl/local/quantum/modulefiles
module load fiqci-vtt-standard
module load custom_python_module
Moduulin fiqci-vtt-standard lataaminen antaa säiliöllesi pääsyn ympäristömuuttujaan $RUN_SETUP, jota käytetään tällä sivulla kauttaaltaan (esim. source $RUN_SETUP) laitteen yhteyden määrittämiseen.
Tuetut ohjelmistoversiot
Tällä hetkellä tuetut ohjelmistoversiot ovat:
| Software | LUMI_Module_name | Versions |
|---|---|---|
| IQM client | fiqci-vtt-qiskit/fiqci-vtt-cirq | ≥ 34.0.0, < 35.0.0 |
Työn lähettäminen
Tässä on esimerkkieräajokomentosarja kvanttityön lähettämiseen. Korvaa <DEVICE_VALUE> laitteesi tunnisteella tai tunnisteilla, katso yllä oleva huomautus.
#!/bin/bash
#SBATCH --job-name=quantumjob # Job name
#SBATCH --account=project_<id> # Project for billing (slurm_job_account)
#SBATCH --partition=standard # Partition (queue) name
#SBATCH --ntasks=1 # One task (process)
#SBATCH --mem-per-cpu=2G # memory allocation
#SBATCH --cpus-per-task=1 # Number of cores (threads)
#SBATCH --time=00:05:00 # Run time (hh:mm:ss)
module use /appl/local/quantum/modulefiles
# uncomment the correct line:
# module load fiqci-vtt-qiskit
# or
# module load fiqci-vtt-cirq
export DEVICES=("<DEVICE_VALUE>")
source $RUN_SETUP
python your_python_script.py
Eräajokomentosarjan voi sitten lähettää komennolla sbatch. Voit myös lähettää interaktiivisia töitä komennolla srun.
module use /appl/local/quantum/modulefiles
module --ignore_cache load "fiqci-vtt-qiskit"
export DEVICES=("<DEVICE_VALUE>")
srun --account project_xxx -t 00:15:00 -c 1 -n 1 --partition standard bash -c "source $RUN_SETUP && python your_python_script.py"
Moduuli fiqci-vtt-* määrittää oikean Python-ympäristön Qiskitin tai Cirqin käyttämiseen kvanttitietokoneiden kanssa.
Ajaminen Q50:llä
Kun työ lähetetään Q50:lle, käyttäjän slurm_job_account (projekti, jolla työ ajetaan) yhdistetään project_id-tunnisteeseen, ja tämä tieto siirretään VTT:lle laskutustarkoituksia varten.
Moduulien lataaminen ja tausta-ajurin asettaminen
Lataa Qiskit-moduuli komennolla module load fiqci-vtt-qiskit.
Qiskit Python -skripteissäsi sinun tulee sisällyttää seuraava. Korvaa <CORTEX_URL> ja <QUANTUM_COMPUTER_ID> laitteesi tunnisteilla, katso yllä oleva huomautus.
Lataa Cirq-moduuli komennolla module load fiqci-vtt-cirq. Korvaa <CORTEX_URL> ja <QUANTUM_COMPUTER_ID> laitteesi tunnisteilla, katso yllä oleva huomautus.
Katso täydellinen Python-skripti osiosta ensimmäisen kvanttityösi ajaminen.
Tallenna työsi Job ID!
Huomaa, että tällä hetkellä aiempia Job ID -tunnisteita ei voi listata millään menetelmällä, joten on suositeltavaa tulostaa Job ID aina työn lähettämisen jälkeen ja tallentaa se johonkin! Sama koskee calibration set id:tä.
Lisäesimerkkejä
Lisäesimerkkejä esimerkiksi ylimääräisen työn metadatan kyselyyn löytyy täältä.
Simuloidut testiajot
Koska kvanttiresurssit voivat olla niukkoja, on suositeltavaa valmistella etukäteen koodit ja algoritmit, jotka aiot ajaa kvanttitietokoneilla. Tämän tueksi qiskit-on-iqm tarjoaa fake noise model backendin. Voit ajaa fake noise model backendin paikallisesti omalla kannettavallasi simulointia ja testausta varten.
Saatavilla on myös joukko Qiskit- ja Cirq-esimerkkejä sekä skriptejä kvanttitietokoneiden käytön tueksi. Löydät ne täältä.
Kalibrointidata
Kalibrointidata (tai laatumittaristo) voi olla tarpeen Q20/Q50:llä tuotetun työn julkaisemisessa. Se antaa myös käsityksen kvanttitietokoneiden tämänhetkisestä tilasta. Kalibrointidata on saatavilla FiQCI-sivulla. Lisäksi fiqci-examples-repositoriossa on apuskripti kalibrointidatan hakemiseen manuaalisesti. Skripti löytyy täältä. Tämä tiedosto voidaan lisätä omiin Python-skripteihisi, ja se palauttaa dataa json-muodossa. Huomaa, että uusimman kalibrointidatan kysely voi antaa puutteellisen tai vanhentuneen mittarijoukon. Siksi calibration set ID:t tulisi tallentaa yhdessä Job ID:iden kanssa.
Lyhyt kuvaus kyselyssä annettavista suureista (näytä napsauttamalla)
| Figure | Key | Description | ||
|---|---|---|---|---|
| T1-aika (s) | t1_time |
T1-aikaa kutsutaan pitkittäiseksi relaksaationopeudeksi, ja se kuvaa, kuinka nopeasti kubitin virittynyt tila palaa perustilaansa. | ||
| T2-aika (s) | t2_time |
T2-aikaa kutsutaan poikittaiseksi relaksaationopeudeksi, ja se kuvaa superpositiotilan koherenssin häviämistä. | ||
| T2 echo -aika (s) | t2_echo_time |
T2 echo -aika kuvaa kubitin superpositiotilan koherenssin häviämistä. Se on tarkempi kuin T2-aika, koska se on vähemmän altis matalataajuiselle kohinalle. | ||
| Lukufideliteetti | measure_fidelity_ssro_fidelity |
Tämä kuvaa fideliteettiä, kun suoritetaan kubitin tilan single shot -lukemia. Single-shot-luku valmistaa 50 % kubittitiloista virittyneeseen tilaan ja 50 % perustilaan. | ||
| Single shot -luvun 01-virhe | measure_fidelity_ssro_error_0_to_1 |
Virhe virittyneen tilan ('1') määrittämisessä, kun tila on perustilassa ('0'). | ||
| Single shot -luvun 10-virhe | measure_fidelity_ssro_error_1_to_0 |
Virhe perustilan ('0') määrittämisessä, kun tila on virittyneessä tilassa ('1'). | ||
| Yksikubittisen portin fideliteetti | prx_rb_fidelity |
Tämä lasketaan Randomized Benchmarking -menetelmällä ja kuvaa keskimääräistä porttifideliteettiä, kun satunnainen sarja yksikubittisia Clifford-portteja suoritetaan. | ||
| 2QB Cliffordien keskimääräinen fideliteetti | clifford_rb_fidelity |
Tämä lasketaan Randomized Benchmarking -menetelmällä, ja se näyttää keskimääräisen Clifford-portin fideliteetin. | ||
| CZ-portin fideliteetti | cz_irb_fidelity |
Controlled-z-portin fideliteetti, joka lasketaan interleaved randomized benchmarking -menetelmällä, jossa controlled-z-portti on lomitettu mukaan. | ||
| MCM-fideliteetti | measure_ssro_fidelity |
Mid-circuit-mittauksen fideliteetti. | ||
| QNDness-fideliteetti | measure_qndness_fidelity |
Quantum non-demolition (QND) -fideliteetti kuvaa todennäköisyyttä sille, että kubitin kvanttitila säilyy mid-circuit-mittauksen jälkeen. | ||
| QNDness 0 | measure_qndness_qndness_0 |
QND-fideliteetti perustilalle. Se kuvaa todennäköisyyttä sille, että alun perin perustilassa oleva kubitti pysyy perustilassa mittauksen jälkeen. | ||
| QNDness 1 | measure_qndness_qndness_1 |
QND-fideliteetti ensimmäiselle virittyneelle tilalle. Se kuvaa todennäköisyyttä sille, että alun perin ensimmäisessä virittyneessä tilassa oleva kubitti pysyy ensimmäisessä virittyneessä tilassa mittauksen jälkeen. | ||
| QNDness-toistettavuus | measure_qndness_repeatability |
Mid-circuit-mittaustulosten toistettavuus. Todennäköisyys sille, että toinen mittaustulos vastaa ensimmäistä. Tämä metriikka sisältää lukudiskriminointivirheet, mikä tarkoittaa, että jos lukufideliteetti on heikko, toistettavuus on alhainen, vaikka mittaus olisi ei-destruktiivinen. |
Lisätietoja kalibrointidatasta saat ottamalla yhteyttä osoitteeseen fiqci-feedback@postit.csc.fi tai CSC:n asiakastukeen, jonka tavoittaa osoitteesta servicedesk@csc.fi.
Kvanttityö Lumi-selainkäyttöliittymässä
LUMI Web interface mahdollistaa kvanttitehtävien ajamisen Q20:llä ja Q50:llä selainkäyttöliittymän kautta. Lisätietoja kirjautumisesta LUMI:n selainkäyttöliittymään löytyy LUMI-dokumentaation sivulta.
Kun tunnistautuminen on onnistunut, sinulla pitäisi nyt olla pääsy kojelaudallesi. Napsauta Jupyter-sovellusta ja valitse projektisi sekä osio. Jos sinulla on aktiivinen varaus, voit käyttää sitä valitsemalla sen reservation-kohdasta.
On suositeltavaa käyttää Advanced settings -asetuksia. Valitse Custom init -vaihtoehdossa Text, ja kirjoita Script to start -tekstikenttään seuraava skripti määrittääksesi ympäristön käyttämään kvanttiohjelmistopinoa. Korvaa <DEVICE_VALUE> laitteesi tunnisteella, katso yllä oleva huomautus.

Käynnistä Jupyter-istuntosi napsauttamalla launch. Tämä käynnistää Jupyterin komennolla python -m Jupyter lab. Jos käytät Q20:tä/Q50:tä kvanttilaskennan kurssin aikana, kurssia varten on voitu luoda mukautettu ympäristö. Tässä tapauksessa voit käyttää kvanttitietokoneita Jupyter-for-courses-sovelluksen kautta.

QPU-käytön tarkastelu LUMIssa ja MyCSC:ssä
Voit nyt tarkastella QPU-käyttöä MyCSC-kojelaudalta. Jos haluat tarkastella QPU-käyttöä LUMIn terminaalista, käytä alla kuvattua menetelmää. Komento lumi-allocations ei näytä QPU-käyttöä oikein.
Voit tarkastella QPU-käyttöä terminaalissa käyttämällä skriptiä project-qpu-allocations. Tämä skripti näyttää nykyisen QPU-allokaatiosi ja käyttösi tiedot kaikille projekteillesi.
/appl/local/quantum/resource-checker/project-qpu-allocations
# To view for a specific project, run
/appl/local/quantum/resource-checker/project-qpu-allocations <project_xxxx>