# Tensorboard Profiler Plugin
The profiler 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.
The profiler plugin 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://www.tensorflow.org/tensorboard/tensorboard_profiling_keras).
## Prerequisites
* TensorFlow >= 2.18.0
* TensorBoard >= 2.18.0
* tensorboard-plugin-profile >= 2.18.0
Note: The Tensorboard Profiler Plugin 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](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
The profiler plugin follows the TensorFlow versioning scheme. As a result, the
`tensorboard-plugin-profile` PyPI package can be behind the `tbp-nightly` PyPI
package. 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 tensorboard-plugin-profile
$ pip install tbp-nightly
```
Run 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
* MiniGPT Example: https://docs.jaxstack.ai/en/latest/JAX_for_LLM_pretraining.html
Raw data
{
"_id": null,
"home_page": "https://github.com/tensorflow/profiler",
"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": "https://files.pythonhosted.org/packages/e7/6d/5e2feccbb70ac077a3dacf0a24bcb95b07fc34c9308882095c4337c39058/tensorboard_plugin_profile-2.19.0.tar.gz",
"platform": null,
"description": "# Tensorboard Profiler Plugin\nThe profiler 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\nThe profiler plugin 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://www.tensorflow.org/tensorboard/tensorboard_profiling_keras).\n\n## Prerequisites\n* TensorFlow >= 2.18.0\n* TensorBoard >= 2.18.0\n* tensorboard-plugin-profile >= 2.18.0\n\nNote: The Tensorboard Profiler Plugin 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 installed 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 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 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](docs/profile_multi_gpu.md) for details.\n\nTo profile multi-worker GPU configurations, profile individual workers independently.\n\nTo profile cloud TPUs, you must have access to Google Cloud TPUs.\n\n## Quick Start\nThe profiler plugin follows the TensorFlow versioning scheme. As a result, the\n`tensorboard-plugin-profile` PyPI package can be behind the `tbp-nightly` PyPI\npackage. In order to get the latest version of the profiler plugin, you can\ninstall the nightly package..\n\nTo install the nightly version of profiler:\n\n```\n$ pip uninstall tensorboard-plugin-profile\n$ pip install tbp-nightly\n```\n\nRun 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 overview page show up.\n\nCongratulations! You're now ready to capture a profile.\n\n## Next Steps\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* MiniGPT Example: https://docs.jaxstack.ai/en/latest/JAX_for_LLM_pretraining.html\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": "Profile Tensorboard Plugin",
"version": "2.19.0",
"project_urls": {
"Homepage": "https://github.com/tensorflow/profiler"
},
"split_keywords": [
"jax",
"pytorch",
"xla",
"tensorflow",
"tensorboard",
"xprof",
"profile",
"plugin"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "641ceb553690933f2142fc5ad4adc5a5d9594c2e69bd008ba80d2cc5f1a2c499",
"md5": "54ad583bd0d726f37e930241d6fa291f",
"sha256": "4c8ebd04be4963148e05411ac320988135e43625cffbae590b259ce96f79e9b0"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-cp310-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "54ad583bd0d726f37e930241d6fa291f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 24504848,
"upload_time": "2025-01-29T19:20:59",
"upload_time_iso_8601": "2025-01-29T19:20:59.671415Z",
"url": "https://files.pythonhosted.org/packages/64/1c/eb553690933f2142fc5ad4adc5a5d9594c2e69bd008ba80d2cc5f1a2c499/tensorboard_plugin_profile-2.19.0-cp310-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c2274c60a605529e82d5da8f7768a66665677da86540da807f16aa879f996c09",
"md5": "ea740afb1c02901eaf190a6d69f76bf8",
"sha256": "01f16b1c7189eded524231426fbc3eb866feed74af3fb24d589a8edf6040896a"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-cp310-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ea740afb1c02901eaf190a6d69f76bf8",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 25828136,
"upload_time": "2025-01-29T19:43:28",
"upload_time_iso_8601": "2025-01-29T19:43:28.436931Z",
"url": "https://files.pythonhosted.org/packages/c2/27/4c60a605529e82d5da8f7768a66665677da86540da807f16aa879f996c09/tensorboard_plugin_profile-2.19.0-cp310-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7f8ebf4e2722aaa7e9d144cbf7578460472ee84e1260d20d113ddddbbecb2f0e",
"md5": "4379d3bc3d6b0b111c2969e7c46d55aa",
"sha256": "063ce1f21a1d4ec4b333640a4ee711ff912d2777731a1b13559f786ccf7e447f"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "4379d3bc3d6b0b111c2969e7c46d55aa",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 17779285,
"upload_time": "2025-01-29T19:36:21",
"upload_time_iso_8601": "2025-01-29T19:36:21.781586Z",
"url": "https://files.pythonhosted.org/packages/7f/8e/bf4e2722aaa7e9d144cbf7578460472ee84e1260d20d113ddddbbecb2f0e/tensorboard_plugin_profile-2.19.0-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b88426c2cea17690ec85e5d6daca0886676a7e5143c7ff50f7b6837c837409d3",
"md5": "3d57e33923c1f058a2eef9184b7772f8",
"sha256": "0b2011074b636895cb5fd80a413e8a3e3f37b5f509d3bcd7247d9123c4f986ba"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-cp311-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "3d57e33923c1f058a2eef9184b7772f8",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 24506054,
"upload_time": "2025-01-29T19:20:19",
"upload_time_iso_8601": "2025-01-29T19:20:19.268156Z",
"url": "https://files.pythonhosted.org/packages/b8/84/26c2cea17690ec85e5d6daca0886676a7e5143c7ff50f7b6837c837409d3/tensorboard_plugin_profile-2.19.0-cp311-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "50f7316f12c3e6f7f8fc58793d1178a7b502a904144d69279f83c910316453d6",
"md5": "a71fefb263ef78585edfb091b98cc29b",
"sha256": "1326d41697eef096533f350f446be9117bd8f5c121208545b6c2e6f93ee1fddc"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-cp311-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a71fefb263ef78585edfb091b98cc29b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 25828910,
"upload_time": "2025-01-29T19:45:54",
"upload_time_iso_8601": "2025-01-29T19:45:54.529304Z",
"url": "https://files.pythonhosted.org/packages/50/f7/316f12c3e6f7f8fc58793d1178a7b502a904144d69279f83c910316453d6/tensorboard_plugin_profile-2.19.0-cp311-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "214f6d26e31598fd2ffbc63b08485c9eaa7b72b56eaa5763d70a12c45d3da78a",
"md5": "901bc244a5e9fa9ada295b32934d1460",
"sha256": "75c070da51ac5e47695fcd9f61f57486310f32000479e4d1a99e30de11d950f2"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "901bc244a5e9fa9ada295b32934d1460",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 17781520,
"upload_time": "2025-01-29T19:44:21",
"upload_time_iso_8601": "2025-01-29T19:44:21.791631Z",
"url": "https://files.pythonhosted.org/packages/21/4f/6d26e31598fd2ffbc63b08485c9eaa7b72b56eaa5763d70a12c45d3da78a/tensorboard_plugin_profile-2.19.0-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2891ddb04e9f44dc2699c8fea5debff619d9aa40dc64875686e646d1c7035e52",
"md5": "deec1ddf1113323112b2cdd8a90b4040",
"sha256": "317e7ccf7b8cface6345f495b615f81c0a6b765c1c27adaa35af48c3021972a9"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-cp39-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "deec1ddf1113323112b2cdd8a90b4040",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 24506141,
"upload_time": "2025-01-29T19:22:17",
"upload_time_iso_8601": "2025-01-29T19:22:17.761045Z",
"url": "https://files.pythonhosted.org/packages/28/91/ddb04e9f44dc2699c8fea5debff619d9aa40dc64875686e646d1c7035e52/tensorboard_plugin_profile-2.19.0-cp39-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "18096ebd1da9f8f13c1d96eeeee39576f870fb503cd1709b50067422e9cecfb2",
"md5": "eb205a899fdcd68c132b915cff99767b",
"sha256": "46fb3060057251247122f11b41996aab34faece9e3992b6d60362cf3c5614d97"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-cp39-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "eb205a899fdcd68c132b915cff99767b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 25828015,
"upload_time": "2025-01-29T19:46:50",
"upload_time_iso_8601": "2025-01-29T19:46:50.820447Z",
"url": "https://files.pythonhosted.org/packages/18/09/6ebd1da9f8f13c1d96eeeee39576f870fb503cd1709b50067422e9cecfb2/tensorboard_plugin_profile-2.19.0-cp39-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3ddef26f154debe30d5e1cfe039774c5e3868316eed5ac2a92b78e10477ca2aa",
"md5": "a79a1ce70e17b4545ceef8fa7324aaed",
"sha256": "82e045a3b01f66fbdf774510a56e61dfe089cdbb4b6faefd2133c041f43c72e3"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "a79a1ce70e17b4545ceef8fa7324aaed",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 17779903,
"upload_time": "2025-01-29T19:34:08",
"upload_time_iso_8601": "2025-01-29T19:34:08.984410Z",
"url": "https://files.pythonhosted.org/packages/3d/de/f26f154debe30d5e1cfe039774c5e3868316eed5ac2a92b78e10477ca2aa/tensorboard_plugin_profile-2.19.0-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "86c56def907dafeba3c5c77f9913b4bde2600a906345261d1a1e9859ad40287c",
"md5": "dba3ad8b17497392dace7fd88773cc35",
"sha256": "83262b7d339f35969e62755c80f1bed9525b8ea365c2b99fc9b95bc042b5ac89"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "dba3ad8b17497392dace7fd88773cc35",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 5987076,
"upload_time": "2025-01-29T19:44:40",
"upload_time_iso_8601": "2025-01-29T19:44:40.579007Z",
"url": "https://files.pythonhosted.org/packages/86/c5/6def907dafeba3c5c77f9913b4bde2600a906345261d1a1e9859ad40287c/tensorboard_plugin_profile-2.19.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e76d5e2feccbb70ac077a3dacf0a24bcb95b07fc34c9308882095c4337c39058",
"md5": "30a3ef3b3e0474b2b9d53c1e76a2c848",
"sha256": "e52328f321ff5207d53690abee68941a49d93b72a33f094b887e595b9b72906b"
},
"downloads": -1,
"filename": "tensorboard_plugin_profile-2.19.0.tar.gz",
"has_sig": false,
"md5_digest": "30a3ef3b3e0474b2b9d53c1e76a2c848",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 5902447,
"upload_time": "2025-01-29T19:44:43",
"upload_time_iso_8601": "2025-01-29T19:44:43.193005Z",
"url": "https://files.pythonhosted.org/packages/e7/6d/5e2feccbb70ac077a3dacf0a24bcb95b07fc34c9308882095c4337c39058/tensorboard_plugin_profile-2.19.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-29 19:44:43",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tensorflow",
"github_project": "profiler",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "tensorboard-plugin-profile"
}