-
Töiden lähettäminen SD Desktopista CSC:n HPC-ympäristöön
Töiden lähettäminen SD Desktopista CSC:n HPC-ympäristöön
SD Desktop -virtuaalikoneiden rajallinen laskentakapasiteetti voi estää raskaiden analyysitehtävien suorittamisen sensitiiviselle datalle. Tässä dokumentissa kuvataan, miten raskaita laskentatehtäviä voidaan lähettää SD Desktopista Puhdin HPC-klusteriin.
Huomaa seuraavat yksityiskohdat, jotka rajoittavat tämän menettelyn käyttöä:
- Palvelu ei ole vielä täydessä tuotantokäytössä. Käyttöoikeutta voidaan pyytää projekteille, joiden laskentatehtävät sopivat palvelun nykyiseen tilaan. Ota yhteyttä osoitteeseen servicedesk@csc.fi tämän palvelun käyttöönottoa varten.
- Tässä dokumentissa kuvattu työnlähetystyökalu sdsi-client 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 suojaustaso 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 työnlähetys sdsi-clientillä tarjoaa vielä korkeamman suojaustason Puhdin käyttöön. Lisäsuojaus perustuu kahteen pääominaisuuteen:
- Sekä syöte- että tulosdata tallennetaan ja siirretään salatussa muodossa. Salaus tehdään automaattisesti SD Connect -menetelmän avulla.
- Varsinaista analyysiä varten data puretaan väliaikaisesti laskentasolmun paikalliselle levyalueelle, joka on varattu kokonaan vain tälle yhdelle työlle. Näin solmulla 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 prosessilistaa. Tämän keskeisen rajoituksen toteuttavat tekniset ja toiminnalliset toimet on kuvattu Puhti TOMeissa.
Aloittaminen
Lisää Puhti-palvelu projektiisi. Ota sen jälkeen yhteyttä CSC:hen (sevicedesk@csc.fi) ja pyydä, että Puhti-käyttöoikeus luodaan SD Desktop -ympäristöösi. Jos CSC arvioi käyttötapauksesi sopivaksi tähän palveluun, projektiisi luodaan robottikäyttäjätunnus ja CSC käynnistää projektikohtaisen palvelinprosessin projektiasi varten.
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 installer -työkalulla SD Desktop -koneellesi.
Datan lataaminen SD Connectiin
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. Sen sijaan Puhdin paikallisia tiedostoja voidaan 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 ladata syötedata SD Connectiin.
Eräajotiedoston muodostaminen
Kun lähetät eräajotyön SD Desktopista, sinun on määriteltävä seuraavat tiedot:
- Mitkä tiedostot on ladattava SD Connectista Puhtiin käytettäväksi syötetiedostoina (
data:) - Mitkä komennot suoritetaan (
run:) - Mikä data viedään Puhdista SD Connectiin työn päättyessä
- Kuinka paljon resursseja (aikaa, muistia, väliaikaista levytilaa) työ tarvitsee (
sbatch:)
Voit määritellä nämä komentorivillä sdsi-client-komennon valitsimilla, 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 alta.
Työn lähettäminen
Tiedostossa määritelty työ voidaan lähettää komennolla:
Lähetyskomento pyytää CSC-salasanaasi, 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 Puhdissa komennollasacct:
Käsittelyn vaiheet
sdsi-clientillä lähetetty tehtävä siirretään Puhdin eräajojärjestelmään, jossa se 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 Puhdista SD Connectiin ämpäriin nimeltä: sdhpc-results-project_number, työn tunnuksen mukaan nimettyyn alikansioon. 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 suorittaminen
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 kahden tiedoston md5-tarkistussummien laskemisesta. 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, nextfllow tai snakemake useiden laskentatehtävien suorittamiseen 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
GNUparallel-pohjaisessa rinnakkaistuksessa työnkulku 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 Puhdin 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-tiedostojen tiedostolista 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 (md5sums.nf tässä tapauksessa) SD Connectiin. Tämä tiedosto määrittelee käsiteltävät syötetiedostot, suoritettavat komennot ja luotavat tulosteet. Huomaa, että et voi ladata tätä tiedostoa SD Connectiin SD Desktopista, vaan sinun on ladattava se esimerkiksi omalta tietokoneeltasi tai Puhdista.
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 (md5sums.snakefile tässä tapauksessa) SD Connectiin. Tämä tiedosto määrittelee käsiteltävät syötetiedostot, suoritettavat komennot ja luotavat tulosteet. Huomaa, että et voi ladata tätä tiedostoa SD Connectiin SD Desktopista, vaan sinun on ladattava se esimerkiksi omalta tietokoneeltasi tai Puhdista.
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 Puhdissa, ja se otetaan siellä käyttöön komennolla module load whisper.