-
Laajenna CSC-pohjaisia ML-kontteja sandboxin avulla Roihussa
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:
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:
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:
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:
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:
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ä:
Halutessasi voit varmistaa asennuksen:
Tulosteen pitäisi näyttää asennettu PyTorch-versio ja kertoa, onko CUDA käytettävissä.
Asenna fairchem-core 2.22.0
Varmista asennus:
Poistu sandboxista
Kun kaikki tarvittavat ohjelmistot on asennettu, poistu kontista:
Sinun pitäisi nyt olla takaisin isäntäympäristössä.
Rakenna SIF-kuva
Muunna kirjoitettava sandbox tavalliseksi Apptainer SIF -kuvaksi:
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:
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:
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())"
/projappl.