# XProf (+ Tensorboard Profiler Plugin)
XProf includes a suite of profiling 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 machine learning 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.
* High level details of the run environment.
* **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.
To learn more about the various XProf tools, check out the [XProf documentation](https://openxla.org/xprof)
## Demo
First time user? Come and check out this [Colab Demo](https://docs.jaxstack.ai/en/latest/JAX_for_LLM_pretraining.html).
## Quick Start
### Prerequisites
* xprof >= 2.20.0
* (optional) TensorBoard >= 2.20.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 XProf entirely offline on
your local machine, behind a corporate firewall, or in a datacenter.
If you use Google Cloud to run your workloads, we recommend the
[xprofiler tool](https://github.com/AI-Hypercomputer/cloud-diagnostics-xprof).
It provides a streamlined profile collection and viewing experience using VMs
running XProf.
### Installation
To get the most recent release version of XProf, install it via pip:
```
$ pip install xprof
```
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.
## Nightlies
Every night, a nightly version of the package is released under the name of
`xprof-nightly`. This package contains the latest changes made by the XProf
developers.
To install the nightly version of profiler:
```
$ pip uninstall xprof tensorboard-plugin-profile
$ pip install xprof-nightly
```
## Next Steps
* [JAX Profiling Guide](https://jax.readthedocs.io/en/latest/profiling.html#xprof-tensorboard-profiling)
* [PyTorch/XLA Profiling Guide](https://cloud.google.com/tpu/docs/pytorch-xla-performance-profiling-tpu-vm)
* [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-nightly",
"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-nightly profile plugin",
"author": "Google Inc.",
"author_email": "packages@tensorflow.org",
"download_url": null,
"platform": null,
"description": "# XProf (+ Tensorboard Profiler Plugin)\r\nXProf includes a suite of profiling 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 machine learning 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 * High level details of the run environment.\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\nTo learn more about the various XProf tools, check out the [XProf documentation](https://openxla.org/xprof)\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## Quick Start\r\n\r\n### Prerequisites\r\n\r\n* xprof >= 2.20.0\r\n* (optional) TensorBoard >= 2.20.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 XProf entirely offline on\r\nyour local machine, behind a corporate firewall, or in a datacenter.\r\n\r\nIf you use Google Cloud to run your workloads, we recommend the\r\n[xprofiler tool](https://github.com/AI-Hypercomputer/cloud-diagnostics-xprof).\r\nIt provides a streamlined profile collection and viewing experience using VMs\r\nrunning XProf.\r\n\r\n### Installation\r\n\r\nTo get the most recent release version of XProf, install it via pip:\r\n\r\n```\r\n$ pip install xprof\r\n```\r\n\r\nWithout TensorBoard:\r\n\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## Nightlies\r\n\r\nEvery night, a nightly version of the package is released under the name of\r\n`xprof-nightly`. This package contains the latest changes made by the XProf\r\ndevelopers.\r\n\r\nTo install the nightly version of profiler:\r\n\r\n```\r\n$ pip uninstall xprof tensorboard-plugin-profile\r\n$ pip install xprof-nightly\r\n```\r\n\r\n## Next Steps\r\n\r\n* [JAX Profiling Guide](https://jax.readthedocs.io/en/latest/profiling.html#xprof-tensorboard-profiling)\r\n* [PyTorch/XLA Profiling Guide](https://cloud.google.com/tpu/docs/pytorch-xla-performance-profiling-tpu-vm)\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.6a20250917",
"project_urls": {
"Homepage": "https://github.com/openxla/xprof-nightly"
},
"split_keywords": [
"jax",
"pytorch",
"xla",
"tensorflow",
"tensorboard",
"xprof-nightly",
"profile",
"plugin"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "4cefbd61907a0282ef344140c733af6f93b0a2f41d8a764d716c1c20bd0ba079",
"md5": "1593f04a9323ce3dfc462587aa9bd068",
"sha256": "0898afeaac284e910cf475ab72ab613146680a12d9dad8b2b0968bfc0f566e9e"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp310-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "1593f04a9323ce3dfc462587aa9bd068",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3679,
"upload_time": "2025-09-17T09:23:50",
"upload_time_iso_8601": "2025-09-17T09:23:50.325623Z",
"url": "https://files.pythonhosted.org/packages/4c/ef/bd61907a0282ef344140c733af6f93b0a2f41d8a764d716c1c20bd0ba079/tbp_nightly-2.21.6a20250917-cp310-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3c6fa743a7a29364ef78a45775bdfc3cb03488d7db974cc74819547710781504",
"md5": "66bab29ff3bbf36cbc837df4f13f575d",
"sha256": "b05c39a2b91ab77af5acb35813e97dc6610884df24acf34239ecd1d53594ecc5"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "66bab29ff3bbf36cbc837df4f13f575d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3703,
"upload_time": "2025-09-17T09:35:17",
"upload_time_iso_8601": "2025-09-17T09:35:17.931809Z",
"url": "https://files.pythonhosted.org/packages/3c/6f/a743a7a29364ef78a45775bdfc3cb03488d7db974cc74819547710781504/tbp_nightly-2.21.6a20250917-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2cb519b10be4dfa47be8d7c581412758cb0495f701689872390954838e837496",
"md5": "6bfb06abae0be6212d4c1c7ed03499cf",
"sha256": "5e151b3cea79558df928107e49c78a5e61c015db565209501a0707299b36b9f4"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp311-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "6bfb06abae0be6212d4c1c7ed03499cf",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3680,
"upload_time": "2025-09-17T09:23:40",
"upload_time_iso_8601": "2025-09-17T09:23:40.595616Z",
"url": "https://files.pythonhosted.org/packages/2c/b5/19b10be4dfa47be8d7c581412758cb0495f701689872390954838e837496/tbp_nightly-2.21.6a20250917-cp311-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f8f90fdc34c5ac9571ec1551f8b222b2d9f0b936d94c1cf5f62286f843a9f254",
"md5": "428a2d577042e6080be21f71ce5f1405",
"sha256": "d597082f0979dfb604d2d8a64be15468463147a784ed1a7129f4d078739573d0"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "428a2d577042e6080be21f71ce5f1405",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3703,
"upload_time": "2025-09-17T09:31:48",
"upload_time_iso_8601": "2025-09-17T09:31:48.018419Z",
"url": "https://files.pythonhosted.org/packages/f8/f9/0fdc34c5ac9571ec1551f8b222b2d9f0b936d94c1cf5f62286f843a9f254/tbp_nightly-2.21.6a20250917-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f405979ea35843dcbbbd905dcd0bf2a4829f739777d79c082dc83353b665aa2a",
"md5": "ff9a663eef475a4fea4a11b1fb25a88b",
"sha256": "f0db39f552eab3be0480b68fd319d281fbde4f1087bcf6f38f33cb4aa19c2507"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp312-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "ff9a663eef475a4fea4a11b1fb25a88b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3680,
"upload_time": "2025-09-17T09:21:54",
"upload_time_iso_8601": "2025-09-17T09:21:54.130906Z",
"url": "https://files.pythonhosted.org/packages/f4/05/979ea35843dcbbbd905dcd0bf2a4829f739777d79c082dc83353b665aa2a/tbp_nightly-2.21.6a20250917-cp312-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "faaa3dde4e44001cf3e150d092b45396647a04c7ba8d6e422d310e1be9f24a68",
"md5": "a1f8ffaf18b2675771812257dc614620",
"sha256": "ac8ab32c78a4d841684e7e6d603f5f9adae2620bc374bbc816eab159be337630"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "a1f8ffaf18b2675771812257dc614620",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3705,
"upload_time": "2025-09-17T09:41:37",
"upload_time_iso_8601": "2025-09-17T09:41:37.064867Z",
"url": "https://files.pythonhosted.org/packages/fa/aa/3dde4e44001cf3e150d092b45396647a04c7ba8d6e422d310e1be9f24a68/tbp_nightly-2.21.6a20250917-cp312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7f8fac5efafcf51200ca3ca30190a1d746da7e1f2233e96e6c91ca2ad7f49bdd",
"md5": "cd978328d03801c26fc02c083b285b2f",
"sha256": "ecdc9b0e845bc6e3320a2819272a43a2995a09f645d65f70c646a2f2ee5ccb1c"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp313-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "cd978328d03801c26fc02c083b285b2f",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3680,
"upload_time": "2025-09-17T09:24:44",
"upload_time_iso_8601": "2025-09-17T09:24:44.069285Z",
"url": "https://files.pythonhosted.org/packages/7f/8f/ac5efafcf51200ca3ca30190a1d746da7e1f2233e96e6c91ca2ad7f49bdd/tbp_nightly-2.21.6a20250917-cp313-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c5be7a27bee65889de0a7c1ff64c61a6eab3365dd1b936b4ac7b9979ecffad25",
"md5": "bf4ce97ea2f71019ab8f0e1b2d154f0a",
"sha256": "1a8c2e9d32cb02e9a9ac359ac88be294642c14b0ad1f6cd3d6018b523b32653e"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp313-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "bf4ce97ea2f71019ab8f0e1b2d154f0a",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3704,
"upload_time": "2025-09-17T09:20:34",
"upload_time_iso_8601": "2025-09-17T09:20:34.782454Z",
"url": "https://files.pythonhosted.org/packages/c5/be/7a27bee65889de0a7c1ff64c61a6eab3365dd1b936b4ac7b9979ecffad25/tbp_nightly-2.21.6a20250917-cp313-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f61dd21bd9ddbe262fd6f6fdaaea2d471af1059e8d7086f9d9d27475589ea395",
"md5": "88a1c3efbdf1166be1806063cdffb528",
"sha256": "53663693dd131fd475d82744189d54a97a204b2d3c424f6b116a53aa8ba2ad80"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp39-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "88a1c3efbdf1166be1806063cdffb528",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3680,
"upload_time": "2025-09-17T09:29:26",
"upload_time_iso_8601": "2025-09-17T09:29:26.767063Z",
"url": "https://files.pythonhosted.org/packages/f6/1d/d21bd9ddbe262fd6f6fdaaea2d471af1059e8d7086f9d9d27475589ea395/tbp_nightly-2.21.6a20250917-cp39-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "52e4a1219a1210e369cb133d694cfd18f631fc8f12a57daec7ed26f906790f5e",
"md5": "dfa9534d7e6c0637d00e9748d5addf26",
"sha256": "89f15e27f20f3a2f9d4523d85015bb63aa252495e4400cc14bc8dd21ab8533e6"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250917-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "dfa9534d7e6c0637d00e9748d5addf26",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3704,
"upload_time": "2025-09-17T09:40:45",
"upload_time_iso_8601": "2025-09-17T09:40:45.868806Z",
"url": "https://files.pythonhosted.org/packages/52/e4/a1219a1210e369cb133d694cfd18f631fc8f12a57daec7ed26f906790f5e/tbp_nightly-2.21.6a20250917-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-17 09:23:50",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "openxla",
"github_project": "xprof-nightly",
"github_not_found": true,
"lcname": "tbp-nightly"
}