
# 在JupyterLab中使用TensorBoard可视化作业
在JupyterLab中使用TensorBoard可视化作业
CloudRobo支持在开发环境中开启TensorBoard可视化工具。TensorBoard是TensorFlow的可视化工具包，提供机器学习实验所需的可视化功能和工具。TensorBoard能够有效地展示训练过程中的计算图、各种指标随时间的变化趋势以及训练中使用到的数据信息，相关概念请参考[TensorBoard官网](https://www.tensorflow.org/tensorboard?hl=zh-cn)。
TensorBoard可视化工具当前仅支持在PyTorch和TensorFlow引擎中使用，不支持在MindSpore引擎或其他AI引擎中使用。
#### 前提条件
为了保证训练结果中输出Summary文件，在编写训练脚本时，您需要在脚本中添加收集Summary相关代码。
TensorFlow引擎的训练脚本中添加Summary代码，具体方式请参见[TensorFlow官方网站](https://www.tensorflow.org/tensorboard/get_started)。
PyTorch引擎的训练脚本中添加Summary代码，具体方式请参见[PyTorch官方网站](https://docs.pytorch.org/docs/2.13/tensorboard.html)。
#### 注意事项
- 运行中的可视化作业不单独计费，当停止Notebook实例时，计费停止。
- Summary文件数据如果存放在OBS中，由OBS单独收费。任务完成后请及时停止Notebook实例，清理OBS数据，避免产生不必要的费用。
 
#### 在开发环境中创建TensorBoard可视化作业流程
[步骤一：创建开发环境并在线打开]
[步骤二：生成Summary数据]
[步骤三：上传Summary数据]
[步骤四：启动TensorBoard]
[步骤五：查看看板中的可视化数据]
 #### 步骤一：创建开发环境并在线打开
1. [登录CloudRobo控制台](https://console.huaweicloud.com/cloudrobo/)。
2. 在左侧导航栏中单击"模型开发 \> Notebook"。
3. 在"Notebook"页面右上角，单击"创建Notebook"，创建TensorFlow或者PyTorch镜像的开发环境实例。具体操作，请参见[创建Notebook](https://support.huaweicloud.com/usermanual-cloudrobo/cloudrobo_02_0029.html)。
4. 创建成功后，单击开发环境实例"操作"列的"接入环境"，在"接入方式"对话框，单击JupyterLab接入右侧的"接入"，在线打开运行中的开发环境。
 
 #### 步骤二：生成Summary数据
在开发环境中使用TensorBoard可视化功能，需要生成Summary数据。以下是一个简单的线性回归训练示例，展示如何生成和记录Summary数据。如果需要了解如何生成Summary数据，请参考[PyTorch官方文档](https://pytorch.org/docs/stable/tensorboard.html)。
```
import torch
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()
x = torch.arange(-5, 5, 0.1).view(-1, 1)
y = -5 * x + 0.1 * torch.randn(x.size())
model = torch.nn.Linear(1, 1)
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr = 0.1)
def train_model(iter):
    for epoch in range(iter):
        y1 = model(x)
        loss = criterion(y1, y)
        writer.add_scalar("Loss/train", loss, epoch)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
train_model(10)
writer.flush()
```
 #### 步骤三：上传Summary数据
在Notebook左侧文件导航栏下新建目录，并通过拖拽的方式将本地Summary数据上传到Notebook该新建目录中，具体请参见[上传本地文件至JupyterLab](https://support.huaweicloud.com/usermanual-cloudrobo/cloudrobo_02_0089.html)。
 #### 步骤四：启动TensorBoard
1. 在开发环境的JupyterLab中打开ModelArts Launcher页面，然后单击TensorBoard图标。
   图1打开ModelArts Launcher界面   
   ![](https://support.huaweicloud.com/usermanual-cloudrobo/zh-cn_image_0000002743931541.png)
   图2在Launcher中打开TensorBoard   
   ![](https://support.huaweicloud.com/usermanual-cloudrobo/zh-cn_image_0000002744091517.png "点击放大") 
2. 首次单击TensorBoard会进入到一个默认的初始化面板，可以从该面板创建TensorBoard实例。 在Log Dir中填写可视化数据所在的目录，该路径为/home/ma-user/work下的相对路径，填写好后单击右侧"Create TensorBoard"按钮，如[图2 打开Launcher界面]所示。非首次进入则会直接进入到第一个活跃的TensorBoard实例。
   图3TensorBoard插件界面   
   ![](https://support.huaweicloud.com/usermanual-cloudrobo/zh-cn_image_0000002714172646.png "点击放大")
   参数介绍如下：
   - Log Dir：默认是单击TensorBoard时当前侧边栏的目录，也可以手动填写对应目录，这里建议目录尽可能细化，目录内容比较少的话会提高初始化速度。
   
   - Multi LogDir：支持输入多个目录参数，用逗号分隔，对应原生TensorBoard的--logdir_spec参数。TensorBoard官方对该功能支持不完善，不推荐使用。
   
   - Reload Interval：TensorBoard多久对相应目录进行一次重新扫描，这个选项是默认是关闭的，日常使用选择手动Reload即可（设置Reload Interval之后，TensorBoard后端持续扫描目录会对JupyterLab的稳定性和文件系统都产生一定的影响）。
   
   
   关于该插件的更多功能介绍请参考[JupyterLab TensorBoard Pro官网](https://github.com/HFAiLab/jupyterlab_tensorboard_pro/blob/v4.x/README.zh-cn.md)。
   
3. 创建好后的TensorBoard可视化展示面板如[图4]所示（TensorBoard版本不同呈现可视化界面有差异，请以实际界面为准）。
   - 单击[图4]中数字1所示按钮，可以在单独的浏览器页签展示可视化面板。
   
   - [图4]数字2中提供了实例管理相关功能，包括重启TensorBoard实例（Reload），关闭TensorBoard实例（Destroy），复制一个前端可视化面板（Duplicate），创建一个新的TensorBoard实例（New）。
   
   - [图4]数字3处，可以使用JupyterLab的Kernel管理面板管理实例，提供跳转至对应实例和删除等功能。
   
   
   图4创建后的可视化界面示例   
   ![](https://support.huaweicloud.com/usermanual-cloudrobo/zh-cn_image_0000002744091515.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-cloudrobo/public_sys-resources/note_3.0-zh-cn.png)
   - 不建议打开Reload Interval，避免后台频繁刷新导致Notebook实例产生卡顿甚至无法正常使用，需要查看新数据时单击右上角刷新按钮即可。
   
   - 不建议使用New按钮创建多个TensorBoard实例，该操作可能会导致CPU/Memory占用过大，导致Notebook实例卡顿甚至无法正常使用等问题。当需要可视化新的目录时，可以先将当前TensorBoard实例关闭，再指定新目录创建一个新的TensorBoard实例。
     
 
 #### 步骤五：查看看板中的可视化数据
可视化看板是TensorBoard的可视化组件的重要组成部分，看板标签包含：标量可视化、图像可视化和计算图可视化等。
更多功能介绍和用法请参见[TensorBoard官网资料](https://www.tensorflow.org/tensorboard/get_started)。
![](https://support.huaweicloud.com/usermanual-cloudrobo/public_sys-resources/note_3.0-zh-cn.png)
1. 由于Chrome等浏览器的安全限制导致无法从iframe下载数据，当前不支持可视化数据的Download data按钮。 ![](https://support.huaweicloud.com/usermanual-cloudrobo/zh-cn_image_0000002714172644.png "点击放大")
   
2. 如果可视化面板一直未展示数据，请检查可视化数据目录是否选择正确以及目录下的数据是否完整（请勿随意手工调整或删除部分训练打点产生的summary数据，否则可能无法正常可视化）。
3. 如果数据正确但一直未成功展示数据（右上角刷新按钮一直在转圈），请打开一个terminal窗口，使用top命令查看CPU占用率等信息，可能是由于数据量过大导致CPU/Memory超负荷，建议减少数据量或者更换更大的Notebook实例规格。
4. 如果偶尔显示数据未成功加载，可稍等片刻后单击右上角的刷新按钮![](https://support.huaweicloud.com/usermanual-cloudrobo/zh-cn_image_0000002743931539.png)，通常情况下可再次正常显示相关数据。
 
