PaddleClas/docs/zh_CN/extension/train_with_DALI.md

2.7 KiB
Raw Blame History

使用DALI加速训练

前言

NVIDIA数据加载库The NVIDIA Data Loading LibraryDALI是用于数据加载和预处理的开源库用于加速深度学习训练、推理过程它可以直接构建飞桨Paddle的DataLoader数据读取器。

由于深度学习程序在训练阶段依赖大量数据这些数据需要经过加载、预处理等操作后才能送入训练程序而这些操作通常在CPU完成因此限制了训练速度进一步提高特别是在batch_size较大时数据读取可能成为训练速度的瓶颈。DALI可以基于GPU的高并行特性实现数据加载及预处理操作可以进一步提高训练速度。

安装DALI

目前DALI仅支持Linux x64平台且CUDA版本大于等于10.2。

关于更多DALI安装的信息可以参考DALI官方

使用DALI

PaddleClas支持在静态图训练方式中使用DALI加速由于DALI仅支持GPU训练因此需要设置GPU且DALI需要占用GPU显存需要为DALI预留显存。使用DALI训练只需在训练配置文件中设置字段use_dali=True,或通过以下命令启动训练即可:

# 设置用于训练的GPU卡号
export CUDA_VISIBLE_DEVICES="0"

# 设置用于神经网络训练的显存大小可根据具体情况设置一般可设置为0.8或0.7剩余显存则预留DALI使用
export FLAGS_fraction_of_gpu_memory_to_use=0.80

python tools/static/train.py -c configs/ResNet/ResNet50.yaml -o use_dali=True

也可以使用多卡训练:

# 设置用于训练的GPU卡号
export CUDA_VISIBLE_DEVICES="0,1,2,3,4,5,6,7"

# 设置用于神经网络训练的显存大小可根据具体情况设置一般可设置为0.8或0.7剩余显存则预留DALI使用
export FLAGS_fraction_of_gpu_memory_to_use=0.80

python -m paddle.distributed.launch \
    --gpus="0,1,2,3,4,5,6,7" \
    tools/static/train.py \
        -c ./configs/ResNet/ResNet50.yaml \
        -o use_dali=True

使用FP16训练

在上述基础上使用FP16半精度训练可以进一步提高速度可以参考下面的配置与运行命令。

export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
export FLAGS_fraction_of_gpu_memory_to_use=0.8

python -m paddle.distributed.launch \
    --gpus="0,1,2,3,4,5,6,7" \
    tools/static/train.py \
    -c configs/ResNet/ResNet50_fp16.yaml