-
Koneoppimisen käytön aloittaminen CSC:llä
Koneoppimisen käytön aloittaminen CSC:llä
Tämä opas on osa koneoppimisen opastamme.
Sinulla on Pythonilla kirjoitettua koneoppimiskoodia, joka pyörii kannettavallasi, mutta se on todella hidasta. Olet kuullut, että siirtyminen GPU:ihin ja CSC:n supertietokoneisiin voisi olla ratkaisu, mutta dokumentaatio vaikuttaa hieman pelottavalta.
CSC:n laskentaympäristö on hyvin dokumentoitu osoitteessa docs.csc.fi, mutta aloittelijalle voi olla hieman vaikeaa tietää, mistä aloittaa. Tämä opas näyttää sinulle vaihe vaiheelta, kuinka saat koodisi ja datasi Roihu-supertietokoneelle ja ajettua GPU:illa. Se on osa koneoppimisen opastamme.
CSC:llä on kaksi supertietokonetta: Roihu ja LUMI. Tässä oppaassa keskitymme Roihun käyttöön, koska siinä on laajin ohjelmistovalikoima ja siihen on suomalaisen akateemisen käyttäjän helpointa saada käyttöoikeus.
Kun siirrät koodiasi kannettavaltasi Roihu-supertietokoneelle, on tärkeää ymmärtää, että Roihu ei ole vain "nopeampi kannettava". Koska mittakaava on perustavanlaatuisesti erilainen, jotkin asiat toimivat supertietokoneessa hyvin eri tavalla. Varaudu siis ottamaan askel taaksepäin ja opettelemaan uudelleen joitakin laskennan toimintatapoja. Pidämme tätä kohtuullisena hintana siitä, että saat käyttöösi Suomen tehokkaimman tutkijoille tarkoitetun GPU-resurssin!
Linuxin perustaidot
Vaikka tämä opas pyrkii selittämään jokaisen vaiheen huolellisesti, on silti suositeltavaa, että sinulla on vähintään perustason tuntemus Linuxin komentorivistä, sillä sinun täytyy käyttää sitä muutamassa vaiheessa. Voit esimerkiksi tutustua Linuxin perusteet -oppaamme ensimmäiseen osioon.
Vaihe 1: Hanki CSC-käyttäjätunnus
Ensimmäiseksi tarvitset CSC-käyttäjätunnuksen, jos sinulla ei vielä ole sellaista. Jos työskentelet tai opiskelet suomalaisessa yliopistossa, siirry MyCSC-portaaliin osoitteessa my.csc.fi ja napsauta "Create account". Valitse Haka-kirjautuminen ja oma yliopistosi pudotusvalikosta. Tämän jälkeen sinun pitäisi voida kirjautua sisään tavallisilla yliopistotunnuksillasi. Täytä tietosi Sign up -sivulla. Kun olet valmis, sinun pitäisi saada vahvistussähköposti.
Lisätietoja ja erityistapauksia löydät erillisestä "How to create new user account" -dokumentaatiostamme. Huomaa, että sinun täytyy olla ottanut käyttöön monivaiheinen tunnistautuminen yliopistosi kautta tai määrittänyt CSC MFA:n.
Vaihe 2: Liity olemassa olevaan projektiin tai luo uusi
Toiseksi sinun täytyy kuulua laskentaprojektiin. Tämä johtuu siitä, että CSC:n on seurattava, miten resurssejamme käytetään, ja laskentaprojektit ovat siihen käytettävä mekanismi.
Jos kuulut tutkimusryhmään, kysy professoriltasi tai ryhmäsi vetäjältä, onko teillä jo CSC-projekti, johon voit liittyä. Jos näin on, projektin johtaja (todennäköisesti professori) voi lisätä sinut projektiin MyCSC-portaalin kautta. Katso tarkemmat ohjeemme siitä, kuinka uusi käyttäjä lisätään projektiin
Muussa tapauksessa, esimerkiksi jos työskentelet oman väitöskirjaprojektisi parissa, voit luoda oman projektin. Luodaksesi uuden projektin, siirry My CSC:hen ja kirjaudu sisään kuten yllä olevassa vaiheessa 1. Valitse Projects ja napsauta New project -painiketta. "Academic" on useimmissa tapauksissa todennäköisesti sopiva luokka. Anna projektille nimi ja kuvaile lyhyesti tekemääsi tutkimusta. Lisätietoja löydät "Creating a new project" -dokumentaatiostamme.
Kun projektisi on luotu, sinun täytyy myös lisätä projektiisi käyttöoikeus Roihuun. Katso lisätietoja kohdasta Palvelun käyttöoikeuden lisääminen projektille.
Kirjoita muistiin projektin tunniste, joka on tyypillisesti
jotain muotoa project_2001234. Tässä dokumentissa käytämme jatkossa
project_2001234:ää paikkamerkkinä aina, kun viittaamme projektin
tunnisteeseen, mutta muista aina korvata se omalla todellisella projektinumerollasi.
Vaihe 3: Kirjaudu Roihuun
Roihuun pääsee monella tavalla. Perinteinen tapa on käyttää SSH-asiakasohjelmaa, joka tarjoaa pelkästään tekstipohjaisen komentoriviyhteyden Roihussa toimivaan Linux-järjestelmään. Ellet kuitenkaan tunne tätä hyvin, suosittelemme Roihun selainkäyttöliittymää, johon pääsee verkkoselaimella osoitteessa www.roihu.csc.fi. Sinne kirjaudutaan yleensä Hakalla, samalla tavalla kuin MyCSC:hen. Tässä vaiheessa sinua voidaan pyytää syöttämään myös monivaiheisen tunnistautumisen (MFA) koodi.
Roihu-tilin aktivointi ei tapahdu heti
Jos olet juuri luonut tilisi muutama minuutti sitten, voi olla, että sitä ei ole vielä aktivoitu Roihussa. Käy hakemassa kahvia tai muuta haluamaasi juotavaa ja yritä uudelleen muutaman minuutin kuluttua! ☕
Kirjautumisen jälkeen näet Roihun selainkäyttöliittymän, joka näyttää suunnilleen tältä:

