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.

Skriptien kehittäminen etäyhteydellä

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

Vaikka skriptien kehittäminen etäyhteydellä voi olla hyödyllistä, siihen liittyy melko paljon yhteysongelmia ja muita vaikeasti selvitettäviä ongelmia. Jos kohtaat ongelmia skriptien kehittämisessä etäyhteydellä, 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:llä.

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.

  • Sinun ei tarvitse käyttää komentorivin tekstieditoreja, kuten vi, vim tai nano.
  • Sinun 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 voidaan käyttää etänä Remote SSH -laajennuksella. Se soveltuu erinomaisesti Python- ja bash-skripteille, mutta sitä voidaan käyttää minkä tahansa ohjelmointikielen kanssa. VS Codelle on saatavilla monia laajennuksia. Jupyter-notebookien ajamiseen suosittelemme kuitenkin ensisijaisesti käyttämään Jupyter-sovellusta, joka on saatavilla HPC-järjestelmiemme selainkäyttöliittymissä.

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 asetusta "Remote SSH Path" ja lisää polku 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 on määritettävä SSH-avaimet ja lisättävä julkinen avaimesi MyCSC-portaaliin. Lue ohjeet täältä.

Kun olet määrittänyt SSH-avaimet, 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 kohteeseen.

Connecting to a host in VSCode

Olet nyt Puhdissa ja voit avata kansion ja 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 out-of-memory-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:ssä

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-etäkomennon suorittamista yhteyden muodostamisen yhteydessä, ja tarvittavat toimenpiteet vaihtelevat käyttötapauksen mukaan – tarkemmat tiedot suoritettavista komennoista on lueteltu alla muutamissa esimerkeissä. Kaikissa tapauksissa sinun täytyy 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 muodostaa yhteyden. Voit vapaasti valita 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 helposti tunnistettavan nimen (esimerkiksi puhti-pytorch). Jos olet tallentanut SSH-avaimesi muuhun kuin oletussijaintiin, lisää yllä esitettyyn isäntäasetusten lohkoon 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ää

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 – sinun voi myös olla tarpeen valita VS Coden käyttämä Python-tulkki siten, että se on venvin tarjoama.

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äasetuksen kanssa.

Tykky-konttien lataaminen (Python)

Jos haluat muodostaa yhteyden 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 kehoterivin pitäisi näyttää tältä:

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 arvolle PUHTI, MAHTI, LUMI ja * jollekin satunnaismerkkijonolle.

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 Tykyn ohjeiden mukaisesti 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 debuggaimia. Tällöin koodi ajettaisiin oletuksena kirjautumissolmulla, mikä ei ole tarkoitettu vaativaan laskentaan. Kokoonpano on myös yleisesti ottaen hauras.

VSCode Remote Tunnels

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

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta