# 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)\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-nightly"
},
"split_keywords": [
"jax",
"pytorch",
"xla",
"tensorflow",
"tensorboard",
"xprof-nightly",
"profile",
"plugin"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2557bd997c8e5b46d47c923696b5cb96fcc407f05ab0ac69497cf2fbe42aaa6f",
"md5": "4de8317234fc8ff514d62ce7ccf9d93f",
"sha256": "1cf67ee4d8eebac8519b867bf422dec50d10829ab33798fa9755a7f5e0f75537"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp310-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "4de8317234fc8ff514d62ce7ccf9d93f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3678,
"upload_time": "2025-09-12T09:28:49",
"upload_time_iso_8601": "2025-09-12T09:28:49.890437Z",
"url": "https://files.pythonhosted.org/packages/25/57/bd997c8e5b46d47c923696b5cb96fcc407f05ab0ac69497cf2fbe42aaa6f/tbp_nightly-2.21.6a20250912-cp310-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "35111fcdf4c006b28d4d820320949541980ec78333607c4398ae40b45130f161",
"md5": "902b1fba69822057959ecf67dcc55b91",
"sha256": "336cabeeec9a7cf198036a44f196732b9180c0dd54ba6905ddf424099a6f8e0c"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "902b1fba69822057959ecf67dcc55b91",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3702,
"upload_time": "2025-09-12T09:32:45",
"upload_time_iso_8601": "2025-09-12T09:32:45.759047Z",
"url": "https://files.pythonhosted.org/packages/35/11/1fcdf4c006b28d4d820320949541980ec78333607c4398ae40b45130f161/tbp_nightly-2.21.6a20250912-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "75a84667c51c25171d99cf6f0400b2766d16eb7a6a71b33b5276b65e2f6ed169",
"md5": "3251913c2db0947b462941539ddc01f4",
"sha256": "31ad326836127024d050745b09df1a978e62b1fc9fa3326d6f1fbdc69af72c5f"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp311-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "3251913c2db0947b462941539ddc01f4",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3679,
"upload_time": "2025-09-12T09:22:07",
"upload_time_iso_8601": "2025-09-12T09:22:07.928235Z",
"url": "https://files.pythonhosted.org/packages/75/a8/4667c51c25171d99cf6f0400b2766d16eb7a6a71b33b5276b65e2f6ed169/tbp_nightly-2.21.6a20250912-cp311-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2c0961bfd3fe3c6529ebb4866584cb0ac293ae49b8a7317aaca63451a886906e",
"md5": "3e7fbdf9e3819e70a00bbc1d2863f076",
"sha256": "1aacd46e6dc047bf59b6b25e92c7fa4b6f4e6f9c303892520cf3af5ac8fc28d9"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "3e7fbdf9e3819e70a00bbc1d2863f076",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3702,
"upload_time": "2025-09-12T09:34:32",
"upload_time_iso_8601": "2025-09-12T09:34:32.642264Z",
"url": "https://files.pythonhosted.org/packages/2c/09/61bfd3fe3c6529ebb4866584cb0ac293ae49b8a7317aaca63451a886906e/tbp_nightly-2.21.6a20250912-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3c37453484aebba6146bef8e5dbde66d93ee6b26e85ab22347a94ebdab88fcb4",
"md5": "5b1f6658d4c0d0c766b0cadac949bf9c",
"sha256": "8ec0e67ec8c5cb44c4b97c5d4ba3d6b455f9db6dc45099ce09422430e374b2a9"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp312-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "5b1f6658d4c0d0c766b0cadac949bf9c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3679,
"upload_time": "2025-09-12T09:29:17",
"upload_time_iso_8601": "2025-09-12T09:29:17.754903Z",
"url": "https://files.pythonhosted.org/packages/3c/37/453484aebba6146bef8e5dbde66d93ee6b26e85ab22347a94ebdab88fcb4/tbp_nightly-2.21.6a20250912-cp312-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f37b7670a8f24f0b095497786ba8bfc1b3c473835cfed1eb68d2dedd7d9008c8",
"md5": "ae134e3871ef9ccd8ce7f18489a61f80",
"sha256": "00c433ec5a1d7a23dccd8d019a94455e5a0befe57f4ebca1cb0163d2e962fc17"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "ae134e3871ef9ccd8ce7f18489a61f80",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3704,
"upload_time": "2025-09-12T09:31:50",
"upload_time_iso_8601": "2025-09-12T09:31:50.944855Z",
"url": "https://files.pythonhosted.org/packages/f3/7b/7670a8f24f0b095497786ba8bfc1b3c473835cfed1eb68d2dedd7d9008c8/tbp_nightly-2.21.6a20250912-cp312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "079236af2bd83ce8f8c769bc4b2ab752cadc0dd7b11b2e42d2a778f97f4f3a66",
"md5": "17c28cfbfffd28b129118daded5268fe",
"sha256": "451d845b62669bfe72fbb180dff8859c0be124c4312f84832113bc7e0d26fb6d"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp313-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "17c28cfbfffd28b129118daded5268fe",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3678,
"upload_time": "2025-09-12T09:28:48",
"upload_time_iso_8601": "2025-09-12T09:28:48.337365Z",
"url": "https://files.pythonhosted.org/packages/07/92/36af2bd83ce8f8c769bc4b2ab752cadc0dd7b11b2e42d2a778f97f4f3a66/tbp_nightly-2.21.6a20250912-cp313-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "89fb82d032fa77ab10011d75ad804a9fd65fa8da2bad32e012886f2d441c30c3",
"md5": "22b5d18393c2dd13cdd9fddcda15ba7a",
"sha256": "35c47e4384dde399e9fec1b162dc82adc5d9c96778976b48f7a160caf089436f"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp313-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "22b5d18393c2dd13cdd9fddcda15ba7a",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3704,
"upload_time": "2025-09-12T09:33:45",
"upload_time_iso_8601": "2025-09-12T09:33:45.108754Z",
"url": "https://files.pythonhosted.org/packages/89/fb/82d032fa77ab10011d75ad804a9fd65fa8da2bad32e012886f2d441c30c3/tbp_nightly-2.21.6a20250912-cp313-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4812943b2634a498f755e9763c6fa11e0ebe9da4838ebc5f1bef6056dd6dedc8",
"md5": "95409befec971cbd4f2562a2e07ce91d",
"sha256": "fe389126dabddee13aa2353253155c0a3a421fe00da691e6871cf19a9ca0daaf"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp39-none-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "95409befec971cbd4f2562a2e07ce91d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3678,
"upload_time": "2025-09-12T09:16:52",
"upload_time_iso_8601": "2025-09-12T09:16:52.546898Z",
"url": "https://files.pythonhosted.org/packages/48/12/943b2634a498f755e9763c6fa11e0ebe9da4838ebc5f1bef6056dd6dedc8/tbp_nightly-2.21.6a20250912-cp39-none-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c60bc8bea12b46b6d70dd28b7a52f1f77dd0e0eec3544e51cc0588198e93c557",
"md5": "8bc3b4d61c744d179f6db6885240d87b",
"sha256": "b576e147c112d4938932009131ff3ab537cca860c39756bc12861eee9032e3dd"
},
"downloads": -1,
"filename": "tbp_nightly-2.21.6a20250912-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "8bc3b4d61c744d179f6db6885240d87b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "!=3.0.*,!=3.1.*,>=2.7",
"size": 3702,
"upload_time": "2025-09-12T09:34:18",
"upload_time_iso_8601": "2025-09-12T09:34:18.370160Z",
"url": "https://files.pythonhosted.org/packages/c6/0b/c8bea12b46b6d70dd28b7a52f1f77dd0e0eec3544e51cc0588198e93c557/tbp_nightly-2.21.6a20250912-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-12 09:28:49",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "openxla",
"github_project": "xprof-nightly",
"github_not_found": true,
"lcname": "tbp-nightly"
}