# 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": "xprof",
"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.2",
"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": "9f67b89259c46aaef9b3169a19747467ce038a73de3f3d41f768940b9d850b7d",
"md5": "63b849954b4935e376a976ea6a30509d",
"sha256": "4356a6200f589b74de7af82718da08883d95f27db9232525efe95dacafbcf1df"
},
"downloads": -1,
"filename": "xprof-2.20.2-cp310-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "63b849954b4935e376a976ea6a30509d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10842976,
"upload_time": "2025-07-11T23:04:45",
"upload_time_iso_8601": "2025-07-11T23:04:45.076785Z",
"url": "https://files.pythonhosted.org/packages/9f/67/b89259c46aaef9b3169a19747467ce038a73de3f3d41f768940b9d850b7d/xprof-2.20.2-cp310-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b552c357be820d43d4fa6845765ceba89759f76bcc9bbf8619c1966edccf0e14",
"md5": "b3cdde1023a04d1a87da87e24c202858",
"sha256": "5e66989428f6fe36e85e9be531ee52cc2ce7a200b053f9a21a700f0a2d244c26"
},
"downloads": -1,
"filename": "xprof-2.20.2-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "b3cdde1023a04d1a87da87e24c202858",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10627573,
"upload_time": "2025-07-11T23:11:00",
"upload_time_iso_8601": "2025-07-11T23:11:00.196025Z",
"url": "https://files.pythonhosted.org/packages/b5/52/c357be820d43d4fa6845765ceba89759f76bcc9bbf8619c1966edccf0e14/xprof-2.20.2-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fca9e0298e450d93e6670b74199f10da5e708b399102ae3180e5813ddd8f39f9",
"md5": "a6633ba70d3f8325e50d5eb6f5dff137",
"sha256": "3ce3fc02c2b5e24c2b7726610ad2fd6c3883e7c30069978e4c4c2ad955006b18"
},
"downloads": -1,
"filename": "xprof-2.20.2-cp311-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "a6633ba70d3f8325e50d5eb6f5dff137",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10844164,
"upload_time": "2025-07-11T23:04:26",
"upload_time_iso_8601": "2025-07-11T23:04:26.653980Z",
"url": "https://files.pythonhosted.org/packages/fc/a9/e0298e450d93e6670b74199f10da5e708b399102ae3180e5813ddd8f39f9/xprof-2.20.2-cp311-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a79533b2f731b0d1705aeb1cf9dce2057881cb6c3adbd5217070be57c170be5d",
"md5": "74509fb8b100608e7d93381d9e999a49",
"sha256": "48ba8f7788627313188a492fe923b31dc55b5a9aa7549432c47cfc7776679a36"
},
"downloads": -1,
"filename": "xprof-2.20.2-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "74509fb8b100608e7d93381d9e999a49",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10629298,
"upload_time": "2025-07-11T23:11:28",
"upload_time_iso_8601": "2025-07-11T23:11:28.079646Z",
"url": "https://files.pythonhosted.org/packages/a7/95/33b2f731b0d1705aeb1cf9dce2057881cb6c3adbd5217070be57c170be5d/xprof-2.20.2-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "91981ac485a63cc84a581aba8923c6a1e5cc5b7c13534dcf058c997d95b628c9",
"md5": "53bffe32270a03a90d43a1e85382eeb4",
"sha256": "7590cbd63fa27f743b57d182a566f1bcf30e61f0a0d591c0b6018dc672fd72ea"
},
"downloads": -1,
"filename": "xprof-2.20.2-cp312-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "53bffe32270a03a90d43a1e85382eeb4",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10844446,
"upload_time": "2025-07-11T23:04:46",
"upload_time_iso_8601": "2025-07-11T23:04:46.610379Z",
"url": "https://files.pythonhosted.org/packages/91/98/1ac485a63cc84a581aba8923c6a1e5cc5b7c13534dcf058c997d95b628c9/xprof-2.20.2-cp312-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e12df44e88a44506799436ab86f391b0ffeb976aaebe900d290074ef5aecee42",
"md5": "0789d7a725d78fe933bd8c7f6b883081",
"sha256": "ecc2b71faed600df679e4c0e0762f6c73e11b43cc147bee9ee35d35a628bf933"
},
"downloads": -1,
"filename": "xprof-2.20.2-cp312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "0789d7a725d78fe933bd8c7f6b883081",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10628259,
"upload_time": "2025-07-11T23:11:09",
"upload_time_iso_8601": "2025-07-11T23:11:09.983343Z",
"url": "https://files.pythonhosted.org/packages/e1/2d/f44e88a44506799436ab86f391b0ffeb976aaebe900d290074ef5aecee42/xprof-2.20.2-cp312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "901c126b189acf19a4c41e613e891b6b87afe8c36f14f37d009f9a39d3038c26",
"md5": "113b724c65f8b800473e8b6fd9de40ba",
"sha256": "adb9016005986c7fa1456eff05c9ff5b9d404cf5d69918d38e603a83a21faf97"
},
"downloads": -1,
"filename": "xprof-2.20.2-cp39-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "113b724c65f8b800473e8b6fd9de40ba",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10843050,
"upload_time": "2025-07-11T23:07:35",
"upload_time_iso_8601": "2025-07-11T23:07:35.323263Z",
"url": "https://files.pythonhosted.org/packages/90/1c/126b189acf19a4c41e613e891b6b87afe8c36f14f37d009f9a39d3038c26/xprof-2.20.2-cp39-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "128e46c4225ba893af12c245f713590af6799a3a8b468647f66e9a4b4a125402",
"md5": "45d371665047bcf8b70577cefaa33fed",
"sha256": "0c4e330f47a6121f39bcdb95cc1cec501de0e5aaf317dc93fc47c4a67cec6bcc"
},
"downloads": -1,
"filename": "xprof-2.20.2-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "45d371665047bcf8b70577cefaa33fed",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10627703,
"upload_time": "2025-07-11T23:10:46",
"upload_time_iso_8601": "2025-07-11T23:10:46.783952Z",
"url": "https://files.pythonhosted.org/packages/12/8e/46c4225ba893af12c245f713590af6799a3a8b468647f66e9a4b4a125402/xprof-2.20.2-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-11 23:04:45",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "openxla",
"github_project": "xprof",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "xprof"
}