Jos Roihun selainkäyttöliittymä (perustuu Open OnDemandiin) ei ole sinulle tuttu, käytä hetki sen toimintojen tutustumiseen.
Toistaiseksi tärkeimmät tarkistettavat asiat ovat:
-
Files-valikko, jonka pitäisi näyttää useita levyalueita käyttöösi: henkilökohtainen Home directory sekä
projappl- jascratch-hakemistot jokaiselle projektillesi. -
Tools → Login node shell, jolla käynnistät päätesession Roihussa. Täältä voit suorittaa Linux-komentoja.
Roihussa on erilliset CPU- ja GPU-puolet
Roihussa on erilliset CPU- ja GPU-puolet, nimeltään Roihu-CPU ja Roihu-GPU. GPU:iden lisäksi Roihu-GPU:ssa on myös erilainen CPU-arkkitehtuuri, minkä vuoksi on tärkeää valita oikea kirjautuminen sen mukaan, aiotko käyttää GPU:ita vai et.
GPU:t – tekoälyyn ja koneoppimiseen tarvittavat kiihdytinkortit
Jos et ole varma, tarvitsetko GPU:ita, tarkista käyttämäsi ohjelmisto. Mainitaanko siinä GPU-tuki? Esimerkiksi PyTorch ja TensorFlow hyötyvät tyypillisesti GPU:ista. Yleinen nyrkkisääntö on, että kaikki neuroverkkoja käyttävä (esimerkiksi tekoälysovellukset) hyötyy yleensä GPU:ista. Tässä opastuksessa käytämme Roihu-GPU:ta.
Vaihe 4: Kopioi koodisi Roihuun
On suositeltavaa säilyttää koodisi sen projektin projappl-hakemistossa,
johon koodisi kuuluu, esimerkiksi /projappl/project_2001234/. Voit
siirtyä tähän sijaintiin Roihun selainkäyttöliittymän tiedostoselaimessa.
Jos sinulla on koodia omalla tietokoneellasi, yksi vaihtoehto on käyttää "Upload"-painiketta tiedostoselaimen oikeassa yläkulmassa.
Meidän tapauksessamme kloonaamme koodin GitHub-repositoriosta, ja sitä varten meidän täytyy avata päätesessio. Napsauta tiedostoselaimessa "Open in Terminal" tai käynnistä Login node shell (Roihu-GPU) Tools-valikosta. Kirjoita sitten seuraavat komennot (ja paina ENTER jokaisen rivin lopuksi):
Tämän pitäisi luoda kopio annetun GitHub-repositorion koodista Roihun levylle. Voit nyt siirtyä vastaluotuun hakemistoon joko päätteen kautta tai tiedostoselaimella.
Esimerkkikoodi
Olemme tässä tarjonneet esimerkkikoodia yksinkertaisen neuroverkon opettamiseen CIFAR10-datalla. Voit tietenkin korvata sen omalla koodillasi, esimerkiksi omalta tietokoneeltasi.
Tiedostoselaimessa voit tarkastella tiedostoa napsauttamalla sitä. Tarkista erityisesti
päälähdekoodi tiedostossa cifar10_cnn.py. Tiedoston loppupuolella
näet komentorivivalinnat. Huomaa, että --data_path on pakollinen
valinta; se on polku siihen, missä aineisto sijaitsee.
Tiedostoselaimessa voit muokata tiedostoa napsauttamalla tiedostokohtaista valikkoa (kolme pistettä) ja valitsemalla Edit, kuten alla on esitetty.

