Hyppää sisältöön

Skriptien etäkehittäminen

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.

Täällä on lohikäärmeitä!

Vaikka skriptien etäkehittäminen voi olla hyödyllistä, siihen liittyy varsin paljon yhteysongelmia ja muita vaikeasti selvitettäviä ongelmia. Jos kohtaat ongelmia skriptien etäkehityksen aikana, emme valitettavasti voi taata, että pystymme ratkaisemaan niitä puolestasi. Erityisesti varsinaisten laskentojen ajaminen HPC-järjestelmissä etä-VS Coden kautta ei ole tuettua.

Suosittelemme käyttämään VSCode-, Jupyter- ja RStudio -sovelluksia, jotka ovat saatavilla supertietokoneidemme selainkäyttöliittymissä skriptaukseen tai koodin kehittämiseen HPC-ympäristöissä.

Voi olla kätevää käyttää IDE:tä, kuten Visual Studio Codea, niiden skriptien muokkaamiseen ja kehittämiseen, joita ajat Puhdissa, Mahdissa tai cPoudan virtuaalikoneessa.

  • Ei tarvitse käyttää komentorivin tekstieditoreja, kuten vi:tä, vimiä tai nanoa.
  • Ei tarvitse siirtää tiedostoja edestakaisin paikallisen tietokoneesi ja Puhdin/Mahdin/cPoudan välillä.

Tämä ohje sisältää joitakin VS Coden asennus- ja käyttöohjeita.

Visual Studio Code Remote SSH -liitännäisellä

Visual Studio Code on laajasti käytetty avoimen lähdekoodin koodieditori, jota voi käyttää etänä Remote SSH -laajennuksella. Se soveltuu erinomaisesti Python- ja bash-skripteille, mutta sitä voi käyttää minkä tahansa ohjelmointikielen kanssa. VS Codeen on saatavilla paljon laajennuksia. Jupyter-muistikirjojen ajamiseen suosittelemme kuitenkin ensisijaisesti Jupyter-sovellusta, joka on saatavilla HPC:n selainkäyttöliittymissämme.

Asennus

Voit asentaa VS Coden tietokoneellesi VS Coden verkkosivulta ja Remote SSH -liitännäisen ohjelman Extensions-välilehdeltä.

Remote SSH extension in Visual Studio Code

Note

Windows-käyttäjät tarvitsevat lisäksi asennetun SSH-asiakasohjelman, sillä PuTTyä ei tueta.

Jos sinulla on järjestelmänvalvojan oikeudet, voit ottaa OpenSSH:n käyttöön Windows 10:ssä.

Jos sinulla ei ole järjestelmänvalvojan oikeuksia, voit asentaa Git for Windowsin täältä ja määrittää VS Coden käyttämään Gitin mukana tulevaa SSH-asiakasohjelmaa (File -> Preferences -> Settings -> hae "Remote SSH Path" ja lisää polku omaan ssh.exe-tiedostoosi, esimerkiksi C:\Users\<YOUR_USER>\AppData\Local\Programs\Git\usr\bin\ssh.exe). Saatat myös joutua poistamaan käytöstä asetuksen "useLocalServer", jos kohtaat ongelmia, joissa VS Code käyttää Windows-käyttäjänimeäsi CSC-käyttäjänimen sijaan.

Käyttö

Note

Jotta voit muodostaa yhteyden CSC:n supertietokoneisiin SSH-asiakasohjelmalla, sinun täytyy ottaa SSH-avaimet käyttöön ja lisätä julkinen avaimesi MyCSC-portaaliin. Lue ohjeet täältä.

Kun olet ottanut SSH-avaimet käyttöön, lisännyt julkisen avaimen MyCSC:hen ja asentanut Remote SSH -laajennuksen, siirry VS Codessa Remote Explorer -välilehdelle ja lisää uusi etäkone +-symbolista. Kun VS Code pyytää SSH-komentoa, kirjoita

ssh <csc_username>@puhti.csc.fi

Lisäksi sinun täytyy valita asetustiedosto, johon yhteys tallennetaan.

Adding a SSH Remote connection

Katso myös Remember hosts and advanced settings -osio VS Coden dokumentaatiosta lisätietoja varten.

