Treballar amb Jupyter Notebooks
Com hem vist, ja saps com executar fitxers Python als servidors de càlcul. Però hi ha altres maneres de treballar amb Python que poden ser molt útils. Una d'elles és amb Jupyter Notebook, que et permet crear documents i executar codi en viu per obtenir feedback instantani sobre la sortida generada.
Preparació per a Jupyter Notebook
El primer pas per utilitzar aquesta potent eina és accedir al teu entorn virtual. Pots fer-ho amb Conda o Virtualenv. Si ja has fet aquests primers passos, pots saltar al punt 4.
Per a Conda:
- Accedeix al teu entorn virtual.
>> conda activate projectname # Access your virtual environment (projectname) >>
2. Instal·la dos paquets necessaris: ipython i ipykernel (només la primera vegada). Aquests paquets ajuden a crear un kernel temporal dins dels servidors de càlcul.
(projectname) >> conda install ipython ipykernel #Install libraries only once
Per a Virtualenv:
1. Accedeix al teu entorn virtual.
>> source ~/venv/projectname/bin/activate # Access your virtual environment (projectname) >>
2. Instal·la tres paquets necessaris: jupyter, ipython i ipykernel (només la primera vegada). Aquests paquets ajuden a crear un kernel temporal dins dels servidors de càlcul.
(projectname) >> pip install jupyter ipython ipykernel #Install libraries only once
Obrir Jupyter Notebook
Un cop hagis accedit al teu entorn virtual i instal·lat les llibreries necessàries, el procediment per obrir Jupyter Notebook és el mateix tant per a Conda com per a Virtualenv:
3. Crea un kernel virtual amb les llibreries instal·lades dins de l'entorn virtual (projectname) que utilitzarà el Python de Jupyter.
(projectname) >> ipython kernel install --user --name=projectname # Create virtual kernel Installed kernelspec proyecto in /mnt/sitsc/usuaris/user/.local/share/jupyter/kernels/proyecto
4. Obre Jupyter Notebook utilitzant srun dins d'un servidor de càlcul.
Els passos anteriors són permanents, així que executa aquest comandament directament si ja has fet els passos previs en el passat.
Això et permetrà utilitzar-lo durant 3 hores. Quan hagis acabat, tanca'l com s'explica a la següent secció. Altrament, es tancarà un cop transcorregut el temps establert (pots executar el mateix comandament per tornar-lo a obrir). No et preocupis si oblides desar els canvis, ja que ho fa periòdicament cada 2 minuts.
Aquest límit de temps és per ajudar a alliberar els recursos dels nodes de càlcul un cop finalitzat el treball. És molt important copiar el comandament complet amb tots els paràmetres.
L'exemple següent és per a la partició sunset (un subconjunt de nodes de càlcul); si us plau, utilitza la teva partició habilitada (gpi.develop, veu, grcm, spcom...). Pots comprovar-la amb el comandament sinfo. A més, aquest exemple dóna al procés la disponibilitat d'1 GPU, 4GB de RAM i un nucli de CPU.
(projectname) >> srun -p sunset -c1 --mem=4000 --gres=gpu:1 --time=03:00:00 jupyter notebook --ip 0.0.0.0 --port $UID
=====================================================================
SLURM_JOB_ID = 286072
SLURM_NODE = sunsetc01
SLURM_JOB_PARTITION = sunset
=====================================================================
[I 12:29:04.864 NotebookApp] Serving notebooks from local directory: /mnt/sitsc/usuaris/user/pyfiles
[I 12:29:04.864 NotebookApp] 0 active kernels
[I 12:29:04.864 NotebookApp] The Jupyter Notebook is running at:
[I 12:29:04.864 NotebookApp] http://localhost:8888/?token=2fac938688db2fc
[I 12:29:04.864 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 12:29:04.865 NotebookApp]
Si tot s'ha fet correctament, apareixerà un munt de codi i la manera d'accedir al Jupyter Notebook és a través d'un navegador local (sí, un navegador al teu portàtil/PC). En aquest exemple, el Jupyter Notebook està disponible a sunsetc01. Així que podries utilitzar l'URL al teu navegador local: http://localhost:8888/?token=2fac938688db2fc i canviar localhost per l'adreça IP de sunsetc01.
Pots obtenir l'adreça IP amb:
> cat /etc/hosts | grep sunsetc01
Aquest seria el resultat i on hauries de connectar-te des del teu navegador local:
http://172.26.105.202:8888/?token=2fac938688db2fc
5. A la nova finestra, fes clic a "New" (Nou) a la cantonada superior dreta per crear un fitxer nou.
6. IMPORTANT: Fes clic a "projectname" per utilitzar el Python configurat al nostre entorn.
Ara ja pots començar a treballar amb els teus scripts.
La propera vegada que vulguis obrir Jupyter Notebook, només cal que facis el pas 4 (obrir Jupyter Notebook utilitzant srun), ja que l'espai (kernel) ja està creat i enllaçat al teu entorn.
Per aclarir, aquest Jupyter Notebook s'ha enllaçat al teu entorn. Si vols utilitzar aquesta eina amb un altre entorn, procedeix a crear un nou kernel des de l'altre espai de treball (pas 3).
Tancar Jupyter Notebook
Un cop hagis acabat, has de tancar el programa i aturar tots els processos en execució:
- Desa els teus fitxers.
- Tanca la finestra de Jupyter Notebook al navegador.
- Torna al terminal on el job s'està executant.
- Atura els processos de Jupyter prement "Ctrl+C" dues vegades:
# Pressing Ctrl+c two times: ^Csrun: interrupt (one more within 1 sec to abort) srun: step:286073.0 task 0: running ^Csrun: sending Ctrl-C to job 286073.0 [I 12:31:34.852 NotebookApp] Interrupted... [I 12:31:34.853 NotebookApp] Shutting down 0 kernels srun: Job step aborted: Waiting up to 32 seconds for job step to finish. slurmstepd: error: *** STEP 286073.0 ON sunsetc01 CANCELLED AT 2020-11-09T12:31:34 *** ===================================================================== JobID 286073: Could not read info. =====================================================================
(projectname) >>
Ara el procés està aturat. La propera vegada que vulguis tornar a utilitzar Jupyter Notebook, accedeix al teu entorn i repeteix el pas 4.
(Addicional) Eliminar el Kernel Basat en un Entorn Virtual ja no Utilitzat
Aquesta secció és només per a aquells que van utilitzar Jupyter Notebook i no tenen previst tornar a utilitzar l'entorn. Podries deixar el kernel creat, però és una bona idea alliberar espai.
Per fer-ho, executa el següent comandament (i prem Y):
(projectname) >> ipython kernelspec uninstall projectname
[TerminalIPythonApp] WARNING | Subcommand `ipython kernelspec` is deprecated and will be removed in future versions. [TerminalIPythonApp] WARNING | You likely want to use `jupyter kernelspec` in the future Kernel specs to remove: proyecto /mnt/sitsc/usuaris/user/.local/share/jupyter/kernels/proyecto Remove 1 kernel specs [y/N]: y [RemoveKernelSpec] Removed /mnt/sitsc/usuaris/user/.local/share/jupyter/kernels/proyecto
Comparteix: