任务校验
任务说明
对任务所需昇腾AI处理器数量进行判断;Atlas 训练系列产品要求的昇腾AI处理器数量只能是1、2、4、8。
具体实现
具体代码实现请参考开源代码中ValidNPUJob方法。其中checkSingleTrainMode方法与checkModuleDistributeTrainMode方法实现了对单机任务与分布式任务请求昇腾AI处理器数目的校验。
代码示例如下:
func (tp *module910x8) checkSingleTrainMode() error { taskNum := len(tp.Tasks) if taskNum > 1 { return fmt.Errorf("%s checkSingleTrainMode job<%s> single training has too many task:%d",tp.GetPluginName(), tp.Name, taskNum) } jobNPU := tp.ReqNPUNum // 检查单机场景训练任务请求昇腾AI处理器数目是否为1、2、4、8 if jobNPU == 1 || jobNPU == npuIndex2 || jobNPU == npuNumPerHccs || jobNPU == nodeNPUNumber { return nil } return fmt.Errorf("%s checkSingleTrainMode job<%s> req npu num is not [1 or 2 or 4 or 8]",tp.GetPluginName(), tp.Name) } func (tp *module910x8) checkModuleDistributeTrainMode() error { taskNum := len(tp.Tasks) for _, task := range tp.Tasks { taskNPU := task.ReqNPUNum tp.GetPluginName(), task.Name, taskNPU) // 检查分布式场景每个task请求昇腾AI处理器数目 if taskNPU != 1 && taskNum != npuIndex2 && taskNum != npuNumPerHccs && taskNum != tp.MaxNodeNPUNum { return fmt.Errorf("checkModuleDistributeTrainMode distributeTrain task<%s> req npu[%d] not equal [%d]", task.Name, taskNPU, tp.MaxNodeNPUNum) } } return nil }
父主题: 昇腾AI处理器的调度算法说明