# 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": "tbp-nightly",
"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/69/f6/b554a8af876cec7c0120988729c3734bad3f913a097667523b0dfe213952/tbp-nightly-2.20.0a20250219.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.20.0a20250219",
"project_urls": {
"Homepage": "https://github.com/tensorflow/profiler"
},
"split_keywords": [
"jax",
"pytorch",
"xla",
"tensorflow",
"tensorboard",
"xprof",
"profile",
"plugin"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d9686a3cda365c0dbcb693810485e825de46e29c839b49e04577fa85d1915524",
"md5": "5b3cf53a9482287bc6c8a881baf3f3ba",
"sha256": "bd848e9cebb2eb9d179bd96b698f825ef083c88cc11a86a2759ecfa0698b211e"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-cp310-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "5b3cf53a9482287bc6c8a881baf3f3ba",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 24616097,
"upload_time": "2025-02-19T10:13:45",
"upload_time_iso_8601": "2025-02-19T10:13:45.962211Z",
"url": "https://files.pythonhosted.org/packages/d9/68/6a3cda365c0dbcb693810485e825de46e29c839b49e04577fa85d1915524/tbp_nightly-2.20.0a20250219-cp310-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a32b2c8261f67db4e2b93231019ad1000b9272fe68eb648377f0a0d8024efd3f",
"md5": "25c6e26ed5667ab5d987a205d4189d0a",
"sha256": "a457937b257de9362fabb4600bba7ee7eb46524381c4559a176d276856113078"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-cp310-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "25c6e26ed5667ab5d987a205d4189d0a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 26099036,
"upload_time": "2025-02-19T10:37:26",
"upload_time_iso_8601": "2025-02-19T10:37:26.382584Z",
"url": "https://files.pythonhosted.org/packages/a3/2b/2c8261f67db4e2b93231019ad1000b9272fe68eb648377f0a0d8024efd3f/tbp_nightly-2.20.0a20250219-cp310-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c182615947c95f92a9532516c374d2f8ffbb4b9771a64a248aa5f8a798553509",
"md5": "b82108ec0cb8b18d8afc7340ab601faa",
"sha256": "1995a0e4fa1399ece5899c78c00ace92d3d3bfa6abe3e0538988c9adaedc0481"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "b82108ec0cb8b18d8afc7340ab601faa",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 17855854,
"upload_time": "2025-02-19T10:27:49",
"upload_time_iso_8601": "2025-02-19T10:27:49.981752Z",
"url": "https://files.pythonhosted.org/packages/c1/82/615947c95f92a9532516c374d2f8ffbb4b9771a64a248aa5f8a798553509/tbp_nightly-2.20.0a20250219-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "27a032aa296c2f80d6e98f7fd40a42e62022b0a2c17561f92f932e7e44cb6577",
"md5": "f8c47e7a665e967a6217d156fd1e261e",
"sha256": "18f56d379a63691c58aa550c95bebfa67f9beafe908813fe4721be0fc90d927c"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-cp311-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "f8c47e7a665e967a6217d156fd1e261e",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 24619648,
"upload_time": "2025-02-19T10:14:08",
"upload_time_iso_8601": "2025-02-19T10:14:08.454224Z",
"url": "https://files.pythonhosted.org/packages/27/a0/32aa296c2f80d6e98f7fd40a42e62022b0a2c17561f92f932e7e44cb6577/tbp_nightly-2.20.0a20250219-cp311-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "72de2540a454504e7cd7eeae4cbda17e05a17e14b55697738b85a8c909e3f52e",
"md5": "c47170ae90cd5431e44c22cd35ecd51d",
"sha256": "86ce9121837bf37bac20b96b276e27246f7481586de5d8cd09848fea03cd6442"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-cp311-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "c47170ae90cd5431e44c22cd35ecd51d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 26100787,
"upload_time": "2025-02-19T10:38:29",
"upload_time_iso_8601": "2025-02-19T10:38:29.985851Z",
"url": "https://files.pythonhosted.org/packages/72/de/2540a454504e7cd7eeae4cbda17e05a17e14b55697738b85a8c909e3f52e/tbp_nightly-2.20.0a20250219-cp311-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "947e0d81caec38c16a6c460bc459866b5d54bf06b97cbd24da9442da9ed4c367",
"md5": "e02067702a21d57c23a0339501507f57",
"sha256": "801dcd442edd37a33cbc915860577c699a1055d9e683101140523b7309dab032"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "e02067702a21d57c23a0339501507f57",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 17857290,
"upload_time": "2025-02-19T10:29:43",
"upload_time_iso_8601": "2025-02-19T10:29:43.657673Z",
"url": "https://files.pythonhosted.org/packages/94/7e/0d81caec38c16a6c460bc459866b5d54bf06b97cbd24da9442da9ed4c367/tbp_nightly-2.20.0a20250219-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fe090e1cd67f6c4412a9700de5381b5580f1674b21ae25d43a2393e1d2dad748",
"md5": "91f0e3c693fe8f53f297c720ea182d3a",
"sha256": "5af17806a8be2dfd262a3d426b381b7d9c09ad3979b8a5ae3b8ffd48e7a718b0"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-cp39-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "91f0e3c693fe8f53f297c720ea182d3a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 24617202,
"upload_time": "2025-02-19T10:14:15",
"upload_time_iso_8601": "2025-02-19T10:14:15.938554Z",
"url": "https://files.pythonhosted.org/packages/fe/09/0e1cd67f6c4412a9700de5381b5580f1674b21ae25d43a2393e1d2dad748/tbp_nightly-2.20.0a20250219-cp39-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dee411c15104460f583f1b2651c160f29fab7d3b83e44a883a944b3734e303e7",
"md5": "58d3a1b63676c7c6d613991d074b39b8",
"sha256": "6731d7b0718f42d451b13f08ec15da87ea862cc6c7e56fd177e472ee2a6641b3"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-cp39-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "58d3a1b63676c7c6d613991d074b39b8",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 26099023,
"upload_time": "2025-02-19T10:37:18",
"upload_time_iso_8601": "2025-02-19T10:37:18.546301Z",
"url": "https://files.pythonhosted.org/packages/de/e4/11c15104460f583f1b2651c160f29fab7d3b83e44a883a944b3734e303e7/tbp_nightly-2.20.0a20250219-cp39-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "86dd62e3c91ac591d4788d3a19bf1a572b596a4d6ba291040a91cac11c8d68af",
"md5": "6753b1978d5be68f5fc61738b70d579d",
"sha256": "3aaa5316fc92415ced5857dcdb48c3b6ee2d9e208ba4518073667d04d61e367a"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "6753b1978d5be68f5fc61738b70d579d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 17855861,
"upload_time": "2025-02-19T10:26:22",
"upload_time_iso_8601": "2025-02-19T10:26:22.800596Z",
"url": "https://files.pythonhosted.org/packages/86/dd/62e3c91ac591d4788d3a19bf1a572b596a4d6ba291040a91cac11c8d68af/tbp_nightly-2.20.0a20250219-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ce1c596bafc32a8995c98c95be831b1f878ae7b669485bfc5fb3d4d30a005c97",
"md5": "b2df9fd0a71d97d119fbaa6d08d04387",
"sha256": "5ce5017e77b0ac5eeb153402019dd3738222f73fcfb7b1959b0af55042e5a863"
},
"downloads": -1,
"filename": "tbp_nightly-2.20.0a20250219-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b2df9fd0a71d97d119fbaa6d08d04387",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 5999587,
"upload_time": "2025-02-19T10:38:19",
"upload_time_iso_8601": "2025-02-19T10:38:19.469649Z",
"url": "https://files.pythonhosted.org/packages/ce/1c/596bafc32a8995c98c95be831b1f878ae7b669485bfc5fb3d4d30a005c97/tbp_nightly-2.20.0a20250219-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "69f6b554a8af876cec7c0120988729c3734bad3f913a097667523b0dfe213952",
"md5": "b048433edd6e6bad8596675f926c4c4b",
"sha256": "8ef1743fae8b593fc4cc5bab341fccf209e1c2a0ad814b591429ecb28b364868"
},
"downloads": -1,
"filename": "tbp-nightly-2.20.0a20250219.tar.gz",
"has_sig": false,
"md5_digest": "b048433edd6e6bad8596675f926c4c4b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 5915319,
"upload_time": "2025-02-19T10:38:21",
"upload_time_iso_8601": "2025-02-19T10:38:21.925134Z",
"url": "https://files.pythonhosted.org/packages/69/f6/b554a8af876cec7c0120988729c3734bad3f913a097667523b0dfe213952/tbp-nightly-2.20.0a20250219.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-19 10:38:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tensorflow",
"github_project": "profiler",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "tbp-nightly"
}