# XProf (+ Tensorboard Profiler Plugin)
XProf includes a suite of tools for [JAX](https://jax.readthedocs.io/), [TensorFlow](https://www.tensorflow.org/), and [PyTorch/XLA](https://github.com/pytorch/xla). These tools help you understand, debug and optimize programs to run on CPUs, GPUs and TPUs.
XProf offers a number of tools to analyse and visualize the
performance of your model across multiple devices. Some of the tools include:
* **Overview**: A high-level overview of the performance of your model. This
is an aggregated overview for your host and all devices. It includes:
* Performance summary and breakdown of step times.
* A graph of individual step times.
* A table of the top 10 most expensive operations.
* **Trace Viewer**: Displays a timeline of the execution of your model that shows:
* The duration of each op.
* Which part of the system (host or device) executed an op.
* The communication between devices.
* **Memory Profile Viewer**: Monitors the memory usage of your model.
* **Graph Viewer**: A visualization of the graph structure of HLOs of your model.
## Demo
First time user? Come and check out this [Colab Demo](https://docs.jaxstack.ai/en/latest/JAX_for_LLM_pretraining.html).
## Prerequisites
* tensorboard-plugin-profile >= 2.19.0
* (optional) TensorBoard >= 2.19.0
Note: XProf requires access to the Internet to load the [Google Chart library](https://developers.google.com/chart/interactive/docs/basic_load_libs#basic-library-loading).
Some charts and tables may be missing if you run TensorBoard entirely offline on
your local machine, behind a corporate firewall, or in a datacenter.
To profile on a **single GPU** system, the following NVIDIA software must be
installed on your system:
1. NVIDIA GPU drivers and CUDA Toolkit:
* CUDA 12.5 requires 525.60.13 and higher.
2. Ensure that CUPTI 10.1 exists on the path.
```shell
$ /sbin/ldconfig -N -v $(sed 's/:/ /g' <<< $LD_LIBRARY_PATH) | grep libcupti
```
If you don't see `libcupti.so.12.5` on the path, prepend its installation
directory to the $LD_LIBRARY_PATH environmental variable:
```shell
$ export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
```
Run the ldconfig command above again to verify that the CUPTI 12.5 library is
found.
If this doesn't work, try:
```shell
$ sudo apt-get install libcupti-dev
```
To profile a system with **multiple GPUs**, see this [guide](https://github.com/tensorflow/profiler/blob/master/docs/profile_multi_gpu.md) for details.
To profile multi-worker GPU configurations, profile individual workers
independently.
To profile cloud TPUs, you must have access to Google Cloud TPUs.
## Quick Start
In order to get the latest version of the profiler plugin, you can install the
nightly package.
To install the nightly version of profiler:
```
$ pip uninstall xprof
$ pip install xprof-nightly
```
Without TensorBoard:
```
$ xprof --logdir=profiler/demo --port=6006
```
With TensorBoard:
```
$ tensorboard --logdir=profiler/demo
```
If you are behind a corporate firewall, you may need to include the `--bind_all`
tensorboard flag.
Go to `localhost:6006/#profile` of your browser, you should now see the demo
overview page show up.
Congratulations! You're now ready to capture a profile.
## Next Steps
* JAX Profiling Guide: https://jax.readthedocs.io/en/latest/profiling.html
* TensorFlow Profiling Guide: https://tensorflow.org/guide/profiler
* Cloud TPU Profiling Guide: https://cloud.google.com/tpu/docs/cloud-tpu-tools
* Colab Tutorial: https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras
* Tensorflow Colab: https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras
Raw data
{
"_id": null,
"home_page": "https://github.com/openxla/xprof",
"name": "tensorboard-plugin-profile",
"maintainer": null,
"docs_url": null,
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"maintainer_email": null,
"keywords": "jax pytorch xla tensorflow tensorboard xprof profile plugin",
"author": "Google Inc.",
"author_email": "packages@tensorflow.org",
"download_url": null,
"platform": null,
"description": "# XProf (+ Tensorboard Profiler Plugin)\nXProf includes a suite of tools for [JAX](https://jax.readthedocs.io/), [TensorFlow](https://www.tensorflow.org/), and [PyTorch/XLA](https://github.com/pytorch/xla). These tools help you understand, debug and optimize programs to run on CPUs, GPUs and TPUs.\n\nXProf offers a number of tools to analyse and visualize the\nperformance of your model across multiple devices. Some of the tools include:\n\n* **Overview**: A high-level overview of the performance of your model. This\n is an aggregated overview for your host and all devices. It includes:\n * Performance summary and breakdown of step times.\n * A graph of individual step times.\n * A table of the top 10 most expensive operations.\n* **Trace Viewer**: Displays a timeline of the execution of your model that shows:\n * The duration of each op.\n * Which part of the system (host or device) executed an op.\n * The communication between devices.\n* **Memory Profile Viewer**: Monitors the memory usage of your model.\n* **Graph Viewer**: A visualization of the graph structure of HLOs of your model.\n\n## Demo\nFirst time user? Come and check out this [Colab Demo](https://docs.jaxstack.ai/en/latest/JAX_for_LLM_pretraining.html).\n\n## Prerequisites\n\n* tensorboard-plugin-profile >= 2.19.0\n* (optional) TensorBoard >= 2.19.0\n\nNote: XProf requires access to the Internet to load the [Google Chart library](https://developers.google.com/chart/interactive/docs/basic_load_libs#basic-library-loading).\nSome charts and tables may be missing if you run TensorBoard entirely offline on\nyour local machine, behind a corporate firewall, or in a datacenter.\n\nTo profile on a **single GPU** system, the following NVIDIA software must be\ninstalled on your system:\n\n1. NVIDIA GPU drivers and CUDA Toolkit:\n * CUDA 12.5 requires 525.60.13 and higher.\n2. Ensure that CUPTI 10.1 exists on the path.\n\n ```shell\n $ /sbin/ldconfig -N -v $(sed 's/:/ /g' <<< $LD_LIBRARY_PATH) | grep libcupti\n ```\n\n If you don't see `libcupti.so.12.5` on the path, prepend its installation\n directory to the $LD_LIBRARY_PATH environmental variable:\n\n ```shell\n $ export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH\n ```\n Run the ldconfig command above again to verify that the CUPTI 12.5 library is\n found.\n\n If this doesn't work, try:\n ```shell\n $ sudo apt-get install libcupti-dev\n ```\n\nTo profile a system with **multiple GPUs**, see this [guide](https://github.com/tensorflow/profiler/blob/master/docs/profile_multi_gpu.md) for details.\n\nTo profile multi-worker GPU configurations, profile individual workers\nindependently.\n\nTo profile cloud TPUs, you must have access to Google Cloud TPUs.\n\n## Quick Start\nIn order to get the latest version of the profiler plugin, you can install the\nnightly package.\n\nTo install the nightly version of profiler:\n\n```\n$ pip uninstall xprof\n$ pip install xprof-nightly\n```\n\nWithout TensorBoard:\n```\n$ xprof --logdir=profiler/demo --port=6006\n```\n\nWith TensorBoard:\n\n```\n$ tensorboard --logdir=profiler/demo\n```\nIf you are behind a corporate firewall, you may need to include the `--bind_all`\ntensorboard flag.\n\nGo to `localhost:6006/#profile` of your browser, you should now see the demo\noverview page show up.\nCongratulations! You're now ready to capture a profile.\n\n## Next Steps\n\n* JAX Profiling Guide: https://jax.readthedocs.io/en/latest/profiling.html\n* TensorFlow Profiling Guide: https://tensorflow.org/guide/profiler\n* Cloud TPU Profiling Guide: https://cloud.google.com/tpu/docs/cloud-tpu-tools\n* Colab Tutorial: https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras\n* Tensorflow Colab: https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": "XProf Profiler Plugin",
"version": "2.20.6",
"project_urls": {
"Homepage": "https://github.com/openxla/xprof"
},
"split_keywords": [
"jax",
"pytorch",
"xla",
"tensorflow",
"tensorboard",
"xprof",
"profile",
"plugin"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "7f1c21ab41dbbad871ef72e96aa047b9d0a44b01fc071beb173599d3c04d5734",
"md5": "16e92d288fcb4e7c88210d34cf96f71e",
"sha256": "6e8d25eef34e31ab94c1dd406a279bf67334569d15325034c28d626d937b6f50"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.6-cp310-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "16e92d288fcb4e7c88210d34cf96f71e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3930,
"upload_time": "2025-08-20T02:34:50",
"upload_time_iso_8601": "2025-08-20T02:34:50.959035Z",
"url": "https://files.pythonhosted.org/packages/7f/1c/21ab41dbbad871ef72e96aa047b9d0a44b01fc071beb173599d3c04d5734/tensorboard_plugin_profile-2.20.6-cp310-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "888e0bdd490b4996d0416556dfdd2edc418294af1e14797d75e6303c639750de",
"md5": "6befdf7c012af897a939d585a8253b8e",
"sha256": "1a9634430413389e1f6e7ffac28166c2421d3cc0177e476b2078716dc193d6fe"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.6-cp311-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "6befdf7c012af897a939d585a8253b8e",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3931,
"upload_time": "2025-08-20T02:35:58",
"upload_time_iso_8601": "2025-08-20T02:35:58.886555Z",
"url": "https://files.pythonhosted.org/packages/88/8e/0bdd490b4996d0416556dfdd2edc418294af1e14797d75e6303c639750de/tensorboard_plugin_profile-2.20.6-cp311-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b75d247bd38af897c278618f62c93dfe7372bce90faab6e0c19fc980ff8190dd",
"md5": "8691fd644be66c6b1fd89339c72bbf39",
"sha256": "41e3b17f3a2107dffa22cb0029da13915d8b5bfed8e74414f2c315fd27865358"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.6-cp312-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "8691fd644be66c6b1fd89339c72bbf39",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3931,
"upload_time": "2025-08-20T02:37:00",
"upload_time_iso_8601": "2025-08-20T02:37:00.145794Z",
"url": "https://files.pythonhosted.org/packages/b7/5d/247bd38af897c278618f62c93dfe7372bce90faab6e0c19fc980ff8190dd/tensorboard_plugin_profile-2.20.6-cp312-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d583308a06d4775db8294d6d61bff518a7671f6855bbabac8db3c1c185a97de0",
"md5": "7d0a74d60f6839245010a2d54b39aa53",
"sha256": "5cdce5f23bea61e28fc5f6f79b52c1d510ecfbbcf1fa667531982ddcbf178cd8"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.6-cp313-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "7d0a74d60f6839245010a2d54b39aa53",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3931,
"upload_time": "2025-08-20T02:39:06",
"upload_time_iso_8601": "2025-08-20T02:39:06.366824Z",
"url": "https://files.pythonhosted.org/packages/d5/83/308a06d4775db8294d6d61bff518a7671f6855bbabac8db3c1c185a97de0/tensorboard_plugin_profile-2.20.6-cp313-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "51d45dbfa33cbe8f83b7fe8ea1e14986f0b59ce1736645c2a5c0cc3ab6eb40ca",
"md5": "2d561b580cc10e11074c15da870cac97",
"sha256": "3c7e5efab57b555bb0477983ebb444c35a8b37a058a87ae94e7afea4a80e1abc"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.6-cp39-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "2d561b580cc10e11074c15da870cac97",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3931,
"upload_time": "2025-08-20T02:34:54",
"upload_time_iso_8601": "2025-08-20T02:34:54.606955Z",
"url": "https://files.pythonhosted.org/packages/51/d4/5dbfa33cbe8f83b7fe8ea1e14986f0b59ce1736645c2a5c0cc3ab6eb40ca/tensorboard_plugin_profile-2.20.6-cp39-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-20 02:34:50",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "openxla",
"github_project": "xprof",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "tensorboard-plugin-profile"
}