Maximize GPU performance with Near-Real-Time Usage Stats on NVDashboard v0.10

At NVIDIA GTC 2024, the RAPIDS team demonstrated new features on NVDashboard v0.10 a dashboard that runs on JupyterLab, for monitoring GPU usage to help maximize the efficiency of GPU resources. 

We are excited to follow that up by announcing that NVDashboard v0.10 is now available to use.

This update introduces a host of improvements, including data streaming through WebSockets for enhanced performance, time series chart brushing and synchronized tooltips for improved usability. These upgrades collectively transform the user experience, offering a more responsive, intuitive, and visually cohesive tool for developers and researchers working with GPU-intensive applications within JupyterLab.

Figure 1. The NVDashboard JupyterLab extension in action

Figure 1 shows the GPU dashboards on the right, while two dask-labextension dashboards are shown on the bottom left.

NVDashboard is an essential JupyterLab extension tailored for displaying GPU usage dashboards. It supports a variety of metrics, including the following:

GPU-compute utilization

GPU-memory consumption

PCIe throughput

NVLink throughput

The extension was previously only compatible with JupyterLab versions up to 3.0. With the release of JupyterLab 4.x, we updated NVDashboard to version 0.10 to ensure compatibility with the latest version of JupyterLab.

Who should use NVDashboard

NVDashboard is an essential tool for a wide range of professionals who require real-time monitoring and analysis of GPU resources within JupyterLab environments. The recent updates make it particularly beneficial for multiple roles.

Data scientists and AI researchers

For those who are developing and training machine learning models, NVDashboard provides immediate insights into GPU utilization, memory, and compute metrics. This enables efficient resource management and helps in identifying bottlenecks during model training.

Developers and engineers

Whether you’re working on high-performance computing (HPC) tasks, 3D rendering, or complex simulations, NVDashboard offers a clear view of how your code uses GPU resources. This can lead to more informed decisions when optimizing code for better performance.

Educators and students

In academic settings where understanding hardware utilization is part of the learning process, NVDashboard serves as a practical tool for teaching concepts related to parallel computing and GPU-accelerated applications.

DevOps and system administrators

For those managing JupyterLab environments, NVDashboard provides a way to monitor and ensure that GPU resources are being used effectively across different users and workloads.

What’s new in NVDashboard v0.10?

NVDashboard v0.10 is now updated for JupyterLab v4 and later, featuring architectural improvements and performance upgrades beyond mere compatibility fixes:

Enhanced performance with WebSockets

User-centric monitoring and usability enhancements

UX improvements for a cohesive experience

Enhanced performance with WebSockets

The most notable enhancement in NVDashboard v0.10 is the transition from REST API to WebSockets for data communication. This pivotal upgrade is designed to meet the high demands of real-time monitoring, with data points updating every 50-100 ms. 

The persistent connection offered by WebSockets significantly reduces the overhead of establishing new connections for each data request, leading to better resource utilization and a seamless experience across devices, including those with limited capabilities.

User-centric monitoring and usability enhancements

NVDashboard v0.10 introduces play/pause functionality and a seekbar for time-series charts, empowering you with precise control over your data-monitoring experience. These features enhance the ability to interact with data, providing a more intuitive and user-friendly interface.

UX improvements for a cohesive experience

The latest version of NVDashboard boasts significant UX improvements, including theme support that ensures the extension’s appearance adapts to JupyterLab’s light or dark mode. 

Synced tooltips across multiple dashboard components offer a unified view of data, enhancing your ability to analyze and understand complex relationships between different GPU utilization metrics.

Theme compatibility

The seamless integration of NVDashboard with JupyterLab themes is significant for consistency in UI, accessibility and comfort, which directly impact the user experience.

Figure 2. NVDashboard using the JupyterLab light theme

Figure 3. NVDashboard using the JupyterLab dark theme

Brushing feature for time-series charts

The new brushing feature introduced in NVDashboard enables you to interactively select and inspect specific time ranges on GPU Resources time series charts. This feature enhances the ability to analyze GPU performance and identify potential bottlenecks during particular periods of code execution.

Figure 4. NVDashboard GPU resource dashboard

Synced tooltips

NVDashboard now features synchronized tooltips across multiple time series charts, enabling you to view the corresponding data points on all charts simultaneously by hovering over any single data point. This integration minimizes the need for extensive mouse movement, streamlining the analysis of stats across different charts. 

For example, hovering over a timestamp in the GPU utilization chart simultaneously displays tooltips for GPU memory and PCI Throughput charts at that same timestamp.

Figure 5. Synchronized tooltips

Installation

To experience the full range of improvements and new features, install NVDashboard v0.10 using PyPI and Conda with the following commands:

# PYPI

pip install jupyterlab_NVDashboard

# CONDA

conda install -c rapidsai -c conda-forge jupyterlab-NVDashboard

Conclusion

The release of NVDashboard v0.10 represents a significant milestone in our journey to provide the best possible tools for JupyterLab users. With enhanced performance, improved usability, and a host of new features, we are excited to see how our community uses these updates to push the boundaries of what’s possible with JupyterLab and NVDashboard.

For those looking to contribute or delve deeper into the development of NVDashboard, the updated Developer Guide and resources are available on the /rapidsai/juyterlab-NVDashboard GitHub repo. We encourage our community to explore, contribute, and provide feedback to help continue improving NVDashboard.

For more information about application profiling and performance optimization, see NVIDIA Nsight Systems.