Hyppää sisältöön

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.

Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

Kerro meille miten voisimme parantaa tätä sivua ottamalla meihin yhteyttä .