Hyppää sisältöön

A new version of SD Connect and SD Desktop will be available from Monday, September 28. The major upgrade will introduce significant improvements, but also includes changes that are not compatible with the current version of the service. Click here to review the available support materials.

Warning!

Puhti and Mahti computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti and Mahti login nodes and storage services are planned to remain available until 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

Pythonin käyttö CSC:n supertietokoneilla

Joitakin tärkeitä Python-ohjelmointikielen käyttöön liittyviä asioita tehdään CSC:n supertietokoneilla huomattavan eri tavalla kuin henkilökohtaisella laitteella tai muissa HPC-ympäristöissä. Jotta saat käytettävissä olevista laskentaresursseista kaiken hyödyn irti, on hyvä tuntea nämä erot.

Katso Python-sovellussivu yleisiä tietoja varten Python-kielestä ja CSC:n supertietokoneille esiasennetuista Python-ympäristöistä.

Python-ympäristöjen luominen ja hallinta

Katso myös UKK-osiomme, jossa on yleisiä kysymyksiä Python- ympäristöistä supertietokoneilla.

Python-pakettien asentaminen olemassa oleviin moduuleihin

Jos on olemassa CSC:n tarjoama moduuli, joka kattaa melkein kaiken tarvitsemasi, mutta siitä puuttuu muutama Python-paketti, voit yrittää asentaa ne itse pip-paketinhallinnalla.

Katso pakettilistat Python-sovellussivultamme selvittääksesi, mitä paketteja olemassa oleviin moduuleihin on asennettu. Jos mielestäsi jokin tärkeä paketti pitäisi sisällyttää oletuksena CSC:n tarjoamaan moduuliin, ota rohkeasti yhteyttä Service Deskiimme.

Suositeltu tapa lisätä paketteja olemassa olevan ympäristön päälle on käyttää venv:iä, joka on Pythonin vakiomoduuli kevyen "virtuaaliympäristön" luomiseen. Voit käyttää useita virtuaaliympäristöjä, esimerkiksi yhden jokaista projektia varten.

Esimerkiksi paketin nimeltä whatshap asentaminen CSC:n tarjoaman python-data -moduulin päälle:

cd /projappl/<your_project>  # change this to the appropriate path for your project
module load python-data
python3 -m venv --system-site-packages <venv_name>
source <venv_name>/bin/activate
pip install whatshap

Warning

Virtuaaliympäristö täytyy luoda oikea python-moduuli aktivoituna, eli siinä ympäristössä, jossa aiot käyttää uusia paketteja. Voit tarkistaa, mihin pythoniin venv viittaa komennolla: readlink <venv_name>/bin/python3.

Toisin kuin esimerkiksi Tykky, venv luo ympäristölle uuden hakemiston, joten sinun ei tarvitse luoda sitä etukäteen. Muista käyttää --system-site-packages-valitsinta virtuaaliympäristöä luotaessa, muuten ympäristö ei löydä perusmoduulin esiasennettuja paketteja (esimerkiksi numpy:a python-data-moduulista).

Myöhemmin, kun haluat käyttää virtuaaliympäristöä, sinun tarvitsee vain ladata moduuli ja aktivoida ympäristö:

module load python-data
source /projappl/<your_project>/<venv_name>/bin/activate

Samoin virtuaaliympäristöä käytettäessä varmista, että perusmoduuli on todella ladattu. Tämä koskee luonnollisesti myös Slurm-työskriptejä.

Ongelmia virtuaaliympäristöjen kanssa

Joissakin erityistapauksissa CSC:n moduulit eivät välttämättä toimi oikein Pythonin virtuaaliympäristöjen kanssa. Kokeile ensin suorittaa export CW_FORCE_CONDA_ACTIVATE=1 ennen venvin aktivointia. Jos siitä ei ole apua, kokeile käyttää pip install --user -tapaa, joka on kuvattu toisella välilehdellä.


Toinen tapa asentaa lisäpaketteja on tehdä "käyttäjäasennus" komennolla pip install --user. Tämä tapa on periaatteessa helppokäyttöinen, koska se ei vaadi virtuaaliympäristön perustamista. Paketin mukana tulevat komennot eivät kuitenkaan välttämättä toimi suoraan (katso tämän osion lopun tietolaatikko).

Paketit asennetaan oletuksena kotihakemistoosi polkuun .local/lib/pythonx.y/site-packages (missä x.y on käytössä olevan Pythonin versio), paitsi Roihussa. Roihussa lisäpakettien oletusasennuspolku määräytyy CPU-arkkitehtuurin mukaan: .local/x86_64/lib/pythonx.y/site-packages Roihu-CPU:lle ja .local/aarch64/lib/pythonx.y/site-packages Roihu-GPU:lle. Huomaa, että jos asennat paljon paketteja, kotihakemistostasi voi helposti loppua tila. Tämä voidaan välttää muuttamalla asennuskansiota niin, että tehdään projektikohtainen asennus henkilökohtaisen asennuksen sijaan. Tämä tehdään asettamalla PYTHONUSERBASE-ympäristömuuttuja viittaamaan uuteen asennushakemistoon.

