Spyder

De Wikicima
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(Conectar sesión de Spyder local a un núcleo remoto en servidor:)
 
(No se muestran 16 ediciones intermedias realizadas por 4 usuarios)
Línea 1: Línea 1:
== Conectar sesión de Spyder local a un núcleo remoto en servidor: ==
+
= Conectar sesión de Spyder local a un núcleo remoto en servidor: =
   
Spyder trae la funcionalidad de poder conectar una sesión corriendo en una máquina local con un núcleo de cálculo que está corriendo en una máquina remota. De esta forma se pueden aprovechar los datos y capacidad de cálculo de un servidor evitando el "lag" o retraso de la interfaz gráfica. Los pasos para conectar Spyder son:
+
Spyder trae la funcionalidad de poder conectar una sesión corriendo en una máquina local con un núcleo de cálculo que está corriendo en una máquina remota. De esta forma se pueden aprovechar los datos y capacidad de cálculo de un servidor evitando el "lag" o retraso de la interfaz gráfica. Es necesario tener instalado Spyder en el servidor remoto. Los pasos para conectar Spyder son (se asume que se está conectado por VPN a la RedCIMA):
   
1) Entrar al servidor vía ssh e iniciar un kernel:
+
  +
<ol>
  +
<li> Conectarse al SERVIDOR por SSH</li>
  +
ssh USUARIO@SERVIDOR
  +
<li> Levantar un kernel de spyder en el SERVIDOR</li>
  +
python3 -m spyder_kernels.console -f=./remotemachine.json
  +
La opción "-f" indica dónde guardar este archivo que vamos a necesitar. En este ejemplo se guarda en la carpeta actual del servidor, usted puede modificarlo y guardarlo donde desee.
  +
<li> Desde su máquina, copiar el archivo .json que creó la conexión al kernel en el SERVIDOR</li>
  +
scp USUARIO@SERVIDOR:./remotemachine.json .
  +
<li> Abrir Spyder en su máquina local y conectar al kernel remoto
  +
# Arriba a la derecha de la terminal IPython (menú desplegable ícono ≡ o engranaje), clic en “conectarse a un núcleo existente”.
  +
# En “archivo de conexión” seleccionar el archivo .json que trajimos del servidor.
  +
# Tildar “este es un núcleo remoto” y completar estas opciones:</li>
 
<pre>
 
<pre>
python -m spyder_kernels.console -matplotlib='inline' -f=./remotemachine.json
+
Servidor: SERVIDOR.cima.fcen.uba.ar
  +
Puerto: 22
  +
Usuario: USUARIO de su idCIMA
  +
Contraseña: PASSWORD de su idCIMA
 
</pre>
 
</pre>
   
La opción "-f" indica dónde guardar este archivo que vamos a necesitar. En este ejemplo se guarda en la carpeta actual, usted puede modificarlo y guardarlo donde desee.
+
Observación: para ver las variables en el explorador de variables (Variable Explorer) y los gráficos en Spyder, es necesario tener la versión de Spyder v.4.2.2 en adelante.
  +
* FUENTE: https://docs.spyder-ide.org/current/panes/ipythonconsole.html?highlight=ssh#connect-to-a-remote-kernel
   
2) Copiar el archivo remotemachine.json a su computadora local.
+
= Montar un servidor remoto usando SFTP =
  +
  +
Para poder abrir y editar scripts guardados en el servidor remoto desde la sesión del Spyder local es necesario montar el servidor remoto. Para esto utilizamos el [https://github.com/libfuse/sshfs sshfs]. Esto nos permite trabajar con Spyder como si estuviéramos corriendo archivos de la computadora local, pero todo el procesamiento lo hace el servidor remoto.
  +
  +
'''IMPORTANTE:''' Si montamos el servidor remoto como se explica en esta sección, cualquier modificación que se haga a los archivos locales montados se verá reflejada en los archivos del servidor. Es decir, si luego de montar los archivos del servidor remoto los abrimos en la máquina local, los editamos y los guardamos, este cambio también se aplica al servidor remoto.
  +
  +
Observación: cuanto más tamaño ocupe la carpeta que deseamos montar, más tardará en montarse. Esto también depende de nuestra conexión a internet. Por este motivo, es recomendable no montar las carpetas que contengan datos, sino más bien limitarnos a montar las carpetas que contengan los scripts.
  +
  +
Para montar el servidor remoto a la máquina local:
  +
  +
1) Si estamos usando el [[VPN]], saltar al paso 4. Si no lo estamos usando, empezar por este paso. En la máquina local, abrir una terminal e ir a la carpeta .ssh
   
3) Abrir una terminal y correr el comando:
 
 
<pre>
 
<pre>
ssh -L 6000:SERVIDOR:22 USUARIO@portal.cima.fcen.uba.ar
+
cd /home/usuario/.ssh
 
</pre>
 
</pre>
   
Cambiar SERVIDOR por el nombre del servidor al que desea conectarse y USUARIO por su usuario de la redCIMA.
+
donde usuario es el nombre de usuario de la máquina local. Si la carpeta .ssh no existe, crearla.
Se puede poner cualquier puerto en lugar de 6000 si ya está ocupado en otra cosa.
+
  +
2) Desde la misma terminal, editar el archivo '''config''':
   
4) Abrir otra terminal de bash y correr el comando:
 
 
<pre>
 
<pre>
ssh -p 6000 USUARIO@localhost
+
vi config
 
</pre>
 
</pre>
   
Nuevamente, reemplazar USUARIO por su usuario de la redCIMA.
+
y agregar las siguientes líneas (si el archivo ya existe, no eliminar las líneas que ya están):
   
5) Abrir Spyder en su máquina local e ir a las opciones arriba a la derecha de la terminal IPython (menú desplegable ícono ≡ o engranaje), clic en “conectarse a un núcleo existente”. En “archivo de conexión” seleccionar el archivo .json que trajimos del servidor. Tildar “este es un núcleo remoto” y completar estas opciones:
+
<pre>
  +
Host portal
  +
HostName portal.cima.fcen.uba.ar
  +
User USUARIO
  +
ServerAliveInterval 60
  +
Host SERVIDOR
  +
HostName SERVIDOR.cima.fcen.uba.ar
  +
User USUARIO
  +
ProxyJump portal
  +
ServerAliveInterval 60
  +
</pre>
   
servidor: localhost
+
donde USUARIO es el nombre de usuario de la redCIMA y SERVIDOR el nombre del servidor al que se quiere conectar.
   
puerto: 6000
+
3) Guardar el archivo config. Si se usó vi, guardarlo presionando, '''ESC''', ''':''', luego tipear '''wq!''' y darle '''Enter'''.
   
Completar su nombre de usuario y contraseña de la redCIMA.
+
4) Si sshfs no está instalado, instalarlo en la máquina local con
   
Aceptar y ya estará conectado al núcleo remoto. Recuerde no cerrar las terminales o se cortará la conexión.
+
<pre>
  +
sudo apt-get install sshfs
  +
</pre>
  +
  +
5) Crear en la máquina local la carpeta donde se desea montar el servidor remoto:
  +
  +
<pre>
  +
mkdir mountpoint
  +
</pre>
  +
  +
6) Montar el servidor remoto:
  +
  +
<pre>
  +
sshfs USUARIO@SERVIDOR:DIRECTORY mountpoint
  +
</pre>
   
  +
donde USUARIO es el nombre de usuario de la redCIMA, DIRECTORY la ubicación completa del directorio remoto a montar, y SERVIDOR el nombre del servidor al que nos conectamos. Notar que si no se realizaron los pasos 1 a 3, SERVIDOR debe ser el nombre completo del mismo, por ejemplo '''hydra.cima.fcen.uba.ar'''. Si sí se realizaron los pasos 1 a 3, SERVIDOR puede ser simplemente '''hydra'''.
   
Una vez que finalice de trabajar cierre Spyder y cierre el núcleo remoto desde otra terminal, no desde la misma en la que está corriendo, por ejemplo con los comandos kill o killall o desde htop.
+
Una vez terminado el paso 6, se puede navegar desde Spyder (Archivo/Abrir) hasta la carpeta local mountpoint, y de allí acceder desde el editor a los scripts que estén en la carpeta DIRECTORY del SERVIDOR. Estos scripts se pueden correr con las herramientas comunes de Spyder: F5, F9 y con el uso de las celdas (#%%). Sin embargo, estos scripts no se pueden detener ya que el núcleo que lo está corriendo es el remoto.
   
Si su máquina local corre en Windows 10 usted puede descargarse de la tienda de aplicaciones de windows la app "Ubuntu" y de esta forma tener una terminal de bash como si estuviera en Linux.
+
7) La carpeta montada se puede desmontar con:
   
 
<pre>
 
<pre>
Autor: Julián Giles
+
fusermount -u mountpoint
julian.giles@cima.fcen.uba.ar
 
 
</pre>
 
</pre>

Última revisión de 14:02 12 sep 2024

[editar] Conectar sesión de Spyder local a un núcleo remoto en servidor:

Spyder trae la funcionalidad de poder conectar una sesión corriendo en una máquina local con un núcleo de cálculo que está corriendo en una máquina remota. De esta forma se pueden aprovechar los datos y capacidad de cálculo de un servidor evitando el "lag" o retraso de la interfaz gráfica. Es necesario tener instalado Spyder en el servidor remoto. Los pasos para conectar Spyder son (se asume que se está conectado por VPN a la RedCIMA):


  1. Conectarse al SERVIDOR por SSH
  2. ssh USUARIO@SERVIDOR
    
  3. Levantar un kernel de spyder en el SERVIDOR
  4. python3 -m spyder_kernels.console -f=./remotemachine.json
    

    La opción "-f" indica dónde guardar este archivo que vamos a necesitar. En este ejemplo se guarda en la carpeta actual del servidor, usted puede modificarlo y guardarlo donde desee.

  5. Desde su máquina, copiar el archivo .json que creó la conexión al kernel en el SERVIDOR
  6. scp USUARIO@SERVIDOR:./remotemachine.json .
    
  7. Abrir Spyder en su máquina local y conectar al kernel remoto
    1. Arriba a la derecha de la terminal IPython (menú desplegable ícono ≡ o engranaje), clic en “conectarse a un núcleo existente”.
    2. En “archivo de conexión” seleccionar el archivo .json que trajimos del servidor.
    3. Tildar “este es un núcleo remoto” y completar estas opciones:
     Servidor: SERVIDOR.cima.fcen.uba.ar
     Puerto: 22
     Usuario: USUARIO de su idCIMA
     Contraseña: PASSWORD de su idCIMA
    

    Observación: para ver las variables en el explorador de variables (Variable Explorer) y los gráficos en Spyder, es necesario tener la versión de Spyder v.4.2.2 en adelante.

    [editar] Montar un servidor remoto usando SFTP

    Para poder abrir y editar scripts guardados en el servidor remoto desde la sesión del Spyder local es necesario montar el servidor remoto. Para esto utilizamos el sshfs. Esto nos permite trabajar con Spyder como si estuviéramos corriendo archivos de la computadora local, pero todo el procesamiento lo hace el servidor remoto.

    IMPORTANTE: Si montamos el servidor remoto como se explica en esta sección, cualquier modificación que se haga a los archivos locales montados se verá reflejada en los archivos del servidor. Es decir, si luego de montar los archivos del servidor remoto los abrimos en la máquina local, los editamos y los guardamos, este cambio también se aplica al servidor remoto.

    Observación: cuanto más tamaño ocupe la carpeta que deseamos montar, más tardará en montarse. Esto también depende de nuestra conexión a internet. Por este motivo, es recomendable no montar las carpetas que contengan datos, sino más bien limitarnos a montar las carpetas que contengan los scripts.

    Para montar el servidor remoto a la máquina local:

    1) Si estamos usando el VPN, saltar al paso 4. Si no lo estamos usando, empezar por este paso. En la máquina local, abrir una terminal e ir a la carpeta .ssh

    cd /home/usuario/.ssh
    

    donde usuario es el nombre de usuario de la máquina local. Si la carpeta .ssh no existe, crearla.

    2) Desde la misma terminal, editar el archivo config:

    vi config
    

    y agregar las siguientes líneas (si el archivo ya existe, no eliminar las líneas que ya están):

    Host portal
            HostName        portal.cima.fcen.uba.ar
            User            USUARIO
            ServerAliveInterval 60
    Host SERVIDOR
            HostName        SERVIDOR.cima.fcen.uba.ar
            User            USUARIO
            ProxyJump       portal
            ServerAliveInterval 60
    

    donde USUARIO es el nombre de usuario de la redCIMA y SERVIDOR el nombre del servidor al que se quiere conectar.

    3) Guardar el archivo config. Si se usó vi, guardarlo presionando, ESC, :, luego tipear wq! y darle Enter.

    4) Si sshfs no está instalado, instalarlo en la máquina local con

    sudo apt-get install sshfs
    

    5) Crear en la máquina local la carpeta donde se desea montar el servidor remoto:

    mkdir mountpoint
    

    6) Montar el servidor remoto:

    sshfs USUARIO@SERVIDOR:DIRECTORY mountpoint
    

    donde USUARIO es el nombre de usuario de la redCIMA, DIRECTORY la ubicación completa del directorio remoto a montar, y SERVIDOR el nombre del servidor al que nos conectamos. Notar que si no se realizaron los pasos 1 a 3, SERVIDOR debe ser el nombre completo del mismo, por ejemplo hydra.cima.fcen.uba.ar. Si sí se realizaron los pasos 1 a 3, SERVIDOR puede ser simplemente hydra.

    Una vez terminado el paso 6, se puede navegar desde Spyder (Archivo/Abrir) hasta la carpeta local mountpoint, y de allí acceder desde el editor a los scripts que estén en la carpeta DIRECTORY del SERVIDOR. Estos scripts se pueden correr con las herramientas comunes de Spyder: F5, F9 y con el uso de las celdas (#%%). Sin embargo, estos scripts no se pueden detener ya que el núcleo que lo está corriendo es el remoto.

    7) La carpeta montada se puede desmontar con:

    fusermount -u mountpoint
    
Herramientas personales