> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-evaltables.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# TensorBoard

> Sync TensorBoard logs to W&B for cloud-hosted visualization, sharing, and centralized analysis alongside system metrics.

export const ColabLink = ({url}) => <a href={url} target="_blank" rel="noopener noreferrer" className="colab-link">
    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01.21.03zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z" />
    </svg>
    Try in Colab
  </a>;

<ColabLink url="https://colab.research.google.com/github/wandb/examples/blob/master/colabs/tensorboard/TensorBoard_and_Weights_and_Biases.ipynb" />

<Note>
  W\&B supports embedded TensorBoard for W\&B Multi-tenant Cloud.
</Note>

This page shows how to sync TensorBoard logs to W\&B so you can upload your TensorBoard logs to the cloud, share your results among colleagues and classmates, and keep your analysis in one centralized location. Use this integration if you already log to TensorBoard and want cloud-hosted visualization, sharing, and side-by-side comparison with W\&B system metrics.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-evaltables/hsXNuiRRG1GLq0zd/images/integrations/tensorboard_oneline_code.webp?fit=max&auto=format&n=hsXNuiRRG1GLq0zd&q=85&s=ece25a9f8564ea006db0b0f79df3d712" alt="TensorBoard integration code" width="1510" height="1592" data-path="images/integrations/tensorboard_oneline_code.webp" />
</Frame>

## Get started

To enable TensorBoard syncing, set `sync_tensorboard=True` when you initialize a W\&B run. W\&B automatically uploads any TensorBoard events your training code emits.

```python theme={null}
import wandb

# Start a wandb run with `sync_tensorboard=True`
with wandb.init(project="my-project", sync_tensorboard=True) as run:
    # Your training code using TensorBoard
    ...

```

Review an [example TensorBoard integration run](https://wandb.ai/rymc/simple-tensorboard-example/runs/oab614zf/tensorboard).

After your run finishes, you can access your TensorBoard event files in W\&B and visualize your metrics in native W\&B charts. W\&B also captures additional information such as system CPU or GPU utilization, the `git` state, and the terminal command the run used.

<Note>
  W\&B supports TensorBoard with all versions of TensorFlow. W\&B also supports TensorBoard 1.14 and later with PyTorch as well as TensorBoardX.
</Note>

## Frequently asked questions

The following sections answer common questions about customizing the TensorBoard integration, including logging extra metrics, configuring the patch, syncing historical runs, and using notebook environments.

### How can I log metrics to W\&B that aren't logged to TensorBoard?

If you need to log additional custom metrics that aren't logged to TensorBoard, you can call `wandb.Run.log()` in your code: `run.log({"custom": 0.8})`.

Setting the step argument in `run.log()` is turned off when syncing TensorBoard. If you'd like to set a different step count, you can log the metrics with a step metric as:

`run.log({"custom": 0.8, "global_step": global_step})`

### How do I configure TensorBoard when I'm using it with `wandb`?

If you want more control over how W\&B patches TensorBoard, call `wandb.tensorboard.patch()` instead of passing `sync_tensorboard=True` to `wandb.init()`.

```python theme={null}
import wandb

wandb.tensorboard.patch(root_logdir="<logging_directory>")
run = wandb.init()

# Finish the wandb run to upload the tensorboard logs to W&B (if running in Notebook)
run.finish()
```

To patch vanilla TensorBoard, pass `tensorboard_x=False` to this method. If you're using TensorBoard later than 1.14 with PyTorch, pass `pytorch=True` to patch it. Both of these options have sensible defaults depending on what versions of these libraries you've imported.

By default, W\&B also syncs the `tfevents` files and any `.pbtxt` files. This lets W\&B launch a TensorBoard instance on your behalf. You see a [TensorBoard tab](https://www.wandb.com/articles/hosted-tensorboard) on the run page. To turn off this behavior, pass `save=False` to `wandb.tensorboard.patch`.

```python theme={null}
import wandb

run = wandb.init()
wandb.tensorboard.patch(save=False, tensorboard_x=True)

# If running in a notebook, finish the wandb run to upload the tensorboard logs to W&B
run.finish()
```

<Warning>
  You must call either `wandb.init()` or `wandb.tensorboard.patch()` before calling `tf.summary.create_file_writer()` or constructing a `SummaryWriter` from `torch.utils.tensorboard`.
</Warning>

### How do I sync historical TensorBoard runs?

If you have existing `tfevents` files stored locally and you would like to import them into W\&B, you can run `wandb sync log_dir`, where `log_dir` is a local directory containing the `tfevents` files.

### How do I use Google Colab or Jupyter with TensorBoard?

If you run your code in a Jupyter or Colab notebook, make sure to call `wandb.Run.finish()` at the end of your training. This finishes the `wandb` run and uploads the TensorBoard logs to W\&B so they can be visualized. This isn't necessary when you run a `.py` script, because `wandb` finishes automatically when a script finishes.

To run shell commands in a notebook environment, you must prepend a `!`, as in `!wandb sync directoryname`.

### How do I use PyTorch with TensorBoard?

If you use PyTorch's TensorBoard integration, you may need to manually upload the PyTorch Profiler JSON file.

```python theme={null}
with wandb.init(project="my-project", sync_tensorboard=True) as run:
    run.save(glob.glob(f"runs/*.pt.trace.json")[0], base_path=f"runs")
```

### Can I sync tfevents files stored in the cloud?

`wandb` 0.20.0 and later supports syncing `tfevents` files stored in S3, GCS, or Azure. `wandb` uses the default credentials for each cloud provider. The following table lists the command to configure credentials and the expected logging directory format for each provider:

| Cloud provider | Credentials                             | Logging directory format              |
| -------------- | --------------------------------------- | ------------------------------------- |
| S3             | `aws configure`                         | `s3://bucket/path/to/logs`            |
| GCS            | `gcloud auth application-default login` | `gs://bucket/path/to/logs`            |
| Azure          | `az login`[^1]                          | `az://account/container/path/to/logs` |

[^1]: You must also set the `AZURE_STORAGE_ACCOUNT` and `AZURE_STORAGE_KEY` environment variables.
