# 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",
"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": null,
"platform": null,
"description": "# XProf (+ Tensorboard Profiler Plugin)\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.\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 * High level details of the run environment.\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\nTo learn more about the various XProf tools, check out the [XProf documentation](https://openxla.org/xprof)\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## Quick Start\n\n### Prerequisites\n\n* xprof >= 2.20.0\n* (optional) TensorBoard >= 2.20.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 XProf entirely offline on\nyour local machine, behind a corporate firewall, or in a datacenter.\n\nIf you use Google Cloud to run your workloads, we recommend the\n[xprofiler tool](https://github.com/AI-Hypercomputer/cloud-diagnostics-xprof).\nIt provides a streamlined profile collection and viewing experience using VMs\nrunning XProf.\n\n### Installation\n\nTo get the most recent release version of XProf, install it via pip:\n\n```\n$ pip install xprof\n```\n\nWithout TensorBoard:\n\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## Nightlies\n\nEvery night, a nightly version of the package is released under the name of\n`xprof-nightly`. This package contains the latest changes made by the XProf\ndevelopers.\n\nTo install the nightly version of profiler:\n\n```\n$ pip uninstall xprof tensorboard-plugin-profile\n$ pip install xprof-nightly\n```\n\n## Next Steps\n\n* [JAX Profiling Guide](https://jax.readthedocs.io/en/latest/profiling.html#xprof-tensorboard-profiling)\n* [PyTorch/XLA Profiling Guide](https://cloud.google.com/tpu/docs/pytorch-xla-performance-profiling-tpu-vm)\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.21.6a20250912",
"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": "d705b03daeb4b4a26047d22548ba79e70458d1cb71f1d6023972de5dd428721b",
"md5": "b7f22a85f6dec72e46b3aac98d559195",
"sha256": "47849a061f74e2249d3ea59812b9f2dfa4a85e105aa1a65edbde292dd2e61379"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp310-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "b7f22a85f6dec72e46b3aac98d559195",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13514186,
"upload_time": "2025-09-12T09:28:46",
"upload_time_iso_8601": "2025-09-12T09:28:46.298805Z",
"url": "https://files.pythonhosted.org/packages/d7/05/b03daeb4b4a26047d22548ba79e70458d1cb71f1d6023972de5dd428721b/xprof_nightly-2.21.6a20250912-cp310-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fde53aa9b5456ee5f4eecaeedbe986aa700b244b177726d9be5c77af56907177",
"md5": "b07039db3fc22eb92bac370a2200da71",
"sha256": "b7598e1433a80118acfe691c014069983d472dd52662242ebe04456bf60f6d06"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "b07039db3fc22eb92bac370a2200da71",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13412662,
"upload_time": "2025-09-12T09:32:43",
"upload_time_iso_8601": "2025-09-12T09:32:43.171853Z",
"url": "https://files.pythonhosted.org/packages/fd/e5/3aa9b5456ee5f4eecaeedbe986aa700b244b177726d9be5c77af56907177/xprof_nightly-2.21.6a20250912-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e17154537962251d30e9c359824e511d187e982af3c4591a01d4ba1f9320fcba",
"md5": "7c4e836323c627341d7bfedea8bfb3f7",
"sha256": "1543d1e3b3e43a7337997331a600b20a863b73d641b1fd8ef4932109c0dee3bb"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp311-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "7c4e836323c627341d7bfedea8bfb3f7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13514891,
"upload_time": "2025-09-12T09:22:04",
"upload_time_iso_8601": "2025-09-12T09:22:04.789154Z",
"url": "https://files.pythonhosted.org/packages/e1/71/54537962251d30e9c359824e511d187e982af3c4591a01d4ba1f9320fcba/xprof_nightly-2.21.6a20250912-cp311-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "04d28dbd4c188aa48402ab3b9fbdf6e4ad84cbce4c8181b0e04b6e94785e7f06",
"md5": "9bbd16f0f5e6102292356028a6549c62",
"sha256": "925f3da03c5e26e89f4c28e714a381f399e64e6e554cac2dd08e07b4b253b19e"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "9bbd16f0f5e6102292356028a6549c62",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13413894,
"upload_time": "2025-09-12T09:34:30",
"upload_time_iso_8601": "2025-09-12T09:34:30.326072Z",
"url": "https://files.pythonhosted.org/packages/04/d2/8dbd4c188aa48402ab3b9fbdf6e4ad84cbce4c8181b0e04b6e94785e7f06/xprof_nightly-2.21.6a20250912-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fbae8e05d96fae8f0ab2e57143a1dca4050eb3349227a22cf44d27c3271b6ee2",
"md5": "3807d1a59edf3815cf5687b0b35b32e3",
"sha256": "becf7f22f9a631a2bf2a1e9f54a3abfddaeb8f24d3f1a9273121a43c56b1b638"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp312-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "3807d1a59edf3815cf5687b0b35b32e3",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13515041,
"upload_time": "2025-09-12T09:29:15",
"upload_time_iso_8601": "2025-09-12T09:29:15.705331Z",
"url": "https://files.pythonhosted.org/packages/fb/ae/8e05d96fae8f0ab2e57143a1dca4050eb3349227a22cf44d27c3271b6ee2/xprof_nightly-2.21.6a20250912-cp312-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4000bf944f092aa8be9d16e858e40bcdc07450663bdb9a225d79c7d36fd343f2",
"md5": "840ee2ac3b7907b12a1f0fab8859ea22",
"sha256": "af1ae3f33a542259d5c3f3df852130c02a3f9ea0839327991b7c74b440818b8c"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "840ee2ac3b7907b12a1f0fab8859ea22",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13413290,
"upload_time": "2025-09-12T09:31:47",
"upload_time_iso_8601": "2025-09-12T09:31:47.874861Z",
"url": "https://files.pythonhosted.org/packages/40/00/bf944f092aa8be9d16e858e40bcdc07450663bdb9a225d79c7d36fd343f2/xprof_nightly-2.21.6a20250912-cp312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5808c02190860f643ca31e71b08b312b45382295f06ecf4ef94f1afbe957052a",
"md5": "b3b302043ad58144de32997271aa9a5d",
"sha256": "ae02f7d2a35ae82007659ed94fdc87d5d785758345248e2548215f50eed5f4b0"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp313-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "b3b302043ad58144de32997271aa9a5d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13514869,
"upload_time": "2025-09-12T09:28:46",
"upload_time_iso_8601": "2025-09-12T09:28:46.241818Z",
"url": "https://files.pythonhosted.org/packages/58/08/c02190860f643ca31e71b08b312b45382295f06ecf4ef94f1afbe957052a/xprof_nightly-2.21.6a20250912-cp313-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "aefdcd07989ae63c5d270b28c018fee05617dbbc367516e09c5a0652938b8a11",
"md5": "a198236995bd646b9c99c86d24d643e5",
"sha256": "6b733a59ecf80bac2ab515a2c13fed41fdbf9836f580f14e5fb9cc6c81d2565e"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp313-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "a198236995bd646b9c99c86d24d643e5",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13413311,
"upload_time": "2025-09-12T09:33:42",
"upload_time_iso_8601": "2025-09-12T09:33:42.474161Z",
"url": "https://files.pythonhosted.org/packages/ae/fd/cd07989ae63c5d270b28c018fee05617dbbc367516e09c5a0652938b8a11/xprof_nightly-2.21.6a20250912-cp313-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a53f0e3b75b49944be6bb2a4e373ce1cc4de27d48d3bb48c3e89b873f3d76f19",
"md5": "a462ec2a1fbefd0c1d473a46f4b6043c",
"sha256": "d1518a46a84aa24be980333123eb3bada33fc04632a356e0e6573a7cc327727b"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp39-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "a462ec2a1fbefd0c1d473a46f4b6043c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13514125,
"upload_time": "2025-09-12T09:16:49",
"upload_time_iso_8601": "2025-09-12T09:16:49.449218Z",
"url": "https://files.pythonhosted.org/packages/a5/3f/0e3b75b49944be6bb2a4e373ce1cc4de27d48d3bb48c3e89b873f3d76f19/xprof_nightly-2.21.6a20250912-cp39-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0ef5a0b2ed0b5c1eb6be889314edb51f4d5994b362abb160c00daf5dd49f45e0",
"md5": "027c4fc57f6e542f90f3b9b8d8be2d6e",
"sha256": "85d0e5ab2e5c94359ca8246a15181a9242838ff21407aa08e72d65032584212e"
},
"downloads": -1,
"filename": "xprof_nightly-2.21.6a20250912-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "027c4fc57f6e542f90f3b9b8d8be2d6e",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 13412647,
"upload_time": "2025-09-12T09:34:15",
"upload_time_iso_8601": "2025-09-12T09:34:15.958350Z",
"url": "https://files.pythonhosted.org/packages/0e/f5/a0b2ed0b5c1eb6be889314edb51f4d5994b362abb160c00daf5dd49f45e0/xprof_nightly-2.21.6a20250912-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-12 09:28:46",
"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"
}