Töiden lähettäminen SD Desktopista CSC:n HPC-ympäristöön
Page undergoing cleanup after Puhti and Mahti retirement
This page contains outdated references to Puhti and/or Mahti, which have now been decommissioned. The page is undergoing changes to reflect CSC's new supercomputer Roihu.
SD Desktop -virtuaalikoneiden rajallinen laskentakapasiteetti voi estää raskaiden analyysitehtävien ajamisen sensitiiviselle datalle. Tämä dokumentti kuvaa, miten raskaita laskentatehtäviä voidaan lähettää SD Desktopista Puhti-HPC-klusteriin.
Huomaa seuraavat tämän menettelyn käyttöä rajoittavat seikat:
- Palvelu ei ole vielä täydessä tuotantokäytössä. Käyttöoikeutta voidaan pyytää projekteille, joiden laskentatehtävät ovat yhteensopivia palvelun nykytilan kanssa. Ota yhteyttä osoitteeseen servicedesk@csc.fi tämän palvelun käyttöönottamiseksi.
- Tässä dokumentissa kuvattu sdsi-client-töidenlähetystyökalu toimii vain hyväksytyille projekteille.
- Jokainen työ varaa aina yhden, ja vain yhden, kokonaisen Puhti-solmun tehtävääsi varten. Pyri rakentamaan eräajotyösi niin, että se käyttää tehokkaasti yhden Puhti-solmun kaikki 40 laskentaydintä.
- Työn käyttämät syötetiedostot on ladattava SD Connectiin ennen työn lähettämistä. Vaikka työ lähetetään SD Desktopista, et voi hyödyntää eräajotyössä mitään SD Desktop -virtuaalikoneen tiedostoja.
- SD Desktopista Puhtiin lähetetyillä töillä on korkeampi turvallisuustaso kuin tavallisilla Puhti-töillä, mutta matalampi kuin SD Desktopissa.
Tietoturvanäkökohdat
CSC:n Puhti-klusteri tarjoaa turvallisen ja hyvin ylläpidetyn ympäristön laskennalliseen tutkimukseen ja data-analyysiin. Technical and Organizational Measures (TOMs) in the Puhti Supercomputer Service sisältää yksityiskohtaista tietoa klusterin tietoturvatoimista.
Sensitiivisen datan töiden lähettäminen sdsi-clientillä tarjoaa Puhtin käyttöön vielä korkeamman turvallisuustason. Korotettu turvallisuustaso perustuu kahteen pääominaisuuteen:
- Sekä syöte- että tulosdata tallennetaan ja siirretään salatussa muodossa. Salaus tehdään automaattisesti SD Connectin menetelmällä.
- Varsinaista analyysiä varten data puretaan väliaikaisesti salauksesta laskentasolmun paikalliselle levyalueelle, joka on varattu kokonaan vain tätä yhtä työtä varten. Näin solmussa ei ole työn suorituksen aikana muita käyttäjiä, eivätkä muut käyttäjät voi käsittelyn aikana käyttää solmun levyalueita, muistia tai prosessiluetteloa. Tämän keskeisen rajoituksen toteuttavat tekniset ja toiminnalliset toimet on kuvattu Puhtin TOMeissa.
Käytön aloittaminen
Lisää Puhti-palvelu projektiisi. Ota sen jälkeen yhteyttä CSC:hen (servicedesk@csc.fi) ja pyydä, että SD Desktop -ympäristöösi luodaan Puhti-käyttöoikeus. Jos CSC arvioi käyttötapauksesi sopivaksi tähän palveluun, projektiisi luodaan robottitunnus ja CSC käynnistää projektillesi projektikohtaisen palvelinprosessin.
Töiden lähettäminen
Työt lähetetään SD Desktopissa komennolla sdsi-client. Tämä komento voidaan lisätä SD Desktop -koneellesi asentamalla CSC Tools SD tool installerilla SD Desktop -koneellesi.
Datan lataaminen
sdsi-clientin lähettämät eräajotyöt lukevat syötedatan SD Connect -palvelusta. Siksi kaikki syötedata on ladattava SD Connectiin ennen työn lähettämistä. Huomaa, että et voi käyttää eräajotyön syötetiedostoina SD Desktop -virtuaalikoneesi paikallisilla levyillä olevaa dataa etkä SD Connectissa olevia salaamattomia tiedostoja. Puhtissa olevia paikallisia tiedostoja voidaan kuitenkin käyttää, jos käyttöoikeudet sallivat kaikkien ryhmän jäsenten käyttää dataa.
Siksi sensitiivisen datan eräajotyön lähettämisen ensimmäinen vaihe on syötedatan lataaminen SD Connectiin.
Eräajotiedoston muodostaminen
Kun lähetät eräajotyön SD Desktopista, sinun on määriteltävä seuraavat tiedot:
- Mitkä tiedostot pitää ladata SD Connectista Puhtiin syötetiedostoiksi (
data:) - Mitkä komennot suoritetaan (
run:) - Mikä data viedään Puhtista SD Connectiin työn päättyessä
- Kuinka paljon resursseja (aikaa, muistia, väliaikaista levytilaa) työ tarvitsee. (
sbatch:)
Voit määritellä nämä sdsi-client-komennon valitsimina komentorivillä, mutta yleensä on kätevämpää antaa nämä tiedot eräajotyön määritystiedostossa. Alla on esimerkki yksinkertaisesta sdsi-työn määritystiedostosta nimeltä job1.sdsi
data:
recv:
- 2008749-sdsi-input/data1.txt.c4gh
- 2008749-sdsi-input/data2.txt.c4gh
run: |
md5sum 2008749-sdsi-input/data1.txt
md5sum 2008749-sdsi-input/data2.txt
sbatch:
- --time=00:15:00
- --partition=test
Lisää esimerkkejä sdsi-eräajotöistä löytyy alempaa.
Työn lähettäminen
Tiedostossa määritelty eräajotyö voidaan lähettää komennolla:
Lähetyskomento pyytää CSC-salasanasi, minkä jälkeen se lähettää tehtävän eräajojonoon. Lähetyksen jälkeen komento tulostaa työn tunnistenumeron. Voit käyttää tätä tunnistenumeroa työsi tilan tarkistamiseen. Esimerkiksi työn 123456 tilan voit tarkistaa SD Desktopissa komennolla: Vaihtoehtoisesti voit käyttää tätä tunnusta Puhtissa komennollasacct:
Käsittelyn vaiheet
sdsi-clientillä lähetetty tehtävä siirretään Puhtin eräajojärjestelmään, jossa sitä käsitellään muiden eräajotöiden joukossa. Eräajotyön resurssivaatimukset: laskenta-aika, muisti, paikallisen levyn koko, GPU:t, asetetaan työnkuvaustiedoston sbatch:-osiossa määriteltyjen arvojen mukaisesti.
Varsinainen laskenta alkaa vasta, kun sopiva Puhti-solmu on saatavilla. Jonotusajat voivat olla pitkiä, koska työt varaavat aina yhden kokonaisen solmun, jossa on riittävästi paikallista levytilaa ja muistia.
Varsinaisen laskennan suoritus sisältää seuraavat vaiheet:
- Työnkuvaustiedostossa määritellyt syötetiedostot ladataan ja puretaan salauksesta laskentasolmun paikalliseen väliaikaiseen levytilaan.
- run:-osiossa määritellyt komennot suoritetaan
- Tulostiedostot salataan ja ladataan SD Connectiin.
- Paikallinen väliaikainen levytila siivotaan.
Tulosteet
Oletusarvoisesti vietävät tiedostot sisältävät eräajotyön vakiotulosteen ja vakiovirheen (tämä on teksti, joka interaktiivisessa työskentelyssä kirjoitetaan päätenäytölle) sekä hakemistossa $RESULTS olevat tiedostot.
Tulokset ladataan Puhtista SD Connectiin ämpäriin nimeltä: sdhpc-results-project_number, alikansioon, jonka nimi on eräajotyön tunnus. Yllä olevassa esimerkissä käytetty projekti oli 2008749 ja työn tunnus oli 123456. Näin työ tuottaisi SD Connectiin kaksi uutta tiedostoa:
Voit vaihtaa tulosämpärin sdsi-clientin valitsimella-bucket bucket-name. Huomaa, että myös tässä tapauksessa ämpärin nimen on oltava yksilöllinen.
Sarjatöiden tehokas ajaminen
sdsi-clientin lähettämät työt varaavat aina yhden kokonaisen Puhti-solmun. Näissä solmuissa on 40 laskentaydintä, joten sinun kannattaa käyttää näitä eräajotöitä tehtäviin, jotka voivat hyödyntää useita laskentaytimiä. Mieluiten kaikkia 40:tä.
Edellisessä esimerkissä varsinainen laskentatehtävä koostui md5-tarkistussummien laskemisesta kahdelle tiedostolle. Käytetty komento md5sum pystyy käyttämään vain yhtä laskentaydintä, joten työ tuhlasi resursseja, koska 40 ydintä varattiin mutta vain yhtä käytettiin.
Jos sinun kuitenkin täytyy laskea suuri määrä toisistaan riippumattomia tehtäviä, jotka pystyvät käyttämään vain yhtä tai muutamaa laskentaydintä, voit käyttää työkaluja kuten gnuparallel, nextflow tai snakemake lähettääksesi useita laskentatehtäviä suoritettavaksi samanaikaisesti.
Alla olevissa esimerkeissä meillä on SD Connectiin tallennettu tar-arkistotiedosto: 2008749-sdsi-input/data_1000.tar.c4gh. Tar-tiedosto sisältää 1000 tekstitiedostoa (.txt), joille haluamme laskea md5sum-arvot. Alla on kolme vaihtoehtoista tapaa suorittaa tehtävät niin, että kaikki 40 ydintä käytetään tehokkaasti.
GNUparallel
GNUparalleliin perustuvassa rinnakkaistuksessa työnvuo voisi näyttää seuraavalta:
data:
recv:
- 2008749-sdsi-input/data_1000.tar.c4gh
run: |
source /appl/profile/zz-csc-env.sh
module load parallel
tar xf 2008749-sdsi-input/data_1000.tar
cd data_1000
ls *.txt | parallel -j 40 md5sum {} ">" {.}.md5
tar -cvf md5sums.tar *.md5
mv md5sums.tar $RESULTS/
sbatch:
- --time=04:00:00
- --partition=small
Yllä olevassa esimerkkityössä ensimmäistä komentoa source /appl/profile/zz-csc-env.sh käytetään lisäämään
module-komento ja muut Puhtin asetukset suoritusympäristöön.
GNUparallel otetaan käyttöön komennolla module load parallel.
Seuraavaksi 1000 tiedostoa sisältävä tar-tiedosto puretaan väliaikaiselle paikalliselle levyalueelle.
Lopuksi puretun hakemiston .txt-tiedostoluettelo ohjataan parallel-komennolle, joka suorittaa annetun komennon md5sum jokaiselle tiedostolle ({}) käyttäen 40 rinnakkaista prosessia (-j 40).
NextFlow
Jos haluat käyttää NextFlow’ta, sinun on ensin ladattava NextFlow-tehtävätiedosto (tässä tapauksessa md5sums.nf) SD Connectiin. Tämä tiedosto määrittelee käsiteltävät syötetiedostot, suoritettavat komennot ja tuotettavat tulosteet. Huomaa, että et voi ladata tätä tiedostoa SD Connectiin SD Desktopista, vaan sinun on ladattava se esimerkiksi omalta tietokoneeltasi tai Puhtista.
NextFlow-tiedoston md5sums.nf sisältö
nextflow.enable.dsl=2
process md5sum {
tag "$filename"
input:
path txt_file from files("*.txt")
output:
path "${txt_file}.md5"
script:
"""
md5sum $txt_file > ${txt_file}.md5
"""
}
workflow {
md5sum()
}
data:
recv:
- 2008749-sdsi-input/md5sums.nf.c4gh
- 2008749-sdsi-input/data_1000.tar.c4gh
run: |
source /appl/profile/zz-csc-env.sh
module load nextflow
tar xf 2008749-sdsi-input/data_1000.tar
cp 2008749-sdsi-input/md5sums.nf data_1000
cd data_1000
nextflow run md5sums.nf -process.executor local -process.maxForks 40
tar -cvf md5sums.tar *.md5
mv md5sums.tar $RESULTS/
sbatch:
- --time=04:00:00
- --partition=small
SnakeMake
Jos haluat käyttää SnakeMakea, sinun on ensin ladattava SnakeMake-työtiedosto (tässä tapauksessa md5sums.snakefile) SD Connectiin. Tämä tiedosto määrittelee käsiteltävät syötetiedostot, suoritettavat komennot ja tuotettavat tulosteet. Huomaa, että et voi ladata tätä tiedostoa SD Connectiin SD Desktopista, vaan sinun on ladattava se esimerkiksi omalta tietokoneeltasi tai Puhtista.
SnakeMake-tiedoston md5sums.snakefile sisältö
txt_files = [f for f in os.listdir(".") if f.endswith(".txt")]
rule all:
input:
expand("{file}.md5", file=txt_files)
rule md5sum:
input:
"{file}"
output:
"{file}.md5"
shell:
"md5sum {input} > {output}"
Varsinainen sdsi-työtiedosto voisi näyttää tältä:
data:
recv:
- 2008749-sdsi-input/md5sums.snakefile.c4gh
- 2008749-sdsi-input/data_1000.tar.c4gh
run: |
source /appl/profile/zz-csc-env.sh
module load snakemake
mkdir snakemake_cache
export SNAKEMAKE_OUTPUT_CACHE=$(pwd)"/snakemake_cache"
tar xf 2008749-sdsi-input/data_1000.tar
cp 2008749-sdsi-input/md5sums.snakefile data_1000
cd data_1000
snakemake --cores 40 --snakefile md5sums.snakefile
tar -cvf md5sums.tar *.md5
mv md5sums.tar $RESULTS/
sbatch:
- --time=04:00:00
- --partition=small
GPU-laskenta
sdsi-clientiä voidaan käyttää myös Puhtin GPU-kapasiteettia hyödyntävien töiden lähettämiseen.
Alla olevassa esimerkissä GPU-laskentaa käytetään whisper-puheentunnistustyökalun nopeuttamiseen.
Whisper on asennettu Puhtiin, ja se otetaan siellä käyttöön komennolla module load whisper.