Vaihe 5: Kopioi datasi Roihuun
On suositeltavaa säilyttää opetusdata projektin scratch-hakemistossa,
esimerkiksi /scratch/project_2001234/. Muista, että scratch-alue siivotaan
säännöllisesti, joten älä säilytä siellä mitään tärkeää. Aineistoilla
tulisi yleensä olla toinen pysyvämpi sijainti, kuten
Allas säilytystä varten projektin elinkaaren ajan.
Voit siirtyä kohtaan /scratch/project_2001234/ Files-selaimessa
Roihun selainkäyttöliittymässä. Tässä haemme aineiston julkisesta Allas-ämpäristä
komennolla wget. wget-komentoa voidaan käyttää minkä tahansa URL-osoitteen
omaavien tiedostojen lataamiseen.
Kirjoita komento aineiston lataamiseksi (avaa pääte kuten vaiheessa 4, jos et ole vielä tehnyt sitä):
Ladattu tiedosto on pakattu arkisto CIFAR10-aineistosta Python-ystävällisessä muodossa.
Seuraavaksi voisit purkaa arkiston, mutta tässä esimerkissä olemme päättäneet olla tekemättä niin. Sen sijaan puramme tiedostot nopealle paikalliselle levylle jokaisen ajon alussa. Lisää tästä seuraavassa osiossa.
Vaihe 6: Tarkista, mitä Python-kirjastoja tarvitset
Ennen koodisi suorittamista sinun kannattaa tarkistaa, mitä Python-kehyksiä tai -kirjastoja
tarvitset. Jos käytät Internetistä lataamaasi koodia,
siellä on yleensä asennusohjeita tai requirements.txt-tiedosto,
joka kertoo, mitä Python-kirjastoja tarvitaan. Muista, että usein
asennusohjeita ei pidä noudattaa täsmälleen sellaisinaan, koska niissä oletetaan usein,
että asennat ohjelmistoa henkilökohtaiselle tietokoneelle.
CSC tarjoaa monia valmiiksi asennettuja Python-ympäristöjä suosittuja kehyksiä ja kirjastoja varten. Niitä kannattaa yleensä käyttää lähtökohtana, vaikka ne eivät sisältäisikään kaikkia tarvitsemiasi paketteja. Katso luettelo CSC:n supertietokoneilla tarjolla olevista data-analytiikan ja koneoppimisen moduuleista.
Esimerkiksi PyTorchilla ja
TensorFlow’lla on omat erilliset moduulinsa, kun taas
Python Data on yleinen moduuli, joka sisältää monia
data-analyysin kirjastoja, kuten numpy, SciPy, Scikit-learn, Dask, JupyterLab
ja monia muita. Nämä ohjelmistoympäristöt voidaan aktivoida komennolla module
load. Katso yllä luetelluilta dokumentaatiosivuilta tarkemmat tiedot.
Jos löydät moduulin, jossa on suurin osa tarvitsemastasi, mutta muutama
paketti puuttuu, voit helposti asentaa ne itse (kotihakemistoosi)
komennolla pip install yhdessä Pythonin virtuaaliympäristön ("venv") kanssa.
Katso Python-dokumentaatiostamme lisätietoja pakettien
asentamisesta itse.
Jos ohjelmistotarpeesi ovat monimutkaisemmat eikä niitä ole helppo kattaa nykyisillä moduuleillamme, on aina mahdollista luoda omia Python-ympäristöjäsi. Jos et ole varma, mitä tehdä, voit aina ottaa yhteyttä asiakastukeemme.
Vaihe 7: Luo ensimmäinen eräajon komentotiedosto
Roihu on supertietokoneklusteri, mikä tarkoittaa, että se on satojen tietokoneiden kokoelma. Ohjelmia ei ajeta suoraan, vaan ne laitetaan jonoon, ja ajastusjärjestelmä (nimeltään "Slurm") päättää, milloin ja missä ohjelma suoritetaan.
Jotta ohjelma voidaan suorittaa Slurmissa, meidän täytyy määritellä eräajon komentotiedosto. Tämä on vain tekstitiedosto, joka sisältää joukon Slurm-valintoja määrittelemään ohjelmalle tarvitsemamme resurssit sekä varsinaiset komennot, joilla ohjelma suoritetaan. Voit lukea lisää eräajon komentotiedostojen määrittelystä erilliseltä dokumentaatiosivultamme.
Tiedostosta run-cifar10.sh koodihakemistossamme löydät esimerkin
eräajon komentotiedostosta:
#!/bin/bash
#SBATCH --account=project_2001234
#SBATCH --partition=gputest
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=72
#SBATCH --time=15
#SBATCH --gres=gpu:gh200:1
module purge
module load python-pytorch/2.13
tar xf /scratch/project_2001234/cifar-10-python.tar.gz -C $TMPDIR
srun python3 cifar10_cnn.py --data_path=$TMPDIR/cifar-10-batches-py
Tämä suorittaa työn gputest-osiossa käyttäen 72 CPU-ydintä ja
yhtä NVIDIA GH200 GPU:ta. CPU- ja GPU-muistin määrä on
automaattisesti suurin mahdollinen (96 Gt GPU-muistia, 120 Gt CPU-muistia). Työn
enimmäiskesto on 15 minuuttia. Itse asiassa 15 minuuttia on pisin
ajoaika, jonka voit pyytää gputest-osiossa, koska se on tarkoitettu
vain lyhyisiin testiajoihin.
#SBATCH-valintojen alapuolella näet varsinaiset komennot. Komentotiedostomme tekee
kolme asiaa:
- Lataa
python-pytorch-moduulin tietyllä versiolla (ja ensin poistaa kaikki muut aiemmin ladatut moduulit) - Purkaa CIFAR10-aineiston scratch-alueella olevasta arkistosta
nopealle paikalliselle levylle. Nopean paikallisen levyn polku löytyy
ympäristömuuttujasta
$TMPDIR. Scratch-alueen polku vaihtelee projektin nimen mukaan, joten sinun täytyy muokata komentotiedostoa asettaaksesi oikean polun omaan tapaukseesi. - Lopuksi se suorittaa varsinaisen Python-skriptin käyttäen argumentissa
--data_pathannettua polkua siihen, missä data sijaitsee. Huomaa, että data on nyt nopealla paikallisella levyllä.
Nopean paikallisen tallennustilan käyttö on hyvä ajatus
Sinun ei tarvitse käyttää nopeaa paikallista levyä ($TMPDIR) kuten tässä esimerkissä,
mutta se on hyvä käytäntö, koska suuren tiedostomäärän lukeminen
jaetusta tiedostojärjestelmästä (kuten scratchista ja projapplista) voi aiheuttaa heikon
suorituskyvyn ja ääritapauksissa heikentää suorituskykyä kaikille käyttäjille.
Lue lisää tiedostojärjestelmän tehokkaasta käytöstä koneoppimisen oppaastamme.
Vaihe 8: Suorita ensimmäinen testiajo
Suorittaaksesi komentotiedoston eli lähettääksesi sen Slurm-jonoon, suorita komento (koodihakemistosta):
Jos lähetys onnistui, sen pitäisi ilmoittaa jotakin tämän kaltaista:
Jos näet sen sijaan jonkin virheilmoituksen, katso yleisten eräajovirheiden sivuamme. Jos et löydä sieltä ratkaisua, älä epäröi ottaa yhteyttä asiakastukeemme.
Voit tarkistaa käynnissä olevan työsi joko päätteestä:
tai Roihun selainkäyttöliittymän valikosta Jobs → Active Jobs.
Vaihe 9: Tarkista työn tuloste
Kun työ on päättynyt, sen tulosteen pitäisi ilmestyä tiedostoon, jonka nimi on jotakin
kuten slurm-12345678.out, missä numero on työsi eräajon tunniste
(tulostetaan lähetyshetkellä). Voit tarkastella tätä tiedostoa napsauttamalla sitä
tiedostoselaimessa tai käyttämällä esimerkiksi komentorivillä less-komentoa (paina 'q' poistuaksesi
less:stä).
Kun olet tyytyväinen siihen, että työ toimii kuten pitääkin, voit ajaa sen varsinaisessa
gpumedium-osiossa, joka sallii yli 15 minuutin pituiset työt. Muokkaa vain
run-cifar10.sh-tiedostoa vaihtaaksesi osion arvoksi gpumedium ja lähetä työ uudelleen.
Huomaa, että voit lähettää monta työtä samaan aikaan, esimerkiksi eri parametreilla. Älä kuitenkaan lähetä satoja töitä samanaikaisesti.
Vaihe 10: Lisälukemista ja avun saaminen
Nyt kun olet päässyt alkuun, saatat olla kiinnostunut tutustumaan muuhun dokumentaatioomme. Esimerkiksi:
- Töiden ajaminen Slurmilla
- Sovellukset Roihussa, erityisesti PyTorch ja TensorFlow.
- CSC:n koneoppimisen opas
Jos sinulla on kysyttävää tästä oppaasta tai muita ongelmia koneoppimisen käytön aloittamisessa CSC:n palveluissa, älä epäröi ottaa yhteyttä asiakastukeemme.