# 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.13,>=3.9",
"maintainer_email": null,
"keywords": "jax pytorch xla tensorflow tensorboard xprof profile plugin",
"author": "Google Inc.",
"author_email": "packages@tensorflow.org",
"download_url": "https://files.pythonhosted.org/packages/89/1f/2d5afa0c65e6077b66d70fe054d484220049fc65de7b807298e52e3d1124/tensorboard_plugin_profile-2.20.4.tar.gz",
"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.4",
"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": "07a2bb80fe65dec5dfb9001d9690958b50a023ec1da8b42c67fa3d0e665198ae",
"md5": "b6927c642d53fee0838184e5031679bb",
"sha256": "668e0e9a879dd09ed18d350c3a2c525181e379145e6782f6cef4f35ed1510a12"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-cp310-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "b6927c642d53fee0838184e5031679bb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.9",
"size": 3921,
"upload_time": "2025-07-18T00:20:44",
"upload_time_iso_8601": "2025-07-18T00:20:44.861540Z",
"url": "https://files.pythonhosted.org/packages/07/a2/bb80fe65dec5dfb9001d9690958b50a023ec1da8b42c67fa3d0e665198ae/tensorboard_plugin_profile-2.20.4-cp310-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "211ecd3d5541ee71e27ee482312bf88c04c2c0df571be48d66ee0380c5ef0b37",
"md5": "60ba901b6eb9e5731e0f7d57c29164d8",
"sha256": "82a1c55b21bac9f54070e797d9817203887f1e1a6dff1b8e16097b6960bec646"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-cp310-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "60ba901b6eb9e5731e0f7d57c29164d8",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.9",
"size": 3929,
"upload_time": "2025-07-18T00:42:13",
"upload_time_iso_8601": "2025-07-18T00:42:13.177569Z",
"url": "https://files.pythonhosted.org/packages/21/1e/cd3d5541ee71e27ee482312bf88c04c2c0df571be48d66ee0380c5ef0b37/tensorboard_plugin_profile-2.20.4-cp310-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "69c671af1f66ae1aff86e3d6cd86360d9898e7faa8958858c1196a13b00e26d3",
"md5": "b93ffad145d6860197274eff5f864bb6",
"sha256": "0aff187dad02c9a5ecf8a8808e3fd2eb6a7e564e7d04bf5d8238d4c0adf9e027"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "b93ffad145d6860197274eff5f864bb6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.9",
"size": 3943,
"upload_time": "2025-07-18T00:33:01",
"upload_time_iso_8601": "2025-07-18T00:33:01.644232Z",
"url": "https://files.pythonhosted.org/packages/69/c6/71af1f66ae1aff86e3d6cd86360d9898e7faa8958858c1196a13b00e26d3/tensorboard_plugin_profile-2.20.4-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "04ab2513245e282a0c712421b237018baf71e216dc38e709edddcde3207a4123",
"md5": "8740f6ae3b625731d5c077b8108421cf",
"sha256": "cc176790cba888dd05ad42cdbb3931e8eebaa21875b8a2849c37ca2f45e0cfb7"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-cp311-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "8740f6ae3b625731d5c077b8108421cf",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.9",
"size": 3923,
"upload_time": "2025-07-18T00:17:18",
"upload_time_iso_8601": "2025-07-18T00:17:18.011389Z",
"url": "https://files.pythonhosted.org/packages/04/ab/2513245e282a0c712421b237018baf71e216dc38e709edddcde3207a4123/tensorboard_plugin_profile-2.20.4-cp311-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "67828ef026791a7cf51d1b353b1e853e83ce9c77489526ff3c82d797b5be3fc3",
"md5": "2c0811b20d1e3c7394f8260041428792",
"sha256": "13ecccc5e362294a0c0296317cc2138578937cf64f7156fe1715ec7ed5edea6c"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "2c0811b20d1e3c7394f8260041428792",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.9",
"size": 3943,
"upload_time": "2025-07-18T00:41:43",
"upload_time_iso_8601": "2025-07-18T00:41:43.630629Z",
"url": "https://files.pythonhosted.org/packages/67/82/8ef026791a7cf51d1b353b1e853e83ce9c77489526ff3c82d797b5be3fc3/tensorboard_plugin_profile-2.20.4-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "88928768b0a625d100626ec216058fc58213fae32331c12098dfbbe011a0b345",
"md5": "7689026f0db036a0634b2b4a6278687e",
"sha256": "0d756dc2f06f347242f79677c0dee0966b3fe2c4088943fdfd04e4f2b235e206"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-cp312-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "7689026f0db036a0634b2b4a6278687e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.9",
"size": 3923,
"upload_time": "2025-07-18T00:18:19",
"upload_time_iso_8601": "2025-07-18T00:18:19.212675Z",
"url": "https://files.pythonhosted.org/packages/88/92/8768b0a625d100626ec216058fc58213fae32331c12098dfbbe011a0b345/tensorboard_plugin_profile-2.20.4-cp312-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5af68530393d3a6d1121495755737e40a8bb80d85fa3a2dc73624b98231ac533",
"md5": "82cc95dd231ee0f2c82d8078f86bbb75",
"sha256": "57ef710132a04ff8b1f0e39028c68db0509ecf475f48f86c26f50d75b82816df"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-cp312-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "82cc95dd231ee0f2c82d8078f86bbb75",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.9",
"size": 3927,
"upload_time": "2025-07-18T00:41:55",
"upload_time_iso_8601": "2025-07-18T00:41:55.262146Z",
"url": "https://files.pythonhosted.org/packages/5a/f6/8530393d3a6d1121495755737e40a8bb80d85fa3a2dc73624b98231ac533/tensorboard_plugin_profile-2.20.4-cp312-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "61f8a53aa9cf8bbccc955065d64e6d38fc95e0de10b9a4ad145c2c25b557e0a5",
"md5": "2a07f7da096ccbde6f9ab3e734ecf462",
"sha256": "295e3754eac25714919cd9220dfe8b9d4f6038922c98fa7f7f479de024831c9d"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-cp312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "2a07f7da096ccbde6f9ab3e734ecf462",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.9",
"size": 3943,
"upload_time": "2025-07-18T00:44:36",
"upload_time_iso_8601": "2025-07-18T00:44:36.449151Z",
"url": "https://files.pythonhosted.org/packages/61/f8/a53aa9cf8bbccc955065d64e6d38fc95e0de10b9a4ad145c2c25b557e0a5/tensorboard_plugin_profile-2.20.4-cp312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ea3eba5f2d4f8afb1e5b2f14286701b29221c89fa9376cdf4de6bd0f68b7505a",
"md5": "fd87e5684facceb76e999427e9d0af55",
"sha256": "eab8030230f8b91df51fe3a01a33c980b6f020b233b6bed0cfe4e94048608b26"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "fd87e5684facceb76e999427e9d0af55",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<3.13,>=3.9",
"size": 3943,
"upload_time": "2025-07-18T00:22:12",
"upload_time_iso_8601": "2025-07-18T00:22:12.747625Z",
"url": "https://files.pythonhosted.org/packages/ea/3e/ba5f2d4f8afb1e5b2f14286701b29221c89fa9376cdf4de6bd0f68b7505a/tensorboard_plugin_profile-2.20.4-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dd6e259ddf27ea5d6a273c04f97622e252f26b54c10ad47d124ae77b5a47e11a",
"md5": "e02405eea4b7e692d2724897d7f2c61e",
"sha256": "581045bb58852591e1c3710ad710a0415e291bee2d0ab1663788dac07f7a861d"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e02405eea4b7e692d2724897d7f2c61e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.9",
"size": 3913,
"upload_time": "2025-07-18T00:38:26",
"upload_time_iso_8601": "2025-07-18T00:38:26.242793Z",
"url": "https://files.pythonhosted.org/packages/dd/6e/259ddf27ea5d6a273c04f97622e252f26b54c10ad47d124ae77b5a47e11a/tensorboard_plugin_profile-2.20.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "891f2d5afa0c65e6077b66d70fe054d484220049fc65de7b807298e52e3d1124",
"md5": "e99cf3c4b957a04171c462796fee5343",
"sha256": "ea651f4b659711d61fcd9d461dd641c0497cf0f15d896ea3a029e9d29d4c158d"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.20.4.tar.gz",
"has_sig": false,
"md5_digest": "e99cf3c4b957a04171c462796fee5343",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.9",
"size": 3912,
"upload_time": "2025-07-18T00:38:27",
"upload_time_iso_8601": "2025-07-18T00:38:27.250813Z",
"url": "https://files.pythonhosted.org/packages/89/1f/2d5afa0c65e6077b66d70fe054d484220049fc65de7b807298e52e3d1124/tensorboard_plugin_profile-2.20.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-18 00:38:27",
"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"
}