Saltar a contenido

IKernel Remoto

Todos tus kernels Jupyter, en todas tus máquinas, en un solo lugar.

Lanza kernels Jupyter en sistemas remotos y a través de colas por lotes para que puedan ser utilizados dentro de un noteboook Jupyter local.

Los Kernels compatibles con Jupyter se inician a través de trabajos interactivos en colas batch (SGE, SLURM, PBS...) o a través de conexiones SSH. Una vez que el kernel se inicia, se crean túneles SSH para los puertos de comunicación para que el portátil pueda hablar con el kernel como si fuera local.

Se incluyen comandos para gestionar los kernels. También es posible utilizar remote_ikernel para gestionar kernels de diferentes entornos virtuales o diferentes implementaciones de python.

Se instala con pip install remote_ikernel. Requiere notebook (como parte de Jupyter), versión 4.0 o superior y pexpect. También se recomienda a todas las máquinas remotas (por ejemplo, nodos en un clúster).

Advertencia

remote_ikernel abre múltiples conexiones a través de varias máquinas parapuertos de comunicación de túnel. Si le preocupa la seguridad o uso excesivo de recursos, consulte a su administrador de sistemas antes de utilizar este software.

Nota

Cuando se ejecutan kernels en máquinas remotas, los propios cuadernos se guardarán en el sistema de archivos local, pero el kernel sólo tendrá acceso al sistema de archivos de la máquina remota que ejecuta el kernel. Si necesita directorios compartidos, configure sshfs entre sus máquinas.

# Install the module ('python setup.py install' also works)

pip install remote_ikernel
# Set up the kernels you'd like to use

remote_ikernel manage
# Add a new kernel running through GrideEngine

remote_ikernel manage --add \
   --kernel_cmd="ipython kernel -f {connection_file}" \
   --name="Python 2.7" --cpus=2 --pe=smp --interface=sge
# Add an SSH connection to a remote machine running IJulia

remote_ikernel manage --add \
   --kernel_cmd="/home/me/julia-903644385b/bin/julia -i --startup-file=yes --color=yes /home/me/.julia/v0.6/IJulia/src/kernel.jl {connection_file}" \
   --name="IJulia 0.6.0" --interface=ssh \
   --host=me@remote.machine --workdir='/home/me/Workdir' --language=julia
# Set up kernels for your local virtual environments that can be run
# from a single notebook server.

remote_ikernel manage --add \
   --kernel_cmd="/home/me/Virtualenvs/dev/bin/ipython kernel -f {connection_file}" \
   --name="Python 2 (venv:dev)" --interface=local
# Connect to a SLURM cluster through a gateway machine (to get into a
# local network) and cluster frontend machine (where the sqsub runs from).

remote_ikernel manage --add \
   --kernel_cmd="ipython kernel -f {connection_file}" \
   --name="Python 2.7" --cpus=4 --interface=slurm \
   --tunnel-hosts gateway.machine cluster.frontend

Los archivos de especificaciones del kernel se instalarán para que el nuevo kernel aparezca en la lista desplegable del bloc de notas. remote_ikernel manage también tiene opciones para mostrar y borrar kernels existentes.

Multiplexación de conexiones

Cuando se trabaja con máquinas remotas, cada núcleo crea dos conexiones ssh. Si quieres reducirlo, puedes configurar la multiplexación automática de conexiones. Para cada máquina, añade una configuración a tu ~/.ssh/config:

Host myhost.ac.uk
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p
    ControlPersist 1

Esto creará una conexión maestra que permanece en segundo plano cuando y multiplexará todo a través de ella. Si usted tiene múltiples saltos, este tendrá que ser añadido para cada salto. Tenga en cuenta, para los conscientes de la seguridad, que los núcleos inactivos en conexiones multiplexadas permiten nuevas conexiones ssh se inicien sin contraseña.

Instrucciones tomadas de https://github.com/tdaff/remote_ikernel/tree/master


Última actualización: 2023-11-16
Volver al principio