Tämän jälkeen voit muodostaa yhteyden uuteen isäntään.

Connecting to a host in VSCode

Olet nyt Puhdissa ja voit avata kansion sekä muokata tiedostoja etänä. Huomaa, että voit myös siirtää tiedostoja Puhtiin/Mahtiin vetämällä ja pudottamalla ne VS Codeen.

Note

VS Coden uusimmat versiot voivat antaa muistin loppumiseen liittyvän virheen, kun yrität muodostaa yhteyden CSC:n supertietokoneisiin. Katso tästä UKK:sta väliaikaiset ratkaisut.

CSC:n ohjelmistoympäristöjen määrittäminen VS Code Remote SSH:ssa

moduuli-järjestelmän ja singularity-konttien käytön vuoksi ohjelmistoympäristöjen lataamiseen VS Code Remote SSH -laajennus ei joskus pysty tunnistamaan asennettuja ohjelmistoja oikein, erityisesti Python-ympäristöissä. Tämä tarkoittaa, että esimerkiksi koodin täydennysvihjeet ja monet muut kätevät ominaisuudet eivät toimi. Jotta VS Code voi ottaa nämä käyttöön, tarvitaan lisämäärityksiä.

Tämä edellyttää yleensä SSH:n etäkomennon suorittamista yhteyden muodostamisen yhteydessä, ja tarkka toteutus vaihtelee käyttötapauksesi mukaan – muutamien esimerkkien tarkat komennot on lueteltu alla. Kaikissa tapauksissa sinun tulee kuitenkin

  1. Ottaa etäkomennot käyttöön Visual Studio Code Remote-SSH -laajennuksessa:
    Avaa asetusnäkymä (Ctrl ,) ja kirjoita hakukenttään "enable remote command". Asetuksen Enable Remote Command pitäisi näkyä ensimmäisenä hakutuloksena. Varmista, että se on käytössä (näyttää valintamerkin). Enabling Remote Command in Remote SSH extension

  2. Määrittää yhteys etäkomennolla SSH-asetustiedostossasi:
    Avaa SSH-asetustiedosto (Ctrl Shift p tai F1) ja kirjoita ssh configuration, jolloin Remote-SSH: Open SSH Configuration File pitäisi näkyä ensimmäisenä tuloksena. Napsauta sitä.

  3. Lisää nyt avattuun tiedostoon uusi lohko seuraavan mallin mukaisesti ja tallenna tiedosto:

    Host puhti-software-environment
         HostName puhti.csc.fi
         User <csc_username>
         RemoteCommand <remote_command>
    

Muuta HostName vastaamaan järjestelmää, johon haluat yhdistää. Voit valita vapaasti tunnisteen Host-sanan jälkeen (puhti-software-environment), ja tällä nimellä se näkyy VS Code Remote SSH -laajennuksen etäisäntävalinnassa, kun muodostat yhteyden. Suosittelemme antamaan jokaiselle käyttämällesi järjestelmän ja ohjelmistoympäristön yhdistelmälle tunnistettavan nimen (esimerkiksi puhti-pytorch). Jos olet tallentanut SSH-avaimesi muuhun kuin oletussijaintiin, lisää yllä näkyvään isäntälohkoon myös IdentityFile <path_to_your_keyfile>.

CSC-moduulien lataaminen

Voit ladata moduulin VS Coden etäyhteyteen seuraavalla remote_command-komennolla:

bash -c "source /appl/profile/zz-csc-env.sh; module load <your_module>; singularity_wrapper shell"

LUMIssa sinun täytyy sen sijaan käyttää komentoa

module use /appl/local/csc/modulefiles/; module load <your_module>; singularity_wrapper shell

<your_module> on moduuli (tai moduulit), jonka haluat ladata, esimerkiksi pytorch.

Note

Yllä olevan remote_command-komennon osa singularity_wrapper shell olettaa, että moduuli on rakennettu singularity-kontilla, mikä pitää paikkansa useimmissa tapauksissa. Jos tämä ei kuitenkaan toimi, kokeile korvata se komennolla bash.

CSC-moduulien lataaminen lisäpakettien kanssa (Python)

Jos ympäristösi perustuu CSC-moduuliin, mutta olet asentanut sen päälle joitakin lisäpaketteja joko venv:llä tai komennolla pip install --user (katso myös Pythonin käyttöopas), sinun täytyy käyttää seuraavaa remote_command-komentoa (Puhdissa/Mahdissa):

  • pip-asennus mukautettuun PYTHONUSERBASE-hakemistoon:
    Lisää export PYTHONUSERBASE=<your_pip_user_base_dir>; ennen komentoa singularity_wrapper shell, eli Puhdissa/Mahdissa remote_command muuttuu muotoon:

    bash -c "source /appl/profile/zz-csc-env.sh; module load <your_module>; export PYTHONUSERBASE=<your_pip_user_base_dir>;  singularity_wrapper shell"
    

  • venv:
    Lisää export APPTAINERENV_PREPEND_PATH='<your_venv_dir>/bin/' ennen komentoa singularity_wrapper shell – saatat myös joutua valitsemaan VS Coden käyttämän Python-tulkin venvin tarjoamaksi tulkiksi.

Note

Valitettavasti venv-tuki on tällä hetkellä rajoitettu ympäristöihin, jotka on perustettu singularity-kontin sisältä. Luo venv seuraavasti järjestelmän terminaalissa:

  1. Lataa vastaava (perus)moduuli: module load <your_module>
  2. Siirry konttiympäristöön: singularity_wrapper shell
  3. Luo virtuaaliympäristö: python -m venv --system-site-packages <path_where_to_create_the_venv_directory>

Vaihe 2 on ratkaisevan tärkeä – jos luot venv-ympäristön kontin ulkopuolelta, se ei toimi kontin sisällä eikä siten myöskään yllä kuvatun VS Coden etäasetelman kanssa.

Tykky-konttien lataaminen (Python)

Jos haluat yhdistää mukautettuun Python-ympäristökonttiin, joka on luotu Tykky-konttikääreellä, käytä seuraavaa remote_command-komentoa:

<tykky_installation_dir>/bin/_debug_shell

missä <tykky_installation_dir> on polku, johon Tykky-ympäristö on asennettu.

Kun olet muodostanut yhteyden etäympäristöön VS Codessa, integroidun terminaalin komentokehotteen pitäisi näkyä muodossa

Apptainer>

mikä osoittaa, että käytössäsi on komentotulkki Tykky-kontin sisällä.

Lopuksi sinun täytyy valita VS Coden käyttämä Python-tulkki muodossa /<SYSTEM>_TYKKY_*/miniconda/envs/env1/bin/python, missä <SYSTEM> on paikkamerkki arvoille PUHTI, MAHTI, LUMI ja * jollekin satunnaisia merkkejä sisältävälle merkkijonolle.

Selecting the Python interpreter in VS Code for tykky container environments

Note

Et voi muokata kontin sisältöä tämän VS Coden etäyhteyden kautta, mukaan lukien uusien pakettien asentaminen pip:llä tai conda:lla. Muokkaa konttia käyttämällä Tykyn ohjeita määritetyn VS Coden etäyhteyden ulkopuolella.

Koodin ajaminen

Älä aja laskentaa HPC:llä VS Coden Terminal-välilehdeltä tai käyttämällä VS Coden virheenjäljittimiä. Tällöin koodi ajettaisiin oletusarvoisesti kirjautumissolmulla, jota ei ole tarkoitettu vaativaan laskentaan. Asetelma on myös yleisesti ottaen hauras.

VSCode Remote Tunnels

VSCode tarjoaa myös Remote Tunnel -ominaisuuden vaihtoehtona SSH:lle. VSCode dev tunnels -ominaisuus on tarkoituksella poistettu käytöstä Puhdissa ja Mahdissa tietoturvasyistä, koska se antaisi kolmannelle osapuolelle mahdollisuuden hallita pääsyä CSC:n supertietokoneisiin. Suosittelemme käyttämään sen sijaan Remote SSH -ominaisuutta (dokumentoitu yllä).

Onko tämä sivu hyödyllinen?
Kiitos palautteestasi!
Kiitos! Arvostamme palautettasi.

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