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 scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

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 levyalueista lisää 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 eikä laskentaan, ja sinne tulisi tallentaa vain pieniä henkilökohtaisia tiedostoja.

Lisäksi LUMIssa on jaettu flash-tallennusalue, jota on nopeampi käyttää kuin scratchia. Flash on tarkoitettu vain datan väliaikaiseen tallentamiseen käsittelyä varten, ja flash-alueen käyttö maksaa enemmän kuin tavallisen scratch-tallennuksen käyttö.

On suositeltavaa tallentaa suuret aineistot Allas-oliotallennuspalveluun ja ladata ne projektisi scratch-hakemistoon ennen laskennan aloittamista. Esimerkiksi:

module load allas
allas-conf
cd /scratch/<your-project>
swift download <bucket-name> your-dataset.tar

Kaikki, mitä täytyy säilyttää pidempään (projektin elinkaaren ajan), tulisi kopioida takaisin Altaaseen. scratch-levyalueelta poistetaan säännöllisesti vanhoja tiedostoja, eikä sitä pidä käyttää tärkeiden tiedostojen pitkäaikaiseen säilytykseen.

Joissakin CPU-solmuissa sekä kaikissa GPU-solmuissa Puhdissa ja Mahdissa (mutta ei LUMIssa) on myös nopeat paikalliset NVMe-asemat, joissa on vähintään 3,6 Tt levytilaa. Tämä tila on käytettävissä vain Slurm-työn suorituksen aikana, ja se siivotaan työn päätyttyä. Dataintensiivisissä töissä on usein hyödyllistä kopioida data NVMe-asemalle työn alussa ja tallentaa lopulliset tulokset scratch-levylle työn lopussa. Katso alta lisätietoja nopean paikallisen NVMe-aseman käytöstä.

Jaetun tiedostojärjestelmän tehokas käyttö

Koneoppimismallien opetusdata koostuu usein valtavasta määrästä tiedostoja. Tyypillinen esimerkki on neuroverkon opettaminen kymmenillä tuhansilla suhteellisen pienillä JPEG-kuvatiedostoilla. Valitettavasti tiedostojärjestelmä Lustre, jota käytetään hakemistoissa /scratch, /projappl ja käyttäjien home-hakemistoissa, 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 tunneiksi.

Note

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

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

Tehokkaampi datamuoto

Monet koneoppimiskehykset tukevat muotoja, 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 yksinkertaiset ZIP-tiedostot, esimerkiksi Pythonin zipfile-kirjaston kautta.

LUMI AI Guide sisältää hyvän vertailun eri muodoista PyTorch-käyttöön. 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 (vain Puhti ja Mahti)

Jos sinun todella täytyy käyttää yksittäisiä pieniä tiedostoja, voit käyttää nopeaa paikallista NVMe-asemaa, joka on GPU-solmuissa Puhdissa ja Mahdissa. Lyhyesti sanottuna sinun tarvitsee vain lisätä nvme:<number-of-GB> lähetysskriptisi --gres-valitsimeen, jolloin nopea paikallinen tallennustila on käytettävissä ympäristömuuttujan $LOCAL_SCRATCH määrittämässä sijainnissa. Tässä on esimerkkiajo, joka varaa 100 Gt nopeaa paikallista levytilaa ja purkaa aineiston tar-paketin kyseiselle asemalle ennen laskennan käynnistämistä:

#!/bin/bash
#SBATCH --account=<project>
#SBATCH --partition=gpu
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=10
#SBATCH --mem=64G
#SBATCH --time=1:00:00
#SBATCH --gres=gpu:v100:1,nvme:100

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

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

Huomaa, että sinun täytyy välittää omalle ohjelmallesi jollakin tavalla tieto siitä, 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 $LOCAL_SCRATCH

Roihu-aineistoprojekti

Jos työskentelet muiden projektien kanssa, jotka kaikki tarvitsevat pääsyn samaan yhteiseen dataan, voit harkita aineistoprojektin hakemista Roihussa.

Aineistoprojekti tarjoaa tallennuksen ja käyttöoikeuksien hallinnan, mutta ei laskentaresursseja. Yksi nimetty projekti ylläpitää aineistoa, ja lukuoikeus voidaan myöntää valituille käyttäjille, projekteille tai organisaatioille tai vaihtoehtoisesti kaikille Roihun käyttäjille.

Aineistoprojekti on hyvä tapa ylläpitää dataa, jota luetaan usein mutta kirjoitetaan harvoin, jotta vältetään yhteisen syöte- tai viitedatan päällekkäiset kopiot.

Lue lisää Roihu-aineistoprojekteista.

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta