Saltar a contenido

Servicio de Jupyter

El servicio de Jupyter nos permite crear, compartir y gestionar notebooks.

Está diponible en: https://jupyterhub.lst.tfo.upm.es/ accediendo con las credenciales de dominio (con o sin @lst.tfo.upm.es), siempre que el usuario tenga habilitado éste servicio. Contactar con IT si quiere activar éste servicio.

Kernels disponibles para los usuarios

Un kernel es un Notebook con versiones y paquetes instalados, de tal modo que al abrir un nuevo Notebook en un kernel ya definido, se accede a unas funcionalidades ya preparadas.

Están disponibles los siguientes kernels:

  • Python 3.7
  • Python 2.7
  • Matlab
  • Apache Toree - Scala
  • TensorFlow 2.4 (Instalado sobre Python 3.8)

Compartir notebooks y archivos entre usuarios

Todos los usuarios tienen acceso a una carpeta compartida. Esta carpeta se llama "scratch", y se encuentra disponible para todos desde el inicio. Se pueden copiar, mover o crear notebooks en esa carpeta, y los notebooks ahí presentes serán de sólo lectura para el resto de usuarios (aun así es posible borrar los ficheros, así que cuidad de esa carpeta y sus contenidos)

Esta carpeta es un symlink situado en /home/jupyter-USUARIO/ (la carpeta compartida está en /srv/scratch/). Un usuario A que quiera compartir un notebook con el resto, puede mover su notebook a la carpeta compartida en la propia web de jupyter seleccionando el notebook, dando al botón move, y escribiendo en el cuadro de texto "/scratch".

También puede hacerse en terminal: se abre una terminal en Jupyter y ejecuta, en el directorio HOME inicial de la terminal:

cp NOTEBOOK\_PARA\_COMPARTIR  scratch

Abrir una terminal

Todos los usuarios de JupyterHub pueden abrir una terminal pulsando en New y seleccionando Terminal. Esto abre una terminal Bash en el propio servidor, para poder ejecutar los comandos que necesitemos.

¿Qué podemos hacer en la terminal?

  • Gestionar entornos virtuales y kernels
  • Instalar paquetes python
  • Instalar paquetes apt

Gestionar entornos virtuales y kernels

Entornos virtuales (Virtual Environment - venv)

Todos los usuarios, por defecto, están funcionando en un mismo entorno virtual llamado base. Este entorno virtual puede ser cambiado por cualquiera, así que no es recomendable utilizarlo ya que las versiones de los paquetes que estén un día instaladas, pueden no estarlo al día siguiente, y habrá colisiones entre los usuarios.

Siempre hay que crear, como mínimo, 1 entorno virtual para trabajar en él.

Función Comando Argumentos Ejemplo
Crear un venv conda create -n nombre_venv python=PYTHON_VERSION conda create -n py3.8 python=3.8
Activar un venv conda activate nombre_venv conda activate py3.8
Desactivar un venv conda deactivate
Listar venvs conda env list
Eliminar venv conda env remove -n ENV_NAME conda env remove -n py3.8

Los venvs creados por el usuario se encuentran en ~/.conda/envs

Crear kernels personalizados

Abrimos una terminal y seguimos los siguientes pasos:

  1. Creamos el venv (podemos especificar la versión de python opcionalmente) y lo activamos
    conda create -n MY\_OWN\_NOTEBOOK python=PYTHON\_VERSION
    conda activate MY\_OWN\_NOTEBOOK
    
  2. Instalamos los paquetes (pip, apt) que queramos
    python -m pip install PACKAGE\_TO\_INSTALL
    
  3. Instalamos el kernel
    conda install ipykernel
    python -m ipykernel install --user --name=MY\_OWN\_NOTEBOOK
    

Ahora, en la interfaz de jupyter, se puede abrir un nuevo notebook con el kernel creado

Eliminar kernel personalizado

Si ya no queremos seguir usando un kernel, podemos eliminarlo. Abrimos una terminal y seguimos los siguientes pasos:

conda env remove -n NOMBRE_DEL_VENV
jupyter kernelspec uninstall NOMBRE_DEL_KERNEL

Dependencias de NVIDIA: CUDA y cuDNN

Para los paquetes que tengan dependencias de NVIDIA (e. g. Tensorflow, PyTorch, Detectron), los usuarios no pueden utilizar esas dependencias. Estas dependencias son muy delicadas, y para solicitarlas, estudiad bien las que sean necesarias y contactad con IT.

Ahora mismo están instaladas las siguientes parejas de versiones de CUDA y cuDNN:

CUDA cuDNN
10.1 7.6.5
11.0 8.0.5