Migrating to TAO Toolkit

NVIDIA Transfer Learning Toolkit has now been renamed to NVIDIA TAO Toolkit. TAO toolkit provides serveral new features from TLT 3.0 and TLT 2.0:

  • Unified command line tool to launch commands

  • Multiple Docker setup

  • Conversational AI applications

    • Support for training n-gram Language Models

  • CV features

    • New training applications

    • New feature extractor backbones

    • New purpose built models

  • Integration to DeepStream and Riva Inference Platforms

Warning

When migrating from TLT 3.0 to TAO Toolkit, if you had a previously installed nvidia-tlt package in your virtualenv, make sure to uninstall this package before installing the nvidia-tao CLI package.

You may do this by running the following commands:

pip3 uninstall nvidia-tlt
pip3 install nvidia-tao

Note

With TAO Toolkit, running the following commands from TLT v2.0 and TLT v3.0 have been deprecated and are now mapped as shown:

Version Comparison

TAO Toolkit 3.0-21.08

TLT v3.0

TLT v2.0

Command mapping


  • tao <network> train

  • tao <network> prune

  • tao <network> evaluate

  • tao <network> export

  • tao <network> augment

  • tao <network> infer

  • tao <network> dataset_convert

  • tao <network> calibration_tensorfile


  • tlt <network> train

  • tlt <network> prune

  • tlt <network> evaluate

  • tlt <network> export

  • tlt <network> augment

  • tlt <network> infer

  • tlt <network> dataset_convert

  • tlt <network> calibration_tensorfile


  • tlt-train

  • tlt-prune

  • tlt-evaluate

  • tlt-export

  • tlt-augment

  • tlt-infer

  • tlt-dataset-convert

  • tlt-int8-tensorfile

The following table shows some of the key differences between TAO Toolit 3.0-21.08, TLT v3.0, and TLT v2.0.

Version Comparison

TAO Toolkit 3.0-21.08

TLT v3.0

TLT v2.0

Interface Difference

Users run the commands via the TAO launcher Python package

Users run the commands via the TLT launcher Python package

Users interact with the commands inside Docker

Steps to run TAO

  1. Install the launcher via pip3.

  2. Download NGC CLI separately.

  3. Configure the NGC CLI.

  4. Use tao --help to list tasks supported by the launcher .

  5. Launch tasks using the following command schema:

  • tao <task> <subtask> <args> , where subtask is defined per task.

  • The task may span across multiple Dockers.

    For example: to launch a detectnet_v2 training, use the following command:

    tao detectnet_v2 train <args>
    
  1. List all instances of TAO tasks using tao info.

  2. Interrupt job if needed using tao stop.

  1. Install the launcher via pip3.

  2. Download NGC CLI separatel.y

  3. Configure the NGC CLI.

  4. Use tlt --help to list tasks supported by the launcher.

  5. Launch tasks using the following command schema:

  • tlt <task> <subtask> <args> where subtask is defined per task.

  • The task may span across multiple Dockers.

  1. List all instances of TLT tasks using tlt list.

  2. Interrupt job if needed using tlt stop.

  1. Pull the TLT Docker.

  2. Instantiate the Docker with the required file systems mounted.

  3. Configure the NGC CLI.

  4. Run generic TLT commands:

    • tlt-train <task>

    • tlt-prune

    • tlt-evaluate <task>

    • tlt-infer <task>

    • tlt-export <task>

  5. Exit Docker after execution.

Data preparation for TLT v2.0 and v3.0 are slightly different for SSD / DSSD / YOLOv3 / RetinaNet. In TLT v2.0, you have to generate TFRecords (and possibly resize your images). Those are no longer required in TLT v3.0. These networks in TLT v3.0 directly take original images and KITTI labels as input. If image resizing is needed, the data loader automatically handles it.

If you already prepared data for TLT v2.0 training, you don’t need to further process it for the TAO Toolkit training. Instead, you only need to provide the label directory path in the spec file, and training should run smoothly for TLT v3.0 and greater.