问题描述
CUDA环境配置正常,代码直接运行时可以正常调用GPU,但通过NNI进行调参时一旦使用GPU就会卡在WAITING的状态不动。
问题原因
NNI框架在默认的情况下只会使用完全空闲的GPU进行运算,一旦GPU中存在其它进程(即使有时候可能只是一些系统进程)就会一直WAITING直到进程结束。
解决办法
其实很简单,在config.yml中添加如下代码即可:
# 当trainingServicePlatform为local时添加如下语句
localConfig:
useActiveGpu: true # 该参数将允许NNI使用活动的GPU运行任务
maxTrialNumPerGpu: 3 # 该参数指定在同一GPU上可同时进行的最大任务数量
# 当trainingServicePlatform为remote时添加如下语句
machineList:
useActiveGpu: true # 该参数将允许NNI使用活动的GPU运行任务
maxTrialNumPerGpu: 3 # 该参数指定在同一GPU上可同时进行的最大任务数量
# ...以下为你自己的其它的远程配置