快速入门#

本章节以dvs-mnist为例,说明BIDL工程的使用方法。

选择配置文件#

dvs-mnist数据集使用 clif3fc3dm_itout-b16x1-dvsmnist.py 配置文件。由于dvs-mnist属于dvs数据的分类,所以在 applications/classification/dvs 目录下创建 dvs-mnist 文件夹,又根据其模型结构,在新建的 dvs-mnist 文件夹下创建 clif3fc3dm 文件夹,最后将配置文件放到该路径下。

注意

配置文件都是Python源代码文件,文件名后缀都是.py。

准备数据集#

查看 选择配置文件 中选择的配置文件中设定的数据集路径,然后在工程根目录下新建对应的数据集的目录。

data = dict(
   samples_per_gpu=16,
   workers_per_gpu=2,
   train=dict(
      type=dataset_type,
      data_prefix='data/dvsmnist/train/',
      pipeline=train_pipeline
   ),
   val=dict(
      type=dataset_type,
      data_prefix='data/dvsmnist/val/',
      pipeline=test_pipeline,
      test_mode=True
   ),
   test=dict(
      type=dataset_type,
      data_prefix='data/dvsmnist/test/',
      pipeline=test_pipeline,
      test_mode=True
   )
)

模型训练#

tools 目录下,执行以下命令,开始训练模型。

python train.py --config clif3fc3dm_itout-b16x1-dvsmnist

注意

--config 后的参数 clif3fc3dm_itout-b16x1-dvsmnist选择配置文件 章节中选择的配置文件的名称去掉.py。

训练开始后,会依次打印:

  • 本次训练所涉及到的配置信息,包括:

    • 配置文件中的信息

    • checkpoint保存的路径信息。

      checkpoint文件默认会保存在项目根目录 /work_dirs/clif3fc3dm_itout-b16x1-dvsmnist/ 下,会在此路径下生成一个 lastest.pth 文件,为最后一个epoch保存的checkpoint文件,此外还会生成一个 best.pth 文件,保存的是验证集精度最优的checkpoint文件。目录树如下:

      clif3fc3dm_itout-b16x1-dvsmnist/
      ├── 20240829_171552.log #本次训程中的所有日志,如损失、正确率
      ├── best.pth #验证集最优的模型存档点,即权重
      └── latest.pth #最后一轮训练的模型存档点,即权重
      

    注意

    如无特殊需求,不要用 --work-dir 传入其他路径来保存 checkpoint 文件。

  • 之后的内容为模型训练的日志信息,如下是前两个epoch输出的日志信息:

2024-08-29 17:33:37,021 - cls - INFO - Epoch [1][100/452] lr:
2.060e-02 top-1: 22.7500 top-5: 62.5000 loss: 2.1440

2024-08-29 17:33:48,696 - cls - INFO - Epoch [1][200/452] lr:
4.040e-02 top-1: 73.8750 top-5: 96.8125 loss: 1.1264

2024-08-29 17:34:00,255 - cls - INFO - Epoch [1][300/452] lr:
6.020e-02 top-1: 89.1875 top-5: 98.6250 loss: 0.8457

2024-08-29 17:34:11,309 - cls - INFO - Epoch [1][400/452] lr:
8.000e-02 top-1: 90.6250 top-5: 99.1250 loss: 0.7871

2024-08-29 17:34:16,431 - cls - INFO - Saving checkpoint at 1 epochs

2024-08-29 17:34:21,611 - cls - INFO - Epoch(val) [1][20] top-1:
87.1275 top-5: 98.9238

2024-08-29 17:34:31,200 - cls - INFO - Epoch [2][100/452] lr:
9.980e-02 top-1: 94.3750 top-5: 99.6250 loss: 0.7186

2024-08-29 17:34:41,470 - cls - INFO - Epoch [2][200/452] lr:
9.980e-02 top-1: 94.6875 top-5: 99.6250 loss: 0.6894

2024-08-29 17:34:51,961 - cls - INFO - Epoch [2][300/452] lr:
9.980e-02 top-1: 97.3125 top-5: 99.8750 loss: 0.6128

2024-08-29 17:35:02,393 - cls - INFO - Epoch [2][400/452] lr:
9.980e-02 top-1: 97.3750 top-5: 99.9375 loss: 0.5926

2024-08-29 17:35:07,965 - cls - INFO - Saving checkpoint at 2 epochs

2024-08-29 17:35:14,549 - cls - INFO - Epoch(val) [2][20] top-1:
98.1374 top-5: 100.0000

训练结束,将最优的权重文件拷贝到资源包中的权重文件路径中: /weight_files/classification/clif3fc3dm/lif

模型推理(GPU)#

tools 目录下,执行以下命令,进行模型推理。

python test.py --config clif3fc3dm_itout-b16x1-dvsmnist --checkpoint latest.pth --use_lyngor 0 --use_legacy 0

推理过程如下:

100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2409/2409 [01:23<00:00, 28.85it/s]
acc top-1: 99.21 top-5: 100.00
gpu test speed = 576.6303 fps
gpu test speed (without pipeline) = 583.3422 fps

由于在进行训练的时候,checkpoint文件的保存路径默认是固定的,且次级目录与配置文件名称相同,所以 --checkpoint 的参数只需指定 pth 文件名称即可。

模型推理(灵汐芯片)#

在BIDL框架中,采用开关切换后台执行环境,具体的,在使用 test.py 进行时,需配置:

配置项

说明

--us_lyngor

用于标识是否使用Lyngor进行编译。

【数据类型】ENUM

【取值范围】

  • 1:表示使用Lyngor进行编译,采用灵汐芯片执行;

  • 0:表示不使用Lyngor进行编译(GPU执行)。

--use_legacy

用于标识是否直接加载历史编译生成物、跳过编译环节。

【数据类型】ENUM

【取值范围】

  • 1:表示加载历史编译生成物、跳过编译环节;

  • 0:表示不加载历史编译生成物、不跳过编译环节。

如:

python test.py --config clif3fc3dm_itout-b16x1-dvsmnist --checkpoint latest.pth --use_lyngor 1 --use_legacy 0

注意

需要将训练好的文件(位于 work_dirs )及验证数据集拷贝到灵汐类脑计算设备中才可执行此脚本。