# 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-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/bf/b8/e7ad40f6ba82f3bb93fc6c24654b6f39a1021363107168fe7d57000d7706/xprof_nightly-2.21.1a20250709.tar.gz",
"platform": null,
"description": "# XProf (+ Tensorboard Profiler Plugin)\r\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.\r\n\r\nXProf offers a number of tools to analyse and visualize the\r\nperformance of your model across multiple devices. Some of the tools include:\r\n\r\n* **Overview**: A high-level overview of the performance of your model. This\r\n is an aggregated overview for your host and all devices. It includes:\r\n * Performance summary and breakdown of step times.\r\n * A graph of individual step times.\r\n * A table of the top 10 most expensive operations.\r\n* **Trace Viewer**: Displays a timeline of the execution of your model that shows:\r\n * The duration of each op.\r\n * Which part of the system (host or device) executed an op.\r\n * The communication between devices.\r\n* **Memory Profile Viewer**: Monitors the memory usage of your model.\r\n* **Graph Viewer**: A visualization of the graph structure of HLOs of your model.\r\n\r\n## Demo\r\nFirst time user? Come and check out this [Colab Demo](https://docs.jaxstack.ai/en/latest/JAX_for_LLM_pretraining.html).\r\n\r\n## Prerequisites\r\n\r\n* tensorboard-plugin-profile >= 2.19.0\r\n* (optional) TensorBoard >= 2.19.0\r\n\r\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).\r\nSome charts and tables may be missing if you run TensorBoard entirely offline on\r\nyour local machine, behind a corporate firewall, or in a datacenter.\r\n\r\nTo profile on a **single GPU** system, the following NVIDIA software must be\r\ninstalled on your system:\r\n\r\n1. NVIDIA GPU drivers and CUDA Toolkit:\r\n * CUDA 12.5 requires 525.60.13 and higher.\r\n2. Ensure that CUPTI 10.1 exists on the path.\r\n\r\n ```shell\r\n $ /sbin/ldconfig -N -v $(sed 's/:/ /g' <<< $LD_LIBRARY_PATH) | grep libcupti\r\n ```\r\n\r\n If you don't see `libcupti.so.12.5` on the path, prepend its installation\r\n directory to the $LD_LIBRARY_PATH environmental variable:\r\n\r\n ```shell\r\n $ export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH\r\n ```\r\n Run the ldconfig command above again to verify that the CUPTI 12.5 library is\r\n found.\r\n\r\n If this doesn't work, try:\r\n ```shell\r\n $ sudo apt-get install libcupti-dev\r\n ```\r\n\r\nTo profile a system with **multiple GPUs**, see this [guide](https://github.com/tensorflow/profiler/blob/master/docs/profile_multi_gpu.md) for details.\r\n\r\nTo profile multi-worker GPU configurations, profile individual workers\r\nindependently.\r\n\r\nTo profile cloud TPUs, you must have access to Google Cloud TPUs.\r\n\r\n## Quick Start\r\nIn order to get the latest version of the profiler plugin, you can install the\r\nnightly package.\r\n\r\nTo install the nightly version of profiler:\r\n\r\n```\r\n$ pip uninstall xprof\r\n$ pip install xprof-nightly\r\n```\r\n\r\nWithout TensorBoard:\r\n```\r\n$ xprof --logdir=profiler/demo --port=6006\r\n```\r\n\r\nWith TensorBoard:\r\n\r\n```\r\n$ tensorboard --logdir=profiler/demo\r\n```\r\nIf you are behind a corporate firewall, you may need to include the `--bind_all`\r\ntensorboard flag.\r\n\r\nGo to `localhost:6006/#profile` of your browser, you should now see the demo\r\noverview page show up.\r\nCongratulations! You're now ready to capture a profile.\r\n\r\n## Next Steps\r\n\r\n* JAX Profiling Guide: https://jax.readthedocs.io/en/latest/profiling.html\r\n* TensorFlow Profiling Guide: https://tensorflow.org/guide/profiler\r\n* Cloud TPU Profiling Guide: https://cloud.google.com/tpu/docs/cloud-tpu-tools\r\n* Colab Tutorial: https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras\r\n* Tensorflow Colab: https://www.tensorflow.org/tensorboard/tensorboard_profiling_keras\r\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": "XProf Profiler Plugin",
"version": "2.21.1a20250709",
"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": "dbf84a1340df2365cdf93f342af992a36d9738890be118cd50c5b2cac9318b4c",
"md5": "624c731d2d9bf620a0a4a84615dcf721",
"sha256": "43a80d50e9abcd55255b3c1259b09762011829f0c18571e9ee9a5b3e6a09fa86"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp310-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "624c731d2d9bf620a0a4a84615dcf721",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10913785,
"upload_time": "2025-07-09T09:19:13",
"upload_time_iso_8601": "2025-07-09T09:19:13.684979Z",
"url": "https://files.pythonhosted.org/packages/db/f8/4a1340df2365cdf93f342af992a36d9738890be118cd50c5b2cac9318b4c/xprof_nightly-2.21.1a20250709-cp310-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8e9208d842396db20649aaf648f96a8eb29f0694478491669f6f11024920b531",
"md5": "b91fbdbbcd48c4a9b0a55e1d74b02bba",
"sha256": "e5231f8a6761dfce23af285dcad48778cb78316806f5cc2afc88d9b12d7b8558"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp310-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "b91fbdbbcd48c4a9b0a55e1d74b02bba",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 12758046,
"upload_time": "2025-07-09T09:34:22",
"upload_time_iso_8601": "2025-07-09T09:34:22.740192Z",
"url": "https://files.pythonhosted.org/packages/8e/92/08d842396db20649aaf648f96a8eb29f0694478491669f6f11024920b531/xprof_nightly-2.21.1a20250709-cp310-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2ba00ac64789904d80350971792c7dbcf9af4f8bbfc0019d81119e0ce5c89af4",
"md5": "7fa01cb691f8d8da23f5a27cad50c6bc",
"sha256": "b9e8dea0f3e657b5b63abc5179da32c6ef7a278c224452a4ae90510e6012588c"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "7fa01cb691f8d8da23f5a27cad50c6bc",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10700123,
"upload_time": "2025-07-09T09:25:56",
"upload_time_iso_8601": "2025-07-09T09:25:56.740621Z",
"url": "https://files.pythonhosted.org/packages/2b/a0/0ac64789904d80350971792c7dbcf9af4f8bbfc0019d81119e0ce5c89af4/xprof_nightly-2.21.1a20250709-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a619ea5be5443cc4c73975856f579e5d90ab1d82a362ca262e93d9df47dd54ce",
"md5": "c7562557de740b49f143fd28e2401b3d",
"sha256": "f498dd8bf2b1ec7c37954f57961d7a047a624ef59ef47c96ab2d15d59d134499"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp311-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "c7562557de740b49f143fd28e2401b3d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10914975,
"upload_time": "2025-07-09T09:23:58",
"upload_time_iso_8601": "2025-07-09T09:23:58.860620Z",
"url": "https://files.pythonhosted.org/packages/a6/19/ea5be5443cc4c73975856f579e5d90ab1d82a362ca262e93d9df47dd54ce/xprof_nightly-2.21.1a20250709-cp311-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e152ef1411780f2c157bb8310f37e2743b8832a321f70cd4133fe8efb09abaf4",
"md5": "350c7fa4737a35d9bf5517fa6a0bd460",
"sha256": "ea83a113624d55aebb479867807dfa18fa6e99010c625b36b51523f2f0dd66cd"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp311-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "350c7fa4737a35d9bf5517fa6a0bd460",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 12759367,
"upload_time": "2025-07-09T09:34:27",
"upload_time_iso_8601": "2025-07-09T09:34:27.155416Z",
"url": "https://files.pythonhosted.org/packages/e1/52/ef1411780f2c157bb8310f37e2743b8832a321f70cd4133fe8efb09abaf4/xprof_nightly-2.21.1a20250709-cp311-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8f5d5073b9f054f6692062baa4115f7358892ed984888f2a27dbc0f1a648fc89",
"md5": "fe9bef1b2cec67903a842563b544f121",
"sha256": "d15fc537849e6b3607a29e46c41d0483c7810130d697dd26d7a5074a0fc77c2d"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp312-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "fe9bef1b2cec67903a842563b544f121",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10915143,
"upload_time": "2025-07-09T09:26:57",
"upload_time_iso_8601": "2025-07-09T09:26:57.003544Z",
"url": "https://files.pythonhosted.org/packages/8f/5d/5073b9f054f6692062baa4115f7358892ed984888f2a27dbc0f1a648fc89/xprof_nightly-2.21.1a20250709-cp312-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3d5d0ac99b1ee6407b1ed82a5dd4a3a7e7c33b76c3ea7a85c187f99a753079de",
"md5": "4bdcfa7a8e825b1852f9badf12d74d66",
"sha256": "66994d22b8d0a6fb2418c73aba66fd87e46c01e97305efd2cfd4463f8dad3adc"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp312-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4bdcfa7a8e825b1852f9badf12d74d66",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 12760353,
"upload_time": "2025-07-09T09:36:41",
"upload_time_iso_8601": "2025-07-09T09:36:41.069589Z",
"url": "https://files.pythonhosted.org/packages/3d/5d/0ac99b1ee6407b1ed82a5dd4a3a7e7c33b76c3ea7a85c187f99a753079de/xprof_nightly-2.21.1a20250709-cp312-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c4df41c78122681fbcc9d5a56fbc0b761f852e49c04da695c6d3c23a1bd2f141",
"md5": "f38ab7e7a0a8c9426d9a3fc8123a7c5f",
"sha256": "fbc16c13baa2248ec3259f5356bf89fe5fcf454dd3bde5e393b74887afa6aef6"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "f38ab7e7a0a8c9426d9a3fc8123a7c5f",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10700588,
"upload_time": "2025-07-09T09:14:02",
"upload_time_iso_8601": "2025-07-09T09:14:02.106582Z",
"url": "https://files.pythonhosted.org/packages/c4/df/41c78122681fbcc9d5a56fbc0b761f852e49c04da695c6d3c23a1bd2f141/xprof_nightly-2.21.1a20250709-cp312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b5e2d23b1368d643d0ea117d6e83eb7b05c59d764532fd56ce1df22623ee9c1a",
"md5": "6d0c74d8bfd1ea46a585ef0abd3d175c",
"sha256": "95c765dc6ef850cd0ed73af319fa76a0ad727cd3347a81cad5d768567fde4def"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp39-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "6d0c74d8bfd1ea46a585ef0abd3d175c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10913882,
"upload_time": "2025-07-09T09:15:59",
"upload_time_iso_8601": "2025-07-09T09:15:59.918612Z",
"url": "https://files.pythonhosted.org/packages/b5/e2/d23b1368d643d0ea117d6e83eb7b05c59d764532fd56ce1df22623ee9c1a/xprof_nightly-2.21.1a20250709-cp39-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "77ae07a6340d1f97eb85940d520b03362df2df9062efce770eafa09f6000b7f0",
"md5": "8a8c0ec27479e0384d58977f5971640a",
"sha256": "97ddf83d00e03649886198bb3b6baf179d2711026a31395451642026110f4ace"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp39-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "8a8c0ec27479e0384d58977f5971640a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 12757966,
"upload_time": "2025-07-09T09:34:49",
"upload_time_iso_8601": "2025-07-09T09:34:49.899179Z",
"url": "https://files.pythonhosted.org/packages/77/ae/07a6340d1f97eb85940d520b03362df2df9062efce770eafa09f6000b7f0/xprof_nightly-2.21.1a20250709-cp39-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "24e3a142a79618ca7983c2fc06d72e4e2070fa0e73c213964357646853ea1840",
"md5": "fd5e64ba9d14b505be0edb85ec60384c",
"sha256": "6a452174fc2375e83ae8553b9fc9697df5ff5afe4ac55d627e10bb5cf64fde24"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "fd5e64ba9d14b505be0edb85ec60384c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 10700126,
"upload_time": "2025-07-09T09:27:36",
"upload_time_iso_8601": "2025-07-09T09:27:36.458303Z",
"url": "https://files.pythonhosted.org/packages/24/e3/a142a79618ca7983c2fc06d72e4e2070fa0e73c213964357646853ea1840/xprof_nightly-2.21.1a20250709-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0ccad729f5d4151a2c55e98815d3575b5b50b15c76ccbcec4e7ecd9ade049240",
"md5": "48e1780f4f3823bd6cb1d214f57fcb80",
"sha256": "c210f1c49bd6bc088541d47d1ad4f2aeafbfda07c3c009ae7bedf98b7cd249ff"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709-py3-none-any.whl",
"has_sig": false,
"md5_digest": "48e1780f4f3823bd6cb1d214f57fcb80",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 6158705,
"upload_time": "2025-07-09T09:32:03",
"upload_time_iso_8601": "2025-07-09T09:32:03.985552Z",
"url": "https://files.pythonhosted.org/packages/0c/ca/d729f5d4151a2c55e98815d3575b5b50b15c76ccbcec4e7ecd9ade049240/xprof_nightly-2.21.1a20250709-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bfb8e7ad40f6ba82f3bb93fc6c24654b6f39a1021363107168fe7d57000d7706",
"md5": "bfa601f546822f0b7ddf965cec2335b1",
"sha256": "38b3ad9e0c1a50c2aa05e750b9446a5df9a3bf948da1508ad69d0c67a9410cab"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.1a20250709.tar.gz",
"has_sig": false,
"md5_digest": "bfa601f546822f0b7ddf965cec2335b1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 6067488,
"upload_time": "2025-07-09T09:32:05",
"upload_time_iso_8601": "2025-07-09T09:32:05.682471Z",
"url": "https://files.pythonhosted.org/packages/bf/b8/e7ad40f6ba82f3bb93fc6c24654b6f39a1021363107168fe7d57000d7706/xprof_nightly-2.21.1a20250709.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-09 09:32:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "openxla",
"github_project": "xprof",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "xprof-nightly"
}