Esimerkiksi paketin whatshap lisääminen python-data-moduulin päälle:

module load python-data
export PYTHONUSERBASE=/projappl/<your_project>/my-python-env
pip install --user whatshap

Yllä olevassa esimerkissä paketti asennetaan nyt my-python-env-hakemistoon projektin projappl-hakemistossa. Suorita unset PYTHONUSERBASE, jos haluat asentaa paketteja taas kotihakemistoosi.

Kun käytät kirjastoja myöhemmin, sinun täytyy määrittää PYTHONUSERBASE uudelleen. Tämä koskee luonnollisesti myös Slurm-työskriptejä. Esimerkiksi:

module load python-data
export PYTHONUSERBASE=/projappl/<your_project>/my-python-env

Paketteja, jotka sisältävät suoritettavia tiedostoja

Useimmat Python-moduuleistamme on toteutettu kontteina. Jos asentamasi paketti sisältää myös suoritettavia tiedostoja, ne eivät välttämättä toimi suoraan, koska suoritettava tiedosto saattaa etsiä Python-tulkkia polusta, joka on kontin sisäinen. Saatat nähdä tällaisen virheilmoituksen:

whatshap: /CSC_CONTAINER/miniconda/envs/env1/bin/python3.9: bad interpreter: No such file or directory

Voit korjata tämän muokkaamalla suoritettavan tiedoston ensimmäistä riviä (joka esimerkissämme löytyy komennolla which whatshap) osoittamaan oikeaan Python-tulkkiin (löytyy komennolla which python3). Esimerkissämme muokkaisimme tiedostoa ~/.local/bin/whatshap (~/.local/$(uname -m)/bin/whatshap Roihussa) niin, että sen ensimmäinen rivi on seuraava:

#!/appl/soft/manual/aida/$(uname -m)/python-data/python-data-2026-03/bin/python3

Pip-asennukset, jotka vaativat kääntämistä

Lähdekoodista rakennettaessa --no-build-isolation-valitsinta voidaan käyttää paketin kääntämiseen aktiivisen moduulin avulla sen sijaan, että pip loisi eristetyn rakennusympäristön. Lisäksi voi olla hyödyllistä käyttää laveaa -v-valitsinta nähdäksesi, mitä pip tekee ympäristön sisällä.

Warning

Vaikka asentaisit Python-paketteja projappliin tai scratchiin, pip-komento voi silti täyttää kotihakemistosi, koska se tallentaa välimuistinsa sinne oletuksena. Katso UKK-merkintämme pipin välimuistin määrittämisestä.

Omien Python-ympäristöjen luominen

On myös mahdollista luoda omia Python-ympäristöjä.

Pip on hyvä valinta sellaisten Python-ympäristöjen hallintaan, jotka eivät perustu monimutkaisiin riippuvuussuhteisiin.

  1. Helpoin tapa luoda mukautettu pip-ympäristö on käyttää venv- moduulia, jota käsiteltiin edellisessä osiossa ja jossa itse asiassa näytetään täsmälleen, miten tämä tehdään. Jos et halua käyttää paketteja jostakin olemassa olevasta moduulista, jätä yksinkertaisesti pois --system-site-packages-valitsin virtuaaliympäristöä luotaessa.

  2. Toinen vaihtoehto on luoda pip-ympäristö kontin sisään. Suoraviivaisin tapa tehdä tämä on käyttää Tykky-konttikäärettä. Jos haluat tietää, miten ympäristösi voidaan helposti kontittaa, katso Tykkyn ohjeet pip-pohjaisiin asennuksiin.

  3. Vaihtoehto Tykkyn käytölle on luoda pip-ympäristö mukautetun Apptainer-kontin sisään. Tämä on käytännöllinen valinta, jos esimerkiksi tiedät sopivan valmiin Apptainer- tai Docker-kontin. Lisätietoja Apptainer-konttien käytöstä on aiheeseen liittyvässä dokumentaatiossa:


Conda on helppokäyttöinen ja joustava, mutta se luo yleensä valtavan määrän tiedostoja, mikä ei sovi yhteen jaettujen tiedostojärjestelmien kanssa. Liiallinen tiedostomäärä voi aiheuttaa hyvin hitaita kirjastojen tuonteja ja pahimmassa tapauksessa hidastaa koko tiedostojärjestelmää. Tämän vuoksi CSC on poistanut condan käytön suosituksista suorissa asennuksissa supertietokoneille. Voit kuitenkin edelleen luoda ja käyttää kontitettuja conda-ympäristöjä.

  1. Suoraviivaisin tapa luoda kontitettu conda- ympäristö on käyttää Tykky-konttikäärettä. Jos haluat tietää, miten ympäristösi voidaan helposti kontittaa, katso Tykkyn ohjeet conda-pohjaisiin asennuksiin.

  2. Vaihtoehto Tykkyn käytölle on luoda conda-ympäristö mukautetun Apptainer-kontin sisään. Tämä on käytännöllinen valinta, jos esimerkiksi tiedät sopivan valmiin Apptainer- tai Docker-kontin. Lisätietoja Apptainer-konttien käytöstä on aiheeseen liittyvässä dokumentaatiossa:


Python-kehitysympäristöt

Python-skriptejä voidaan muokata suoraan CSC:n supertietokoneella käyttäen konsolipohjaista tekstieditoria kuten vim tai emacs. Näiden päätepohjaisten editorien lisäksi useita graafisia ohjelmointiympäristöjä, kuten Jupyter Notebookeja, Visual Studio Codea ja Spyderiä, voidaan käyttää supertietokoneella selainkäyttöliittymämme kautta.

Sen lisäksi, että koodia muokataan suoraan supertietokoneella, on myös mahdollista kehittää koodia etänä käyttäen joitakin paikallisesti asennettavia editoreja, kuten Visual Studio Codea. Huomaa kuitenkin, että tämä tapa muodostaa yhteys CSC:n supertietokoneisiin on altis ongelmille eikä siksi ole täysin tuettu.

Lopuksi koodia voi tietenkin muokata paikallisella laitteella ja kopioida sen supertietokoneelle komentorivityökaluilla, kuten scp ja rsync, tai käyttämällä graafisia tiedostonsiirtotyökaluja.

Jupyter

Jupyter Notebookit tarjoavat interaktiivisen ohjelmointiympäristön, jossa voidaan kirjoittaa ja suorittaa Python-koodia yksittäisissä soluissa. Notebookit yhdistävät koodin, yhtälöt, visualisoinnit ja selittävän tekstin yhteen dokumenttiin.

Jupyter-interaktiivinen sovellus selainkäyttöliittymässämme mahdollistaa Jupyterin käytön CSC:n supertietokoneilla. Monet Python-ympäristöistämme, mukaan lukien python-data, python-geo sekä syväoppimismodulit kuten python-pytorch, sisältävät tärkeimmät Jupyter-paketit, joten niitä voidaan käyttää sovelluksessa. Sovelluksen dokumentaatiosivu sisältää listan tuetuista ympäristöistä.

Visual Studio Code

Visual Studio Code (VSCode) on Microsoftin kehittämä laajasti käytetty lähdekoodieditori. Toisin kuin kaksi muuta tässä esiteltyä kehitysympäristöä, se ei ole riippuvainen mistään Python-paketeista, joten sitä voidaan käyttää oletuksena kaikkien CSC:n ja itse tehtyjen Python-ympäristöjen kanssa.

VSCodea voi käyttää CSC:n supertietokoneilla kahdella tavalla:

  1. Interaktiivisena sovelluksena selainkäyttöliittymässämme
  2. Etänä Remote-SSH-liitännäisellä (ei tuettu)

Mukautettujen ympäristöjen käyttö VSCodessa

Koska VSCode-istunnon käynnistyslomakkeessa tarjotaan vain CSC:n moduuleja, mukautettujen Python-ympäristöjen käyttäminen VSCodeen sisäänrakennettujen toimintojen, kuten virheenkorjauksen, kanssa edellyttää Python-tulkin polun muuttamista istunnon käynnistymisen jälkeen. Tämä voidaan tehdä napsauttamalla Python-version tietoja, jotka näkyvät VSCode-ikkunan oikeassa alakulmassa.

Spyder

Spyder on tieteellinen Python-kehitys- ympäristö. python-data ja python-geo -moduulit sisältävät Spyderin. Paras tapa käyttää sitä on Roihun selainkäyttöliittymän etätyöpöydän kautta.

Pythonin rinnakkaistyöt

Pythonissa on useita kirjastoja rinnakkaislaskentaan. Alla on muutamia ehdotuksia:

  • multiprocessing – prosessipohjainen rinnakkaisuus
  • joblib – Python-funktioiden ajaminen putkityötehtävinä
  • dask – yleiskäyttöinen rinnakkaisohjelmoinnin ratkaisu
  • mpi4py – Pythonin MPI-sidonnat

multiprocessing-paketti on todennäköisesti helpoin käyttää. Koska se on osa Pythonin standardikirjastoa, se sisältyy oletuksena kaikkiin Python-asennuksiin. joblib tarjoaa tähän verrattuna hieman enemmän joustavuutta. Nämä kaksi pakettia soveltuvat yksittäisen solmun rinnakkaistamiseen (enintään 40 ydintä).

dask on näistä monipuolisin ja tarjoaa useita vaihtoehtoja rinnakkaistamiseen. Katso CSC:n Dask-opas, jossa on esimerkkejä sekä yhden solmun (enintään 40 ydintä) että usean solmun rinnakkaistamisesta.

Lisäksi CSC Trainingin GitHub-organisaatiossa on esimerkkejä eri rinnakkaistamisvaihtoehtojen käytöstä Roihussa. Yllä mainituista neljästä paketista esimerkkejä on multiprocessing-, joblib- ja dask-paketeille.

mpi4py-paketti sisältyy PyTorch-ympäristöömme. Se on yleensä tehokkain vaihtoehto usean solmun töihin, joissa rinnakkaistaminen ei ole triviaalia.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta