TAO WandB 集成
TAO 中的以下网络与 Weights & Biases 接口,以帮助您持续迭代、可视化和跟踪多个训练实验,并将有意义的见解编译到训练用例中。
DetectNet-v2
FasterRCNN
图像分类 - TF2
RetinaNet
YOLOv4/YOLOv4-Tiny
YOLOv3
SSD
DSSD
EfficientDet - TF2
MaskRCNN
UNet
数据分析
在 TAO 4.0.1 中,Weights & Biases 可视化套件与 TensorBoard 中渲染的数据同步。因此,要查看在 weights and biases 服务器上渲染的数据,您需要启用 TensorBoard 可视化。该集成还包括在训练运行失败时通过 Slack 或电子邮件向您发送警报的功能。
启用 MLOPS 集成不需要您安装 TensorBoard。
以下是为 TAO 设置 Weights & Biases 所涉及的广泛步骤
设置 Weights & Biases 帐户
获取 Weights & Biases API 密钥
登录到 Weights & Biases
为 Weights & Biases 实验设置可配置数据
设置 Weights & Biases 帐户
在 Weights & Biases 网站 注册免费帐户,然后登录您的帐户。

Wandb 登录屏幕
获取 Weights & Biases API 密钥
登录到您的 Weights & Biases 帐户后,在此处找到您的 API 密钥 here。

Wandb 凭据页面
安装 wandb 库
在您的本地机器上的 Python3 环境中安装 wandb 库。
python3 -m pip install wandb
登录到 TAO 容器中的 wandb 客户端
为了传递来自本地计算单元的数据并在 Weights & Biases 服务器仪表板上渲染数据,TAO 容器中的 wandb 客户端必须登录并与您的个人资料同步。 要在容器登录中包含 wandb 客户端,请在 TAO 容器中设置环境变量 WANDB_API_KEY
,并使用您在设置 Weights & Biases 帐户时收到的 API 密钥。
要通过 TAO 启动器设置环境变量,请使用下面的示例 JSON 文件作为参考,并将 ~/.tao_mounts.json
文件的 Envs
元素下的 value
字段替换为您的 API 密钥。
Weights and biases 需要访问容器中的 /config
目录。 因此,您将需要使用 root 访问权限实例化容器。 请务必取消设置 ~/.tao_mounts.json
文件中 DockerOptions
设置下的 user
字段。
{
"Mounts": [
{
"source": "/path/to/your/data",
"destination": "/workspace/tao-experiments/data"
},
{
"source": "/path/to/your/local/results",
"destination": "/workspace/tao-experiments/results"
},
{
"source": "/path/to/config/files",
"destination": "/workspace/tao-experiments/specs"
}
],
"Envs": [
{
"variable": "WANDB_API_KEY",
"value": "<api_key_value_from_wandb>"
}
],
"DockerOptions": {
"shm_size": "16G",
"ulimits": {
"memlock": -1,
"stack": 67108864
},
"ports": {
"8888": 8888
}
}
}
当直接从 TAO 容器运行网络时,请使用 docker
命令的 -e
标志。 例如,要通过容器直接使用 Weights & Biases 运行 detectnet_v2,请使用以下代码。
docker run -it --rm --gpus all \
-v /path/in/host:/path/in/docker \
-e WANDB_API_KEY=<api_key_value>
nvcr.io/nvidia/tao/tao-toolkit:5.0.0-tf1.15.5 \
detectnet_v2 train -e /path/to/experiment/spec.txt \
-r /path/to/results/dir \
-k $KEY --gpus 4
TAO 提供了以下选项来配置 wandb 客户端
project
:一个字符串,包含实验数据上传到的项目名称entity
:一个字符串,包含在其中创建项目的实体(组)的名称tags
:一个字符串列表,可用于标记实验notes
:实验的简短描述name
:实验的名称。 为了保持每次运行的名称唯一,TAO 会在名称字符串后附加一个时间戳,指示实验运行的创建时间。
根据网络遵循的模式,添加到网络的 spec 文件片段可能略有不同。
对于 DetectNet_v2、UNet、FasterRCNN、YOLOv3/YOLOv4/YOLOv4-Tiny、RetinaNet、SSD/DSSD、MaskRCNN 和 UNet,请在网络的 training_config
配置元素下添加以下代码段。
visualizer{
enabled: true
wandb_config{
project: "name_of_project"
entity: "name_of_entity"
tags: "training"
tags: "tao_toolkit"
name: "training_experiment_name"
notes: "short description of experiment"
}
}
对于 MaskRCNN,请在网络的训练配置中添加以下代码段
wandb_config{
project: "name_of_project"
entity: "name_of_entity"
tags: "training"
tags: "tao_toolkit"
name: "training_experiment_name"
notes: "short description of experiment"
}
对于 EfficientDet-TF2 和 Classification-TF2,请在 train.yaml
文件中 train
配置元素下添加以下代码段。
wandb:
entity: "name_of_entity"
name: "name_of_the_experiment"
project: "name_of_the_project"
以下是 DetectNet_v2 成功可视化运行的示例图像。

显示中间推理图像的图像,其中包含在使用 DBScan 或 NMS 进行聚类之前的边界框

显示系统利用率图的图像。

给定实验的配置已保存以供记录。

训练期间绘制的指标

来自运行训练的本地机器的流式日志。

训练模型的权重直方图。