昇腾社区首页
中文
注册

任务校验

任务说明

对任务所需昇腾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 trainning 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
}