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.

Laajenna CSC-pohjaisia ML-kontteja sandboxin avulla Roihussa

Tämä ohje on myös osa koneoppimisen opasta.

Tausta

Roihuun valmiiksi asennettujen PyTorch-moduulien käyttö on kätevää monissa työnkuluissa. Kun työskennellään eri kirjastojen kanssa, käyttäjät saattavat kuitenkin tarvita PyTorch-versioita tai muita kirjastoja, joita CSC ei ole asentanut.

Esimerkiksi uusin fairchem-core-julkaisu vaatii tuoreen PyTorch-version. Tässä ohjeessa näytämme, kuinka rakennetaan mukautettu Apptainer-kontti CSC:n ml-base-kuvan pohjalta ja asennetaan PyTorch 2.13.0 CUDA 13.0:lla yhdessä fairchem-core 2.22.0:n kanssa.

Työvuo käyttää Apptainerin sandboxia kirjoitettavana ympäristönä asennuksen aikana. Kun tarvittavat ohjelmistot on asennettu, sandbox muunnetaan siirrettäväksi .sif-kuvaksi, jota voidaan käyttää myöhemmissä FairChem-työkuormissa.

Huomio

Alla olevat komennot on tarkoitettu ajettaviksi Roihussa, mutta ne on helppo sovittaa myös muihin klustereihin.

Varaa resurssit

Käynnistä interaktiivinen GPU-ajo tarvittavilla resursseilla. Tässä pyydämme 1 GPU:n 1 tunniksi. Emme suosittele käyttäjiä pyytämään enempää kuin tarvitsevat, koska GPU:t ovat arvokkaita resursseja:

salloc --account=project_***** \
    --nodes=1 \
    --ntasks-per-node=1 \
    --cpus-per-task=72 \
    --time=01:00:00 \
    --partition=gpuinteractive \
    --gres=gpu:gh200:1 

Aseta Apptainerin välimuistihakemisto

Aseta Apptainerin välimuistihakemisto osoittamaan $TMPDIR:iin, jotta kotihakemistosi ei täyty:

export APPTAINER_CACHEDIR="$TMPDIR/apptainer-cache"

Luo kirjoitettava sandbox ml-base-kuvasta

Alusta Apptainer-sandbox CSC:n ml-base-kuvasta:

apptainer build --fakeroot --sandbox "$TMPDIR/mlbase" \
    docker://satama.csc.fi/r_installation_aida/ml-base:rocky9.7_gcc12_py3.12_cuda13

Onnistuneen rakennuksen jälkeen sinun pitäisi nähdä esimerkiksi seuraavanlainen viesti:

INFO:    Build complete: /tmp/shanshan/715617/mlbase

Tarkka polku riippuu $TMPDIR:stäsi.

Vaihtoehto --sandbox luo kirjoitettavan hakemiston, joka sisältää puretun kontin tiedostojärjestelmän. Näin voit asentaa ja muokata ohjelmistoja interaktiivisesti ennen lopullisen SIF-kuvan luomista.

Warning

Älä luo sandboxia jaetulle Lustre-tiedostojärjestelmälle (esimerkiksi hakemistoihin /scratch, /projappl tai /home), koska se luo paljon pieniä tiedostoja, mikä voi hidastaa järjestelmää kaikille käyttäjille!

Luo users-hakemisto

Luo sandboxin sisään users-hakemisto:

mkdir -p "$TMPDIR/mlbase/users"

Siirry sandboxiin

Käynnistä kirjoitettava komentotulkki sandboxin sisällä. Vaihtoehto --nv tuo NVIDIA-GPU:n ja siihen liittyvät NVIDIA-kirjastot kontin sisälle käyttöön:

apptainer shell --fakeroot --writable --nv \
    --contain --cleanenv \
    --bind="$TMPDIR:/tmp" \
    "$TMPDIR/mlbase"

Työskentelet nyt kirjoitettavan mlbase-sandboxin sisällä.

Määritä pipin välimuisti

Määritä kontin sisällä pip käyttämään välimuistihakemistoa /tmp:n alla:

export PIP_CACHE_DIR=/tmp/pip-cache

Koska $TMPDIR on sidottu kontin sisällä hakemistoon /tmp, pipin välimuisti tallennetaan konttikuvan ulkopuolelle.

Väliaikainen ratkaisu useradd- ja groupadd-komentoihin

Jos pakettien asennus epäonnistuu, koska useradd- tai groupadd-komentoja ei voida suorittaa sandboxissa, korvaa nämä komennot komennolla /usr/bin/true:

cp /usr/bin/true /usr/sbin/useradd
cp /usr/bin/true /usr/sbin/groupadd

Tämä estää pakettien asennusskriptejä epäonnistumasta, kun ne yrittävät luoda järjestelmäkäyttäjiä tai -ryhmiä.

Asenna PyTorch 2.13.0 CUDA 13.0:lla

Asenna PyTorch 2.13.0 ja torchvision käyttäen CUDA 13.0:n PyTorch wheel -indeksiä:

pip install torch==2.13.0 torchvision \
    --index-url https://download.pytorch.org/whl/cu130

Halutessasi voit varmistaa asennuksen:

python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

Tulosteen pitäisi näyttää asennettu PyTorch-versio ja kertoa, onko CUDA käytettävissä.

Asenna fairchem-core 2.22.0

pip install fairchem-core==2.22.0

Varmista asennus:

python -c "from fairchem.core import pretrained_mlip, FAIRChemCalculator; print('fairchem ok')"

Poistu sandboxista

Kun kaikki tarvittavat ohjelmistot on asennettu, poistu kontista:

exit

Sinun pitäisi nyt olla takaisin isäntäympäristössä.

Rakenna SIF-kuva

Muunna kirjoitettava sandbox tavalliseksi Apptainer SIF -kuvaksi:

apptainer build --fakeroot fairchem.sif "$TMPDIR/mlbase"

Tuloksena syntyvä kuva on tiedostossa fairchem.sif. SIF-muoto on siirrettävä, vain luku -muotoinen Apptainer-kuva, jota voidaan käyttää myöhemmissä ajoissa.

Varmista SIF-kuva

Tarkista luodun kontin koko:

ls -lh fairchem.sif

SIF-tiedosto on tyypillisesti kooltaan useita gigatavuja riippuen konttiin asennetuista paketeista.

Testaa kontti

Varmista lopuksi, että sekä FairChem että PyTorch voidaan tuoda luodusta SIF-kuvasta:

apptainer exec fairchem.sif \
    python -c "import fairchem.core, torch; print(torch.__version__)"

Jotta GPU olisi käytettävissä, lisää lippu --nv. Lisäksi Roihussa voidaan käyttää komentoa csc-common-bind listaamaan sidonnat yleisiin levyalueisiin, kuten /scratch ja /projappl:

apptainer exec --bind="$(csc-common-bind)" --nv fairchem.sif \
    python -c "import torch; print('PyTorch:', torch.__version__); print('CUDA available:', torch.cuda.is_available())"
Jos komennot suorittuvat onnistuneesti, mukautettu FairChem-kontti on rakennettu onnistuneesti. Voit siirtää syntyneen SIF-tiedoston sopivaan paikkaan, esimerkiksi projektin hakemistoon polussa /projappl.

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta