Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti are being decommissioned in stages, and their storage areas will become fully unavailable from 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.

Puhti computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti login nodes and storage services are planned to remain available until 15 October 2026.

Datan tallennus koneoppimista varten

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

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 tallennuksen osio täältä. Yleisesti ottaen säilytä koodi ja ohjelmistot projappl-alueella sekä aineistot, lokit ja laskennan tulokset scratch-alueella. home-hakemistoa ei ole tarkoitettu data-analyysiin ja laskentaan, ja sinne tulisi tallentaa vain pieniä henkilökohtaisia tiedostoja.

Lisäksi LUMIssa on jaettu flash-tallennusalue LUMI-F, johon pääsee käsiksi nopeammin kuin scratchiin. Huomaa, että LUMI-F:n käyttö maksaa enemmän kuin tavallisen scratch-tallennuksen käyttö.

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 tehdään satunnaishakuja suureen määrään tiedostoja tai 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, jotta sitä voidaan lukea peräkkäisesti!

Lisätietoja saat CSC:n Lustre-tiedostojärjestelmän teknisestä kuvauksesta ja yleisestä oppaastamme paremman I/O-suorituskyvyn saavuttamisesta Lustressa.

Tehokkaampi datamuoto

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

LUMI AI Guide sisältää hyvän vertailun eri tiedostomuodoista PyTorch-käyttöön. Katso myös esimerkki TFRecord-tiedostojen luomisesta kuva-aineistosta.

Kaikkien näiden tiedostomuotojen 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 NVMe-paikallislevyä, joka on kaikissa Roihun laskentasolmuissa. Tälle alueelle pääsee käsiksi ympäristömuuttujan $TMPDIR määrittämässä sijainnissa, ja GPU-ajojen tapauksessa 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 monisolmuista työtä, sinun täytyy muokata tar-riviä niin, että se suoritetaan erikseen jokaisella solmulla:

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 Slurm-työn sisältä paikallisena scratch-tilana. Hajautetun NVMe-resurssin kokonaiskapasiteetti on 307,2 TB. Hajautettua NVMe:tä pidetään Roihussa edelleen kokeellisena ominaisuutena, ja se on tällä hetkellä saatavilla vain kokonaisia solmuja käyttäville töille.

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta