Pythonin käyttäminen CSC:n supertietokoneilla
Jotkut tärkeät Python-ohjelmointikielen käytön näkökohdat eroavat merkittävästi CSC:n supertietokoneilla verrattuna käyttöön henkilökohtaisella laitteella tai muissa HPC-ympäristöissä. Hyödyntääksesi käytössäsi olevia laskentaresursseja tehokkaasti, on hyödyllistä olla tietoinen näistä eroista.
Katso Python-sovellussivulta yleistä tietoa Python-kielestä ja valmiiksi asennetuista Python-ympäristöistä CSC:n supertietokoneilla.
Python-ympäristöjen luominen ja hallinta
Katso myös FAQ-osastomme tavallisilla kysymyksillä, jotka liittyvät Python-ympäristöihin supertietokoneilla.
Python-pakettien asentaminen olemassa oleviin moduuleihin
Jos on CSC:n tarjoama moduuli, joka kattaa melkein kaiken tarvitsemasi, mutta siinä puuttuu muutama Python-paketti, voit yrittää asentaa ne itse pip-pakettien hallintatyökalulla.
Katso pakettiluettelot Python-sovellussivultamme saadaksesi selville, mitkä paketit on jo asennettu olemassa oleviin moduuleihin. Jos mielestäsi jokin tärkeä paketti pitäisi sisällyttää oletusarvoisesti CSC:n tarjoamaan moduuliin, älä epäröi ottaa yhteyttä palvelupisteeseemme.
=== "Venvin käyttäminen" {#using-venv} Suositeluin tapa lisätä paketteja olemassa olevaan ympäristöön on käyttää venviä, joka on standardi Python-moduuli kevyen "virtuaalisen ympäristön" luomiseen. Voit olla useita virtuaaliympäristöjä, esimerkiksi yksi kullekin projektille.
Esimerkiksi asentaaksesi paketin nimeltä whatshap
CSC:n tarjoaman python-data moduulin päälle:
cd /projappl/<your_project> # muuta tämä projektillesi sopivaksi poluksi
module load python-data
python3 -m venv --system-site-packages <venv_name>
source <venv_name>/bin/activate
pip install whatshap
Toisin kuin esimerkiksi Tykkyssä, venv
luo uuden hakemiston ympäristölle, joten sinun ei tarvitse luoda sellaista etukäteen.
Älä unohda käyttää --system-site-packages
-lippua luodessasi virtuaaliympäristöä, muuten ympäristö ei löydä ennakkoon asennettuja paketteja perusmoduulista (esimerkiksi numpy
python-data
sta).
Myöhemmin, kun haluat käyttää virtuaaliympäristöä, sinun tarvitsee vain ladata moduuli ja aktivoida ympäristö:
Vastaavasti, kun käytät virtuaaliympäristöä, varmista, että perusmoduuli on ladattu. Toisaalta tämä koskee myös Slurm-työskriptejä.
!!! info "Ongelmia virtuaaliympäristöjen kanssa" {#problems-with-virtual-environments}
Joissakin erityistapauksissa CSC-moduulit eivät välttämättä toimi kunnolla Python-virtuaaliympäristöjen kanssa. Kokeile ensin suorittaa export CW_FORCE_CONDA_ACTIVATE=1
ennen kuin aktivoit venvin. Jos se ei auta, kokeile käyttää pip install --user
-lähestymistapaa, joka on kuvattu toisella välilehdellä.
=== "pip install --user
in käyttäminen" {#using-pip-install-user}
Toinen lähestymistapa ylimääräisten pakettien asentamiseen on suorittaa "käyttäjäasennus" komennolla pip install --user
. Tämä lähestymistapa on alustavasti helppokäyttöinen, koska se ei vaadi virtuaaliympäristön perustamista. Pakettien tarjoamat komennot eivät kuitenkaan välttämättä toimi heti käyttökelpoisina (katso lisätietoa tämän osion lopussa olevasta Info-laatikosta).
Pakettilähtöiset komennot asennetaan oletuksena kotihakemistoosi .local/lib/pythonx.y/site-packages
alle (missä x.y
on käytössä olevan Pythonin versio). Huomaa, että jos asennat runsaasti paketteja, kotihakemistosi tilaa voi loppua nopeasti. Tämän voi välttää muuttamalla asennuskansiota siten, että projektilaajuinen asennus tehdään henkilökohtaisen sijasta. Tämä tehdään asettamalla PYTHONUSERBASE
-ympäristömuuttuja viittaamaan uuteen asennuskansioon.
Esimerkiksi lisääksesi paketin whatshap
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 on nyt asennettu projektin projappl
-hakemiston my-python-env
-hakemiston sisälle. Suorita unset PYTHONUSERBASE
jos haluat asentaa paketteja takaisin kotihakemistoon.
Kun käytät kirjastoja myöhemmin, sinun täytyy jälleen määrittää PYTHONUSERBASE
. Tämä tietenkin koskee myös Slurm-työskriptejä. Esimerkiksi:
!!! info "Paketit, jotka sisältävät suoritettavia tiedostoja" {#packages-containing-executable-files} Useimmat Python-moduulimme on toteutettu kontteina. Jos asentamasi paketti sisältää suoritettavia tiedostoja, ne eivät välttämättä toimi heti käyttökelpoisina, koska suoritettava tiedosto voi etsiä Python-tulkinta polkua käyttäen, joka on konttiin sisäinen. Saatat nähdä virheilmoituksen, kuten:
```bash
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 meidän esimerkissämme löytyy käyttämällä `which whatshap`) osoittaakseen
oikeaan Python-tulkintaan (löytyy käyttämällä `which python3`).
Esimerkissämme muokkaisimme tiedostoa `~/.local/bin/whatshap`
niin, että sen ensimmäinen rivi olisi seuraava:
```bash
#!/appl/soft/ai/tykky/python-data-2022-09/bin/python3
```
Oman Python-ympäristön luominen
On myös mahdollista luoda omia Python-ympäristöjä.
=== "pip" {#pip} Pip on hyvä valinta Python-ympäristöjen hallintaan, jotka eivät perustu monimutkaisiin riippuvuussuhteisiin.
-
Helpoin tapa luoda mukautettu pip-ympäristö on käyttää
venv
-moduulia, jota käsiteltiin edellisessä osiossa, ja joka itse asiassa näyttää tarkasti, kuinka tämä tehdään. Jos et halua käyttää paketteja yhdestä olemassa olevasta moduulista, älä yksinkertaisesti sisällytä--system-site-packages
-lippu, kun luot virtuaaliympäristöä. -
Toinen vaihtoehto on luoda pip-ympäristö kontissa. Suoraviivaisin tapa tehdä niin on käyttämällä Tykky konttikäärettä. Selvitäksesi, kuinka helposti kon
iederioso prostinsi te moijisivon ormoso juntevoky poretot, katso Tykky-ohjeet pip-pohjaisille asennuksille.
- Vaihtoehtona Tykyn käytölle on luoda pip-ympäristö
mukautetun Apptainer-kontin sisällä. Tämä on käytännöllinen valinta, jos esimerkiksi tunnet valmiin Apptainer- tai Docker-kontin.
Lisätietoja Apptainer-konttien käytöstä löydät seuraavasta dokumentaatiosta:
* [Apptainer-konttien käyttäminen](../../computing/containers/run-existing.md) * [Apptainer-konttien luominen](../../computing/containers/creating.md), mukaan lukien kuinka muuntaa Docker-kontteja Apptainer-konteiksi.
=== "conda" {#conda} Conda on helppokäyttöinen ja joustava, mutta se yleensä luo valtavan määrän tiedostoja, mikä ei ole yhteensopiva jaettujen tiedostojärjestelmien kanssa. Liiallinen tiedostojen määrä voi aiheuttaa erittäin hitaita kirjastojen tuontia ja pahimmassa tapauksessa hidastaa koko tiedostojärjestelmää. Tämän vuoksi CSC on poistanut kekäyttöön condaa suoraan asennuksiin supertietokoneilla. Voit kuitenkin silti luoda ja käyttää konteitettua conda-ympäristöjä.
-
Suoraviivaisin tapa luoda konteitettu conda-ympäristö on käyttämällä Tykky konttikäärettä. Selvitäksesi, kuinka helposti konteinisoida ympäristösi, katso Tykky-ohjeet conda-pohjaisille asennuksille.
-
Vaihtoehtona Tykyn käytölle on luoda conda-ympäristö mukautetun Apptainer-kontin sisällä. Tämä on käytännöllinen valinta, jos esimerkiksi tunnet valmiin Apptainer- tai Docker-kontin. Lisätietoja Apptainer-konttien käytöstä löydät seuraavasta dokumentaatiosta:
* [Apptainer-konttien käyttäminen](../../computing/containers/run-existing.md) * [Apptainer-konttien luominen](../../computing/containers/creating.md), mukaan lukien kuinka muuntaa Docker-kontteja Apptainer-konteiksi.
Python-kehitysympäristöt
Python-skriptejä voidaan muokata suoraan CSC:n supertietokoneella käyttäen konsolipohjaista tekstieditoria, kuten vim
tai emacs
. Näiden terminaalipohjaisten editointiohjelmien lisäksi useita graafisia ohjelmointiympäristöjä, kuten Jupyter-muistikirjat, Visual Studio Code ja Spyder, voidaan käyttää supertietokoneella verkkoalustamme kautta.
Koodin muokkaamisen lisäksi suoraan supertietokoneella on myös mahdollista kehittää koodia etänä käyttämällä joitakin paikallisesti asennettavia editoreita, kuten Visual Studio Code. Huomaa kuitenkin, että tämä tapa yhdistää CSC:n supertietokoneisiin on alttiina ongelmille ja siksi sitä ei ole täysin tuettu.
Lopuksi, koodia voi tietysti muokata paikallisella laitteella ja kopioida supertietokoneelle komentorivityökalujen, kuten scp
ja
rsync
, tai graafisten tiedostonsiirto-ohjelmien avulla.
Jupyter
Jupyter-muistikirjat tarjoavat interaktiivisen ohjelmointiympäristön, jossa voidaan kirjoittaa ja suorittaa Python-koodia yksittäisissä soluissa. Muistikirjat yhdistävät koodin, yhtälöt, visualisoinnit ja kerronnallisen tekstin yhdeksi dokumentiksi.
Interaktiivinen Jupyter-sovellus
verkkoalustallamme mahdollistaa Jupyterin käytön CSC:n supertietokoneilla.
Monet Python-ympäristöistämme, mukaan lukien
python-data
, geoconda
sekä syväoppimismoduulit, kuten pytorch
sisältävät tärkeimmät Jupyter-paketit, joten niitä voi käyttää sovelluksessa.
Sovelluksen dokumentaatiosivulla on
lista tuetuista ympäristöistä.
Visual Studio Code
Visual Studio Code (VSCode) on Microsoftin kehittämä laajalti käytetty lähdekoodieditori. Toisin kuin muut täällä esitellyt kehitysympäristöt, se ei ole riippuvainen mistään Python-paketeista, joten sitä voi käyttää oletuksena kaikkien CSC- ja mukautettujen Python-ympäristöjen kanssa.
VSCodea on kaksi tapaa käyttää CSC:n supertietokoneilla:
- Interaktiivisena sovelluksena verkkoalustallamme
- Etänä käyttämällä Remote-SSH-liitännäistä (ei tuettu)
!!! info "Mukautettujen ympäristöjen käyttäminen VSCode:ssä" {#using-custom-environments-in-vscode} Koska vain CSC-moduulit tarjotaan VSCode-istunnon käynnistyslomakkeessa, mukautettujen Python-ympäristöjen käyttö sisäänrakennettujen VSCode-toimintojen kanssa, kuten vianetsintä, edellyttää Python-tulkin polun muuttamista istunnon käynnistyttyä. Tämä voidaan tehdä klikkaamalla VSCode-ikkunan oikeassa alakulmassa näkyvää Python-version tietoa.
Spyder
Spyder on tieteellinen Python-kehitysympäristö. python-data ja geoconda moduulit sisältävät Spyderin. Paras vaihtoehto sen käyttämiseen on Puhti verkkoalustan etätyöpöytä.
Python-paralleelityöt
Pythonille on olemassa useita kirjastoja rinnakkaislaskentaan. Alla on muutamia ehdotuksia:
- multiprocessing – prosessipohjainen rinnakkaisuus
- joblib – Python-funktioiden suoritusputki
- dask – yleiskäyttöinen rinnakkaisohjelmointiratkaisu
- mpi4py – MPI-sidokset Pythonille
multiprocessing
-paketti on todennäköisesti helpoin käyttää. Koska se kuuluu
Pythonin vakio kirjastoon, se on valmiiksi sisällytetty kaikkiin Python-asennuksiin.
joblib
tarjoaa hieman enemmän joustavuutta vastaavasti. Nämä kaksi pakettia soveltuvat yhden solmun rinnakkaistamiseen (maks. 40 ydintä).
dask
on joustavin näistä vaihtoehdoista ja sillä on useita vaihtoehtoja
rinnakkaistamiseen. Katso CSC Dask -tutorial esimerkeistä sekä yhden solmun (maks. 40 ydintä) että monen solmun rinnakkaistamiseen.
Lisäksi on esimerkkejä
eri rinnakkaistusvaihtoehtojen käytöstä Puhtilla
CSC:n koulutus-GitHub-organisaatiossamme. Yllä mainituista neljästä paketista esimerkkejä on
annettu multiprocessing
, joblib
ja dask
kanssa.
mpi4py
-paketti sisältyy PyTorch-ympäristöömme.
Se on yleensä tehokkain vaihtoehto monisolmutöihin, joissa on epätriviaalia rinnakkaistusta.
Lyhyen mpi4py
-opetuksen, sekä muiden lähestymistapojen Python-ohjelmien suorituskyvyn parantamiseen,
löytää ilmaisesta
Pythonin High Performance Computingissa
verkkokurssista.