Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

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:

  1. Sekä syöte- että tulosdata tallennetaan ja siirretään salatussa muodossa. Salaus tehdään automaattisesti SD Connect -menetelmän avulla.
  2. 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:

  1. Mitkä tiedostot on ladattava SD Connectista Puhtiin käytettäväksi syötetiedostoina (data:)
  2. Mitkä komennot suoritetaan (run:)
  3. Mikä data viedään Puhdista SD Connectiin työn päättyessä
  4. 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:

sdsi-client new -input job1.sdsi
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:

sdsi-client status 123456
Vaihtoehtoisesti voit käyttää tätä tunnusta Puhdissa komennolla sacct:

sacct -j 123456

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:

  1. Työnkuvaustiedostossa määritellyt syötetiedostot ladataan ja puretaan salauksesta laskentasolmun paikalliseen väliaikaiseen levytilaan.
  2. run:-osiossa määritellyt komennot suoritetaan
  3. Tulostiedostot salataan ja ladataan SD Connectiin.
  4. 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:

    sdhpc-results-2008749/123456/slurm.err.tar.c4gh
    sdhpc-results-2008749/123456/slurm.out.tar.c4gh
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()
}
Varsinainen sdsi-työtiedosto voisi näyttää tältä:

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.

data:
  recv:
  - 2008749-sdsi-input/interview-52.mp4.c4gh
run: |
  source /appl/profile/zz-csc-env.sh
  module load whisper
  whisper --model large -f all -o $RESULTS --language Italian 2008749-sdsi-input/interview-52.mp4
sbatch:
- --time=01:00:00
- --gres=gpu:v100:1

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta