Difference between revisions of "General/Jupyternotebook"
(Created page with "__TOC__ ==Introduction== The Jupyter Notebook is an interactive computing environment that enables users to author notebook documents that include: - Live code - Interactiv...") |
m (Pysdlb moved page Jupyternotebook to General/Jupyternotebook without leaving a redirect) |
(No difference)
|
Revision as of 09:42, 4 February 2020
Contents
Introduction
The Jupyter Notebook is an interactive computing environment that enables users to author notebook documents that include: - Live code - Interactive widgets - Plots - Narrative text - Equations - Images - Video
Setting up
Interactive mode (GPU)
Below is the console output of using jupyter notebook in an interactive session
[pysdlb@login01 ~]$ interactive -pgpu salloc: Granted job allocation 2216487 Job ID 2216487 connecting to gpu03, please wait... Last login: Tue Jan 14 12:01:33 2020 from login01 [pysdlb@gpu03 ~]$ module load python/anaconda/4.6/miniconda/3.7 [pysdlb@gpu03 ~]$ conda create -n jupyter Collecting package metadata (current_repodata.json): done Solving environment: done ## Package Plan ## environment location: /home/pysdlb/.conda/envs/jupyter Proceed ([y]/n)? y Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate jupyter # # To deactivate an active environment, use # # $ conda deactivate [pysdlb@gpu03 ~]$ conda activate jupyter (jupyter) [pysdlb@gpu03 ~]$ conda install -c anaconda jupyter Collecting package metadata (current_repodata.json): done Solving environment: done ...... Preparing transaction: done Verifying transaction: done Executing transaction: done (jupyter) [pysdlb@gpu03 ~]$ conda install -c fastai fastai Collecting package metadata (current_repodata.json): done Solving environment: - ..... Preparing transaction: done Verifying transaction: done Executing transaction: done (jupyter) [pysdlb@gpu03 ~]$ conda install -c conda-forge nibabel Collecting package metadata (current_repodata.json): done Solving environment: done ..... Preparing transaction: done Verifying transaction: done Executing transaction: done (jupyter) [pysdlb@gpu03 ~]$ jupyter notebook [I 13:33:59.573 NotebookApp] The port 8888 is already in use, trying another port. [I 13:33:59.715 NotebookApp] Serving notebooks from local directory: /home/pysdlb [I 13:33:59.715 NotebookApp] The Jupyter Notebook is running at: [I 13:33:59.715 NotebookApp] http://localhost:8889/?token=50b345a31008ba2913678140c6aa4f85d0217bce6b1f83e5 [I 13:33:59.715 NotebookApp] or http://127.0.0.1:8889/?token=50b345a31008ba2913678140c6aa4f85d0217bce6b1f83e5 [I 13:33:59.715 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [C 13:34:01.967 NotebookApp] To access the notebook, open this file in a browser: file:///home/pysdlb/.local/share/jupyter/runtime/nbserver-10504-open.html Or copy and paste one of these URLs: http://localhost:8889/?token=50b345a31008ba2913678140c6aa4f85d0217bce6b1f83e5 or http://127.0.0.1:8889/?token=50b345a31008ba2913678140c6aa4f85d0217bce6b1f83e5 START /usr/bin/firefox "/home/pysdlb/.local/share/jupyter/runtime/nbserver-10504-open.html"
- Prepare SLURM batch script for jupyter notebook backend
CPU based
#!/bin/sh #SBATCH -p compute #SBATCH --ntasks=1 #SBATCH -t 04:00:00 # max runtime is 4 hours #SBATCH -J ipy_server # name #SBATCH -o QQQ.out let ipnport=($UID-6025)%65274 echo ipnport=$ipnport ipnip=$(hostname -i) echo ipnip=$ipnip module purge module load python/anaconda/4.6/miniconda/3.7 # Use virtual environment for python customization (change <user>) source activate /home/user/.conda/envs/jupyter export I_MPI_DEBUG=5 export I_MPI_FABRICS=shm:tmi export I_MPI_FALLBACK=no unset XDG_RUNTIME_DIR jupyter notebook --ip=$ipnip --port=$ipnport --no-browser
This generates an output file with the URL required to connect to the jupyter notebook backend
ipnport=1487 ipnip=10.254.5.93 [I 09:53:13.302 NotebookApp] Serving notebooks from local directory: /home/pysdlb [I 09:53:13.302 NotebookApp] 0 active kernels [I 09:53:13.303 NotebookApp] The Jupyter Notebook is running at: [I 09:53:13.303 NotebookApp] http://10.254.5.93:1487/?token=b71e38e053bd44e62ba340aff5a5b9b68c74cd0d0883d582 [I 09:53:13.303 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [C 09:53:13.345 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://10.254.5.93:1487/?token=b71e38e053bd44e62ba340aff5a5b9b68c74cd0d0883d582 [I 09:55:58.597 NotebookApp] 302 GET /?token=b71e38e053bd44e62ba340aff5a5b9b68c74cd0d0883d582 (10.254.5.247) 3.56ms
- Going to a browser on visualisation nodes or at time of writing login02.hpc.hull.ac.uk
$ firefox http://10.254.5.93:1487/?token=b71e38e053bd44e62ba340aff5a5b9b68c74cd0d0883d582
- It should be possible to combine these two steps into one script
GPU Configuration
- the SLURM batch script would slightly different
#!/bin/sh #SBATCH --ntasks=1 #SBATCH -t 04:00:00 # max runtime is 4 hours #SBATCH -J ipy_server # name #SBATCH -o QQQ.out #SBATCH --gres=gpu # use the GPU resource not the CPU #SBATCH -p gpu # Slurm partition, where you want the job to be queued let ipnport=($UID-6025)%65274 echo ipnport=$ipnport ipnip=$(hostname -i) echo ipnip=$ipnip module purge module load python/anaconda/4.6/miniconda/3.7 # Use virtual environment for python customization (change <user>) source activate /home/user/.conda/envs/jupyter export I_MPI_DEBUG=5 export I_MPI_FABRICS=shm:tmi export I_MPI_FALLBACK=no unset XDG_RUNTIME_DIR jupyter notebook --ip=$ipnip --port=$ipnport --no-browser
- Get Python to detect GPU Correctly (within Tensorflow here)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
Using jupyter configuration file
Jupyter notebook can be run using a configuration file to ease the number of command line option needed.
Defaults for these options can also be set by creating a file named jupyter_notebook_config.py in your Jupyter folder. The Jupyter folder is in your home directory, ~/.jupyter.
To create a jupyter_notebook_config.py file, with all the defaults commented out, you can use the following command line:
$ jupyter notebook --generate-config
Resources