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.
# 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
:
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