Hyppää sisältöön

Puhdin ja Mahdin laskentapalvelut ovat poistuneet käytöstä. Puhdin ja Mahdin kirjautumisnoodit sekä tallennustila ovat saatavilla 15. lokakuuta 2026 asti, mutta ne eivät enää ole palvelusopimusten piirissä. Ryhdythän toimiin datan siirtämiseksi Roihuun välittömästi. Ohjeita löydät sivulta Roihun datan siirto-opas.

Datan tallennus koneoppimista varten

Tässä oppaassa kerrotaan, miten tallennat datasi tehokkaasti koneoppimissovelluksia varten CSC:n supertietokoneilla. Se on osa koneoppimisen opas -kokonaisuutta.

Minne data kannattaa tallentaa?

CSC:n supertietokoneissa on kolmenlaisia jaettuja levyalueita: home, projappl ja scratch. Voit lukea lisää Roihun levyalueista täältä. LUMIn osalta katso datan tallennusta käsittelevä osio täältä. Yleisesti ottaen koodi ja ohjelmistot kannattaa säilyttää projappl-alueella ja aineistot, lokit ja laskennan tulosteet scratch-alueella. home-hakemistoa ei ole tarkoitettu data-analyysiin ja laskentaan, ja siellä tulisi säilyttää vain pieniä henkilökohtaisia tiedostoja.

Lisäksi LUMIssa on jaettu flash-tallennusalue LUMI-F, jota on nopeampi käyttää kuin scratchia. Huomaa, että LUMI-F:n kustannus on suurempi kuin tavallisen scratch-tallennuksen käytön.

On suositeltavaa tallentaa aineistot Allas-oliosäilöön ja ladata ne projektisi scratch-hakemistoon ennen laskennan aloittamista. Esimerkiksi:

module load allas
allas-conf
cd /scratch/<your-project>
s3cmd get s3://<bucket-name>/<your-dataset>.tar

Kaikki, mitä täytyy säilyttää yli 180 päivää, tulisi kopioida takaisin Altaaseen. scratch-levyalueelta poistetaan säännöllisesti vanhoja tiedostoja, eikä sitä tule käyttää tärkeän datan pitkäaikaiseen säilytykseen.

Lopuksi, jos työskentelet muiden projektien kanssa, jotka kaikki tarvitsevat pääsyn samaan yhteiseen dataan, voit harkita aineistoprojektin hakemista Roihussa. Aineistoprojekti on hyvä tapa ylläpitää dataa, jota luetaan usein mutta kirjoitetaan harvoin.

Jaetun tiedostojärjestelmän tehokas käyttö

Koneoppimismallien opetusdata koostuu usein valtavasta määrästä tiedostoja. Tyypillinen esimerkki on neuroverkon opettaminen sadoillatuhansilla suhteellisen pienillä kuva- tai tekstitiedostoilla. Valitettavasti /scratch-, /projappl- ja käyttäjien home-hakemistoissa käytettävä Lustre-tiedostojärjestelmä ei toimi hyvin, kun käytetään satunnaishakua suureen määrään tiedostoja tai tehdään paljon pieniä lukuoperaatioita. Laskennan hidastumisen lisäksi tämä voi ääritapauksissa aiheuttaa huomattavia hidastumisia kaikille supertietokoneen käyttäjille ja joskus tehdä koko supertietokoneesta käyttökelvottoman tuntikausiksi.

Note

Älä lue valtavaa määrää tiedostoja jaetusta tiedostojärjestelmästä. Käytä sen sijaan nopeita paikallisia levyjä tai paketoi datasi suurempiin tiedostoihin peräkkäistä käyttöä varten!

Lisälukemiseksi katso CSC:n Lustre-tiedostojärjestelmän tekninen kuvaus ja yleinen ohjeemme paremman I/O-suorituskyvyn saavuttamisesta Lustressa.

Tehokkaampi datamuoto

Monet koneoppimiskehykset tukevat tiedostomuotoja, joilla data voidaan paketoida tehokkaammin. Yleisiä muotoja ovat TensorFlow'n TFRecord ja WebDataset PyTorchille. Muita esimerkkejä ovat HDF5- tai LMDB-muotojen käyttö tai jopa tavalliset ZIP-tiedostot, esimerkiksi Pythonin zipfile-kirjaston kautta.

LUMI AI -oppaassa on hyvä vertailu eri muodoista PyTorchin kanssa käytettäväksi. Katso myös esimerkki TFRecord-tiedostojen luomisesta kuva-aineistosta.

Kaikkien näiden muotojen pääajatus on se, että tuhansien pienten tiedostojen sijaan käytössä on yksi tai muutama suurempi tiedosto, joita on paljon tehokkaampaa käyttää ja lukea peräkkäisesti. Ota rohkeasti yhteyttä asiakastukeemme, jos tarvitset neuvoja datasi tehokkaampaan käyttöön.

Nopea paikallinen levy

Jos sinun todella täytyy käyttää yksittäisiä pieniä tiedostoja, voit käyttää nopeaa paikallista NVMe-levyä, joka on kaikissa Roihun laskentasolmuissa. Tähän alueeseen pääsee käsiksi ympäristömuuttujan $TMPDIR määrittämässä sijainnissa, ja GPU-töissä sen enimmäiskapasiteetti on 150 GiB.

Tässä on esimerkkiajo Roihulle, jossa aineiston tar-paketti puretaan $TMPDIR-hakemistoon ennen laskennan käynnistämistä:

#!/bin/bash
#SBATCH --account=<project>
#SBATCH --partition=gpumedium
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=72
#SBATCH --time=1:00:00
#SBATCH --gres=gpu:gh200:1

tar xf /scratch/<your-project>/your-dataset.tar -C $TMPDIR

srun python3 myprog.py --input_data=$TMPDIR <options>

Huomaa, että sinun täytyy kertoa omalle ohjelmallesi, mistä aineisto löytyy, esimerkiksi komentoriviargumentilla. Katso myös yleiset ohjeemme nopean paikallisen tallennustilan käyttöönotosta.

Jos ajat monisolmutyötä, sinun täytyy muokata tar-riviä niin, että se suoritetaan erikseen jokaisessa solmussa:

srun --ntasks=$SLURM_NNODES --ntasks-per-node=1 \
    tar xf /scratch/<your-project>/your-dataset.tar -C $TMPDIR

Hajautettu NVMe

Lopuksi, jos 150 GiB ei riitä, Roihu tukee myös hajautettua NVMe:tä. Tämä nopea tallennuskapasiteetti tarjotaan verkon yli, ja se näkyy paikallisena scratch-tilana Slurm-työn sisältä. Hajautetun NVMe-resurssin kokonaiskapasiteetti on 307,2 TB. Hajautettua NVMe:tä pidetään Roihussa edelleen kokeellisena ominaisuutena.

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta