Hyppää sisältöön

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.

Learn more about 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:

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

  1. Mitkä tiedostot pitää ladata SD Connectista Puhtiin syötetiedostoiksi (data:)
  2. Mitkä komennot suoritetaan (run:)
  3. Mikä data viedään Puhtista SD Connectiin työn päättyessä
  4. 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:

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

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

sacct -j 123456

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:

  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 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:

    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 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()
}
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 (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.

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
Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

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