PaddleX在训练过程中会优先选择当前所有可用的GPU卡进行训练,在评估时分类和分割任务仍使用多张卡而检测任务只使用1张卡进行计算,在预测时各任务则只会使用1张卡进行计算。
用户如想配置PaddleX在运行时使用的卡的数量,可在命令行终端(Shell)或Python代码中按如下方式配置:
命令行终端:
# 使用1号GPU卡
export CUDA_VISIBLE_DEVICES='1'
# 使用0, 1, 3号GPU卡
export CUDA_VISIBLE_DEVICES='0,1,3'
# 不使用GPU,仅使用CPU
export CUDA_VISIBLE_DEVICES=''
python代码:
# 注意:须要在第一次import paddlex或paddle前执行如下语句
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,3'
import paddlex as pdx
目前PaddlePaddle支持在Linux下使用多卡训练,Windows只支持单卡,在命令行终端输入nvidia-smi可以查看自己机器的GPU卡信息,如若提示命令未找到,则用户需要自行安装CUDA驱动。
PaddleX在多卡GPU下训练时,无需额外的配置,用户按照上文的方式,通过CUDA_VISIBLE_DEVICES环境变量配置所需要使用的卡的数量即可。
需要注意的是,在训练代码中,可根据卡的数量,调高batch_size和learning_rate等参数,GPU卡数量越多,则可以支持更高的batch_size(注意batch_size需能被卡的数量整除), 同时更高的batch_size也意味着学习率learning_rate也要对应上调。同理,在训练过程中,如若因显存或内存不够导致训练失败,用户也需自行调低batch_size,并且按比例调低学习率。
PaddleX在训练过程中可以选择使用CPU进行训练、评估和预测。通过以下方式进行配置:
命令行终端:
export CUDA_VISIBLE_DEVICES=""
python代码:
# 注意:须要在第一次import paddlex或paddle前执行如下语句
import os
os.environ['CUDA_VISIBLE_DEVICES'] = ''
import paddlex as pdx
此时使用的CPU个数为1。
通过设置环境变量CPU_NUM可以改变CPU个数,如果未设置,则CPU数目默认设为1,即CPU_NUM=1。 在物理核心数量范围内,该参数的配置可以加速模型。
PaddleX在训练过程中会选择CPU_NUM个CPU进行训练,在评估时分类和分割任务仍使用CPU_NUM个CPU,而检测任务只使用1个CPU进行计算,在预测时各任务则只会使用1个CPU进行计算。
通过以下方式可设置CPU的个数:
命令行终端:
export CUDA_VISIBLE_DEVICES=""
export CPU_NUM=2
python代码:
# 注意:须要在第一次import paddlex或paddle前执行如下语句
import os
os.environ['CUDA_VISIBLE_DEVICES'] = ''
os.environ['CPU_NUM'] = '2'
import paddlex as pdx