19 Best JupyterLab Extensions for Machine Learning
By: Patrycja Jenkner
Tags: Machine Learning, Data Science, Jupyterlab, Jupyter Notebook, Extension

The ML workspace is an all-in-one web-based integrated development environment dedicated for machine learning and data science.

It is simple to deploy and lets you productively build ML solutions on your own machines. This workspace is a universal solution for developers preloaded with a variety of popular data science libraries (e.g., Tensorflow, PyTorch, Keras, Sklearn) and dev tools (e.g., Jupyter, VS Code, Tensorboard) perfectly configured, optimized, and integrated.

System Monitor is a JupyterLab extension to display system information (memory and cpu usage). It allows you to monitor your own resource usage.

The extension gives you an insight into how much resources your current notebook server and its children (kernels, terminals, etc) are using so you can optimize your ML experiments and better manage work.

LSP (Language Server Protocol) is a JupyterLab extension that enables inter-process communication to support multiple languages you may want to use.

LSP integration has several detailed but helpful features:

Hover shows a tooltip with function/class signature, module documentation or any other piece of information that the language server provides

Diagnostics — colors for critical errors, warnings, etc.

Jump to definition — use the context menu entries to jump to definitions

A highlight of references — all the usages will be highlighted when cursor is placed on a variable, function, etc.

Automatic completion for certain characters when triggered

Automatic signature suggestion

Advanced static-analysis autocompletion without a running kernel

Rename variables, functions and more, in both notebooks and the file editor

Diagnostic panel

Debugger is a JupyterLab extension that works as a visual debugger for Jupyter notebooks, consoles, and source files. It can help you identify and fix bugs so your machine learning models can work properly.

You can use the kernelspy extension for JupyterLab to inspect debug messages sent between the debugger UI and the kernel.

JupyterLab debugger can also be helpful when you’re working with VS code as you can inspect the debug messages to understand when debuq requests are made and to compare the behavior of the JupyterLab debugger with the Python debugger in VS Code.

This one is a JupyterLab extension for Git — a free and open-source distributed version control system. It allows you for version controlling. You simply use it by opening the Git extension from the Git tab on the left panel.

This extension gives you flexibility in use as its behavior can be modified via different settings.

This extension adds a few Jupytext commands to the command palette. You can use it to select the desired ipynb/text pairing for your notebook. It’s a small functionality but can help you navigate through your notebooks.

nbgather is a JupyterLab extension that has tools for cleaning code, recovering lost code, and comparing versions of code in Jupyter Lab. The extension saves you a history of all code you’ve executed and the outputs it produces to the notebook’s metadata.

After you download the extension, you can clean and compare versions of your code.

nbgather is in an alpha stage of development, so it still may have some glitches. Anyway, it’s worth giving a shot if you want to have uncluttered and consistent notebooks.

Variable Inspector is a helpful extension for JupyterLab that shows currently used variables and their values. It’s inspired by the variable inspector extension for jupyter notebooks and by the inspector extension included in jupyterlab.

As for now, it’s still being developed, so you may experience some glitches. Here’s what you can do with it:

Inspect variables for python consoles and notebooks

Inspect matrices in a datagrid-viewer, however, it may not work for large matrices

Inspect Jupyter Widgets inline and interactively

This JupyterLab extension gives you functionalities helpful in diffing and merging of Jupyter Notebooks. It understands the structure of notebook documents so it can make intelligent decisions when diffing and merging notebooks.

Here’s a short summary of the main features:

Compare notebooks in a terminal-friendly way

Merge notebooks in a three-way with automatic conflict resolution

View a rich rendered diff of notebooks

Have a web-based three-way merge tool for notebooks

View a single notebook in a terminal-friendly way

Voyager is a JupyterLab MIME renderer extension to view CSV and JSON data in Voyager 2. It is a simple solution that allows you to visualize data.

This extension provides a bare minimum integration with Voyager.

LaTeX is a JupyterLab extension that lets you live-edit LaTeX documents.

The extension runs on xelatex on the server by default but you can customize the command by customizing jupyter_notebook_config.py file. When it comes to bibliography, it runs on bibtex but you can also customize it.

Another element that you can customize is the ability to run arbitrary code by triggering external shell commands.

This one is a JupyterLab extension mimerenderer to render HTML files in IFrame Tab. It lets you view rendered HTML by double-clicking on .html files in the file browser. Files are opened in a JupyterLab tab.

Plotly is a JupyterLab extension for rendering Plotly charts.

To watch for changes in the extension’s source and automatically rebuild the extension and application, you can watch the jupyter-renderers directory and run JupyterLab in watch mode.

Another position on our list is a Jupyter extension for rendering Bokeh visualizations.

A Table of Contents extension for JupyterLab may not seem as much of a technical thing, but it can save you a lot of trouble when scrolling down and looking for information.

It auto-generates a table of contents in the left area when you have a notebook or markdown document open. The entries are clickable, and you can scroll the document to the heading in question.

Collapsible Headings is a helpful extension that lets you make headings collapsible. A selected header cell (i.e. markdown cell starting with some number of “#”) can be collapsed / uncollapsed by clicking on the caret icon created to the left of header cells or by using a shortcut.

Jupyter Dash is a library that makes it easy to build Dash apps from Jupyter environments (e.g. classic Notebook, JupyterLab, Visual Studio Code notebooks, nteract, PyCharm notebooks, etc.).

It has many helpful features:

Non-blocking execution

Display modes: external, inline, JupyterLab

Hot reloading: the ability to automatically update a running web application when changes are made to the application’s code.

Error reporting: a small user interface to display errors that result from property validation failures and exceptions raised inside callbacks

Jupyter Proxy Detection

Production deployment

Dash enterprise workspaces

The last one is a jupyterlab-sql extension that adds a SQL user interface to JupyterLab. It allows you to explore your tables with a point-and-click interface, and read and modify your database with custom queries.

Conclusion

The list of JupyterLab is quite extensive so there are many tools to choose from. You can use one, two, or all of them. Just make sure they’re not cluttering your Jupyter space and slow down processes.

Happy experimenting with extensions!