TAO v5.5.0

常见问题解答

本文档包含您在使用 TAO 时可能遇到的问题的问答。

正在发生什么?

NVIDIA Transfer Learning Toolkit 正在重命名为 NVIDIA TAO。

如何获取最新的 TAO?

要获取最新的 TAO,请从 NVIDIA PyIndex 安装 nvidia-tao 软件包。要安装,请执行下面提到的命令

复制
已复制!
            

pip3 uninstall nvidia-tlt # This is only required if you had previously installed nvidia-tlt in your # Virtual environment. pip3 install nvidia-tao

模型和文件扩展名命名约定是否会更改?

不,TAO 生成的所有模型仍然是 .tlt 文件。对于部署到基于 TensorRT 的推理 SDK,计算机视觉和对话式 AI 模型的模型仍将分别称为 .etlt.riva 文件。

什么是专用模型?我可以在生产环境中部署它们吗?

专用模型是为智慧城市、零售、医疗保健等应用训练的高精度模型。这些是生产质量的模型,在非常大的专有数据集上进行训练,以获得最佳的精度和性能。

所有模型都可以免费使用和分发吗?

是的,所有模型都可以免费使用和分发。有关专用模型的具体条款,请阅读我们的模型 EULA

我是否需要重新训练专用模型,或者可以按原样从 NGC 部署它们?

专用模型可以使用模型卡中的“剪枝”版本按原样部署,但也可以重新训练以更好地适应您的环境。对于训练,请使用模型卡中的“未剪枝”版本。

除了 NVIDIA 提供的预训练模型外,我可以使用 TAO 以及我自己的或任何开源的预训练模型吗?

TAO 不支持第三方预训练模型。目前仅支持来自 NGC 的 NVIDIA 预训练模型,这些模型可以使用您的自定义数据进行重新训练。

TAO 是否支持 YOLOv3?

是的,TAO 支持 YOLOv3。

我如何确定模型的剪枝阈值?

阈值默认设置为 0.1。每个阈值都会导致不同部分的权重被剪枝,这会在剪枝过程结束时报告。常见的做法是从 0.1 或 0.05 开始,使用递增的阈值进行剪枝。较大的阈值将导致更多权重/通道被剪枝,因此更难恢复精度或 mAP。

剪枝是自动执行的,还是有我需要设置的超参数来剪枝我的模型?

剪枝有多个参数。

  • normalizer 用于选择归一化权重的方法,默认为 max

  • equalization_criterion 用于选择合并来自元素级或深度级层的不同分支的权重的方法,默认为 union

  • pruning_granularity 用于设置通道被剪枝时的粒度

  • min_num_filters 用于设置剪枝需要保留的最小通道数

  • excluded_layers 可用于排除要剪枝的层

  • pruning_threshold 是最重要的选项。它用于设置剪枝的阈值,也与 Normalizer 一起使用。此阈值对于所有层都是通用的。

模型输出格式是什么?我如何使用此模型进行部署?

TAO 可以生成 2 种输出格式:.etlt 和 TensorRT 引擎文件。

  • .etlt 文件可以与 DeepStream 部署一起使用,请参阅 https://github.com/NVIDIA-AI-IOT/deepstream_tlt_apps 中的用法。

  • TensorRT 引擎文件也可以与 DeepStream 一起使用,但也可以使用 TensorRT 单独部署。请参阅使用 DeepStream 部署章节,了解不同的部署选项。

什么是模型导出密钥,为什么需要它?

模型导出密钥用于加密训练后的 keras/uff 模型文件为 .tlt/.etlt,以保护您的专有 IP,并使用模型导出密钥在 DeepStream 应用程序中解密 .etlt 模型。

如何将使用 TAO 训练的模型部署到 DeepStream?

请参阅TAO 快速入门指南 <tao_quick_start_guide>https://github.com/NVIDIA-AI-IOT/deepstream_tlt_apps

此模型是否仅适用于 DeepStream?我可以不使用 DeepStream 部署模型吗?

对于 TAO 模型,建议的部署路径是 DeepStream。请注意,模型也可以使用 TensorRT 在 DeepStream 之外部署,但用户将需要进行图像预处理和推理后处理输出 Tensor。

是否可以将自定义训练的 .tlt(或 .etlt)模型导出为传统的 TensorFlow (TF) 冻结推理图 (.pb),以便使用传统的 TF 工具进行推理?

不,目前不支持此功能。

批次大小是否依赖于模型的准确性?我应该如何为我的训练选择合适的批次大小?

作为一种常见的做法,对于小型数据集,首选小批次大小或单个 GPU;而对于大型数据集,首选大批次大小或多个 GPU。

我发现多 GPU 与单 GPU 相比,准确率较低。多 GPU 训练会影响模型的准确率吗?我如何在多 GPU 训练中提高准确率?

为了提高多 GPU 环境中的准确率,学习率参数需要更高,例如 max_learning_rate。仅当训练数据集很大时,才首选多 GPU。

分配数据集类:如果一个类别的数据集样本明显高于另一个类别,我该如何平衡类别之间的权重?

为了解决不平衡问题,请增加样本较少类别的 class_weight。您也可以尝试禁用 enable_autoweighting;在这种情况下,initial_weight 用于控制 cov/回归加权。保持不同类别的样本数量平衡非常重要,这有助于提高 mAP。

如何在 TAO 中保存检查点?

每个 DNN 的 train 命令默认支持保存检查点。默认情况下,每 10 个 epoch 保存一次检查点。对于 DetectNet_v2,可以保存此检查点的间隔是使用 DetectNet_v2 训练配置文件 training_config 部分中的 checkpoint_interval 参数配置的。

在 DetectNet_V2 中,是否有任何参数可以帮助提高训练小对象的 AP(平均精度)?

以下参数可以帮助您提高小对象的 AP

  • 增加 resnet 的 num_layers

  • 小对象的 class_weight

  • 增加小对象类的 bbox_rasterizer_config 部分的 coverage_radius_xcoverage_radius_y parameters

  • 降低 minimum_detection_ground_truth_overlap

  • 降低 minimum_height 以覆盖更多用于评估的小对象。

为什么我在 PyTorch 容器中运行任务时会收到此错误?

复制
已复制!
            

pytorch_lightning.utilities.exceptions.MisconfigurationException: you restored a checkpoint with current_epoch=10 but the Trainer(max_epochs=1)

在您已经为多个 epoch 训练模型后,您不能通过将 epoch 数 (max_epochs) 设置为低于已训练的 epoch 数来继续训练。

我可以在没有提升的用户权限的系统上运行 TAO 吗?

通过 TAO Launcher 运行 TAO 需要用户安装 docker-ce,因为 launcher 与本地主机上的 docker 服务交互以运行命令。安装 docker 需要提升的用户权限才能以 root 身份运行。如果您的计算机器上没有提升的用户权限,您可以使用 singularity 运行 TAO。这要求您绕过使用 tlt-launcher 并直接与组件 docker 交互。有关在不同 docker 中实现的任务的信息,请运行 tao info --verbose 命令。一旦您获得了任务到 docker 的映射,您可以按照以下步骤运行任务。

  1. 使用以下 singularity 命令拉取所需的 docker

复制
已复制!
            

singularity pull tao-toolkit-tf:v3.21.08-py3.sif docker://nvcr.io/nvidia/tao/tao-toolkit-tf:v3.21.08-py3

注意

为了使此命令起作用,必须安装最新版本的 singularity。


  1. 使用以下命令实例化 docker

复制
已复制!
            

singularity run --nv -B /path/to/workspace:/path/to/workspace tao-toolkit-tf:v3.21.08-py3.sif


  1. 在容器内运行命令,无需 tao 前缀。例如,要在 tao-toolkit-tf 容器中运行 detectnet_v2 训练,命令如下:

复制
已复制!
            

detectnet_v2 train -e /path/to/workspace/specs/file.txt \ -k $KEY \ -r /path/to/workspace/results \ -n name_of_final_model \ --gpus $NUM_GPUS


我可以在没有网络的情况下运行 TAO 吗?

请参阅 https://github.com/NVIDIA-AI-IOT/tao_toolkit_recipes/blob/main/tao_training_without_network/Guide.md

上一篇 发行说明
下一篇 故障排除指南
© 版权所有 2024,NVIDIA。 上次更新于 2024 年 10 月 15 日。