ai模型的训练方法、装置、计算设备和存储介质
1.本技术要求于2020年09月07日提交的申请号为202010926721.0、发明名称为“一种弹性训练的方法及系统”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及人工智能(artificial intelligence,ai)技术领域,特别涉及一种ai模型的训练方法、装置、计算设备和存储介质。
背景技术:
3.随着人工智能技术的发展,以深度学习为代表的ai模型在各个领域中广泛应用,如图像分类、目标检测、自然语言处理等。对初始ai模型进行训练是一个比较关键的过程,训练是指通过将训练数据集的数据输入至初始ai模型,由初始ai模型进行计算,通过计算结果对初始ai模型的参数进行更新,最终获得具备一定能力(例如,图像分类能力、目标检测能力、自然语言识别能力等)的ai模型的过程。
4.由于训练过程比较复杂且需要消耗巨大的计算资源,利用多个计算节点对初始ai模型执行分布式训练成为了一种能有效满足训练效率的方式,然而如何更灵活地执行分布式训练,以平衡用户的训练需求和资源利用率的需求是急需解决的一个问题。
技术实现要素:
5.本技术提供了一种ai模型的训练方法、装置、计算设备和存储介质,用以更灵活地执行分布式训练。
6.第一方面,本技术提供了一种ai模型的训练方法,该方法应用于ai平台,ai平台与计算资源池相关联,计算资源池包括用于模型训练的计算节点,该方法包括:向用户提供训练配置界面,其中,训练配置界面包括供用户选择的多种训练模式,每种训练模式表示对训练初始ai模型所需的计算节点的一种分配策略;根据用户在训练配置界面的选择,生成至少一个训练任务;执行该至少一个训练任务以对初始ai模型进行训练,获得ai模型,获得的ai模型供用户下载或使用。
7.本技术所示的方案,ai平台给用户提供选择训练模式的功能,用户可以选择合适的训练模式,用于生成至少一个训练任务,而不是使用常规的分布式训练,所以可以使得分布式训练灵活的执行,进而可以平衡用户的训练需求和资源利用率。
8.在一种可能的实现方式中,多种训练模式包括第一模式和/或第二模式,第一模式表示对初始ai模型进行训练的过程中自动调整训练任务的个数,第二模式表示不同训练任务共享同一计算节点的资源。多种训练模式还可以包括第三模式,第三模式表示常规模式,表示利用预设或预选的计算节点执行分布式训练。
9.本技术所示的方案,第一模式也可以称为是性能模式、turbo模式,第二模式也可以称为是共享模式、经济(economic)模式。第一模式表示对初始ai模型进行训练的过程中
自动调整一个训练工作的训练任务的个数,第二模式表示不同训练任务共享同一计算节点的资源。此处不同训练任务可以属于同一个训练工作,也可以属于不同训练工作。这样,在至少使用第一模式时,可以动态调整训练任务的个数,加快训练速度,在至少使用第二模式时,可以与其它训练工作共享训练资源,提升资源利用率。
10.在一种可能的实现方式中,该至少一个训练任务运行在容器上,该方法还包括:在对初始ai模型进行训练的过程中,向用户提供训练过程的状态信息,其中,状态信息包括以下信息中的至少一种信息:执行训练任务的容器个数,每个容器的资源使用量,执行训练任务的计算节点的个数,和执行训练任务的计算节点的资源使用量。
11.本技术所示的方案,至少一个训练任务运行在容器上,每个容器包含了完整的运行时环境:一个训练任务,执行这个训练任务所需的全部依赖等。在对初始ai模型进行训练的过程中,ai平台还可以向用户提供训练过程的状态信息。这样,可以更直观的用户展现训练过程。
12.在一种可能的实现方式中,多种训练模式包括第一模式和第二模式,根据用户在训练配置界面的选择,生成至少一个训练任务,包括:根据用户在训练配置界面选择的第一模式和第二模式,生成至少一个训练任务。
13.本技术所示的方案,多种训练模式包括第一模式和第二模式,ai平台可以根据用户在训练配置界面选择的第一模式和第二模式,生成至少一个训练任务。这样,同时使用第一模式和第二模式,由于第一模式可以动态调整训练任务的个数,所以加快训练速度,而且由于使用第二模式,可以与其它训练工作共享计算节点的资源,提升资源利用率。
14.在一种可能的实现方式中,当用户在训练配置界面中选择第一模式时,训练配置界面还供用户输入或选择可运行训练任务的容器个数;根据用户在训练配置界面的选择,生成至少一个训练任务,包括:根据用户在训练配置界面选择的训练模式和用户输入或选择的可运行训练任务的容器个数,生成至少一个训练任务。
15.本技术所示的方案,在用户在训练配置界面中选择第一模式的情况下,训练配置界面中还可以供用户输入或选择可运行训练任务的容器个数。用户可以在训练配置界面中输入或者选择可运行训练任务的容器个数。ai平台可以根据用户在训练配置界面选择的训练模式和该容器个数,生成至少一个训练任务。这样,由于可运行训练任务的容器个数可以由用户选择,使得训练更加智能化。
16.在一种可能的实现方式中,当用户在训练配置界面中选择第二模式时,训练配置界面还供用户输入或选择运行训练任务的容器的资源使用量;根据用户在训练配置界面的选择,生成至少一个训练任务,包括:根据用户在训练配置界面选择的训练模式和用户输入或选择运行训练任务的容器的资源使用量,生成至少一个训练任务。
17.本技术所示的方案,在用户在训练配置界面中选择第二模式的情况下,训练配置界面中还可以供用户输入或选择运行训练任务的容器的资源使用量。用户可以在训练配置界面中输入或者选择运行训练任务的容器的资源使用量。ai平台可以根据用户在训练配置界面选择的训练模式和该资源使用量,生成至少一个训练任务。这样,由于运行训练任务的容器的资源使用量可以由用户选择,使得训练更加智能化。
18.在一种可能的实现方式中,运行训练任务的容器的资源使用量包括小于单个图形处理器(graphics processing unit,gpu)的gpu资源使用量和/或小于单个显存的显存使
用量。这样,由于单个容器的资源使用量比较小,可以使资源的利用率更高。
19.在一种可能的实现方式中,在选择第一模式的情况下,执行至少一个训练任务以对初始ai模型进行训练,包括:在执行至少一个训练任务以对初始ai模型进行训练的过程中,当检测到满足弹性扩缩容的条件时,获取计算资源池中计算资源的空闲量;根据计算资源池中计算资源的空闲量,调整至少一个训练任务的个数以及调整用于运行训练任务的容器的个数;在调整后的容器中运行调整后的训练任务以对初始ai模型进行训练。
20.本技术所示的方案,在选择第一模式的情况下,ai平台在执行至少一个训练任务以对初始ai模型进行训练的过程中,ai平台可以检测至少一个训练任务是否满足弹性扩缩容的条件,在检测到满足弹性扩缩容的条件时,ai平台可以获取计算资源池中计算资源的空闲量。然后ai平台使用该空闲量,调整该至少一个训练任务的个数,以及调整运行训练任务的容器的个数。然后ai平台可以调整后的容器中,运行调整后训练任务,实现对初始ai模型进行训练。这样,由于可以弹性扩缩容,所以可以加快训练速度。
21.在一种可能的实现方式中,调整至少一个训练任务的个数以及调整用于运行训练任务的容器的个数,在调整后的容器中运行调整后的训练任务以对初始ai模型进行训练,包括:将至少一个训练任务中的部分训练任务添加到已运行至少一个训练任务中的训练任务的目标容器中,在目标容器中串行运行多个训练任务,在训练过程中,将串行运行多个训练任务获得的模型参数的平均值作为模型参数的更新值。
22.本技术所示的方案,在进行缩容时,容器的个数会减少。缩减掉的容器上运行至少一个训练任务中的部分训练任务,将该部分训练任务,添加到已运行至少一个训练任务中的训练任务的目标容器中。由于目标容器中本身运行有训练任务,再将部分训练任务添加至目标容器,目标容器运行多个训练任务。目标容器中串行运行该多个训练任务。将串行运行多个训练任务获取的模型参数的平均值,作为模型参数的更新值。这样,由于在目标容器运行多个训练任务时,是串行运行,所以还相当于多个训练任务是分布式执行,和原来未缩容前的执行方式相同,不会导致ai模型的训练精度降低。
23.在一种可能的实现方式中,在选择第二模式的情况下,该方法包括:根据第二模式下至少一个训练任务运行的容器的资源使用量确定每个容器对应的计算节点的剩余资源;利用每个容器对应的计算节点的剩余资源,运行一个或多个其他训练任务。
24.本技术所示的方案,在选择第二模式的情况下,ai平台还可以根据第二模式下至少一个训练任务运行的容器的资源使用量,将每个容器对应的计算节点的总资源量减去已使用资源量,获得每个容器对应的计算节点的剩余资源。ai平台可以使用每个容器对应的计算节点的剩余资源,运行一个或多个其它训练任务。这样,可以将每个计算节点上的剩余资源利用上,提升资源利用率。
25.第二方面,本技术提供了一种ai模型的训练装置,所述装置应用于ai平台,所述ai平台与计算资源池相关联,所述计算资源池包括用于模型训练的计算节点,包括:训练配置模块,用于向用户提供训练配置界面,其中,所述训练配置界面包括供所述用户选择的多种训练模式,每种训练模式表示对训练初始ai模型所需的计算节点的一种分配策略;任务管理模块,用于:根据所述用户在所述训练配置界面的选择,生成至少一个训练任务;执行所述至少一个训练任务以对所述初始ai模型进行训练,获得ai模型,获得的所述ai模型供所述用户下载或使用。这样,ai平台给用户提供选择训练模式的功能,用户可以选择合适的训
练模式,用于生成至少一个训练任务,而不是使用常规的分布式训练,所以可以使得分布式训练灵活的执行,进而可以平衡用户的训练需求和资源利用率。
26.在一种可能的实现方式中,所述多种训练模式包括第一模式和/或第二模式,所述第一模式表示对所述初始ai模型进行训练的过程中自动调整训练任务的个数,所述第二模式表示不同训练任务共享同一计算节点的资源。
27.在一种可能的实现方式中,所述至少一个训练任务运行在容器上,所述装置还包括:
28.展示模块,用于在对所述初始ai模型进行训练的过程中,向所述用户提供训练过程的状态信息,其中,所述状态信息包括以下信息中的至少一种信息:执行训练任务的容器个数,每个容器的资源使用量,执行训练任务的计算节点的个数,和执行训练任务的计算节点的资源使用量。
29.在一种可能的实现方式中,所述多种训练模式包括第一模式和第二模式,所述任务管理模块,用于:
30.根据所述用户在所述训练配置界面选择的第一模式和第二模式,生成至少一个训练任务。
31.在一种可能的实现方式中,当所述用户在所述训练配置界面中选择所述第一模式时,所述训练配置界面还供所述用户输入或选择可运行训练任务的容器个数;
32.所述任务管理模块,用于:
33.根据所述用户在所述训练配置界面选择的训练模式和所述用户输入或选择的可运行训练任务的容器个数,生成至少一个训练任务。
34.在一种可能的实现方式中,当所述用户在所述训练配置界面中选择所述第二模式时,所述训练配置界面还供所述用户输入或选择运行训练任务的容器的资源使用量;
35.所述任务管理模块,用于:
36.根据所述用户在所述训练配置界面选择的训练模式和所述用户输入或选择运行训练任务的容器的资源使用量,生成至少一个训练任务。
37.在一种可能的实现方式中,所述运行训练任务的容器的资源使用量包括小于单个图形处理器gpu的gpu资源使用量和/或小于单个显存的显存使用量。
38.在一种可能的实现方式中,在选择所述第一模式的情况下,所述任务管理模块,用于:
39.在执行所述至少一个训练任务以对所述初始ai模型进行训练的过程中,当检测到满足弹性扩缩容的条件时,获取所述计算资源池中计算资源的空闲量;
40.根据所述计算资源池中计算资源的空闲量,调整所述至少一个训练任务的个数以及调整用于运行训练任务的容器的个数;
41.在调整后的容器中运行调整后的训练任务以对所述初始ai模型进行训练。
42.在一种可能的实现方式中,所述任务管理模块,用于:
43.将所述至少一个训练任务中的部分训练任务添加到已运行所述至少一个训练任务中的训练任务的目标容器中,在所述目标容器中串行运行多个训练任务,在训练过程中,将串行运行所述多个训练任务获得的模型参数的平均值作为模型参数的更新值。
44.在一种可能的实现方式中,在选择所述第二模式的情况下,所述任务管理模块,还
用于:
45.根据所述第二模式下所述至少一个训练任务运行的容器的资源使用量确定每个容器对应的计算节点的剩余资源;
46.利用所述每个容器对应的计算节点的剩余资源,运行一个或多个其他训练任务。
47.第三方面,提供了一种计算设备,计算设备包括处理器和存储器,其中:存储器中存储有计算机指令,处理器执行计算机指令,以实现第一方面及其可能的实现方式的方法。
48.第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算设备执行时,使得计算设备执行第一方面及其可能的实现方式的方法,或者使得计算设备实现上述第二方面及其可能的实现方式的装置的功能。
49.第五方面,提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行上述第一方面及其可能的实现方式的方法,或者使得计算设备实现上述第二方面及其可能的实现方式的装置的功能。
附图说明
50.图1为本技术一个示例性实施例提供的ai平台100的结构示意图;
51.图2为本技术一个示例性实施例提供的ai平台100的应用场景示意图;
52.图3为本技术一个示例性实施提供的ai平台100的部署示意图;
53.图4为本技术一个示例性实施提供的部署ai平台100的计算设备400的结构示意图;
54.图5为本技术一个示例性实施提供的ai模型的训练方法的流程示意图;
55.图6为本技术一个示例性实施提供的训练过程的状态信息的示意图;
56.图7为本技术一个示例性实施提供的ai模型的训练方法的流程示意图;
57.图8为本技术一个示例性实施提供的训练配置界面的示意图;
58.图9为本技术一个示例性实施提供的扩容的示意图;
59.图10为本技术一个示例性实施提供的缩容的示意图;
60.图11为本技术一个示例性实施提供的ai模型的训练方法的流程示意图;
61.图12为本技术一个示例性实施提供的ai模型的训练方法的流程示意图;
62.图13为本技术一个示例性实施提供的计算设备的结构示意图。
具体实施方式
63.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
64.目前,人工智能热潮不断,机器学习是一种实现ai的核心手段,机器学习渗透至医学、交通、教育、金融等各个行业。不仅仅是专业技术人员,就连各行业的非ai技术专业也期盼用ai、机器学习完成特定任务。
65.为了便于理解本技术提供的技术方案和实施例,下面对ai模型、ai模型的训练、分布式训练、ai平台等概念进行详细说明:
66.ai模型,是一类用机器学习思想解决实际问题的数学算法模型,ai模型中包括大
量的参数和计算公式(或计算规则),ai模型中的参数是可以通过训练数据集对ai模型进行训练获得的数值,例如,ai模型的参数是ai模型中的计算公式或计算因子的权重。ai模型还包含一些超(hyper)参数,超参数是无法通过训练数据集对ai模型进行训练获得的参数,超参数可用于指导ai模型的构建或者ai模型的训练,超参数有多种。例如,ai模型训练的迭代(iteration)次数、学习率(leaning rate)、批尺寸(batch size)、ai模型的层数、每层神经元的个数。换而言之,ai模型的超参数与参数的区别在于:ai模型的超参数的值无法通过对训练数据集进行分析获得,而ai模型的参数的值可根据在训练过程中对训练数据集进行分析进行修改和确定。
67.ai模型多种多样,使用较为广泛的一类ai模型为神经网络模型,神经网络模型是一类模仿生物神经网络(动物的中枢神经系统)的结构和功能的数学算法模型。一个神经网络模型可以包括多种不同功能的神经网络层,每层包括参数和计算公式。根据计算公式的不同或功能的不同,神经网络模型中不同的层有不同的名称。例如,进行卷积计算的层称为卷积层,卷积层常用于对输入信号(如图像)进行特征提取。一个神经网络模型也可以由多个已有的神经网络模型组合构成。不同结构的神经网络模型可用于不同的场景(如分类、识别等)或在用于同一场景时提供不同的效果。神经网络模型结构不同具体包括以下一项或多项:神经网络模型中网络层的层数不同、各个网络层的顺序不同、每个网络层中的权重、参数或计算公式不同。业界已存在多种不同的用于识别或分类等应用场景的具有较高准确率的神经网络模型,其中,一些神经网络模型可以被特定的训练数据集进行训练后单独用于完成一项任务或与其他神经网络模型(或其他功能模块)组合完成一项任务。
68.一般的ai模型在被用于完成一项任务前都需要被训练。
69.训练ai模型,是指利用已有的数据通过一定方法使ai模型拟合已有数据的规律,确定ai模型中的参数。训练一个ai模型需要准备一个训练数据集,根据训练数据集中的训练数据是否有标注(即:数据是否对应有特定的标签信息,例如,类型、名称、数据中包含的标注框),可以将ai模型的训练分为监督训练(supervised training)和无监督训练(unsupervised training)。对ai模型进行监督训练时,用于训练的训练数据集中的训练数据带有标注(label)。训练ai模型时,将训练数据集中的训练数据作为ai模型的输入,由ai模型对输入的训练数据进行计算,获得ai模型输出值,将训练数据对应的标注作为ai模型的输出值的参考,利用损失函数(loss function)计算ai模型输出值与训练数据对应的标注的损失(loss)值,根据损失值调整ai模型中的参数。用训练数据集中的每个训练数据迭代地对ai模型进行训练,ai模型的参数不断调整,直到ai模型可以根据输入的训练数据准确度较高地输出与训练数据对应的标注相同或相似的输出值。对ai模型进行无监督训练,则用于训练的数据集中的训练数据没有标注,训练数据集中的训练数据依次输入至ai模型,由ai模型逐步识别训练数据集中的训练数据之间的关联和潜在规则,直到ai模型可以用于判断或识别输入的数据的类型或特征。例如,聚类,用于聚类的ai模型接收到大量的训练数据后,可学习到各个训练数据的特征以及训练数据之间的关联和区别,将训练数据自动地分为多个类型。不同的任务类型可采用不同的ai模型,一些ai模型仅可以用监督学习的方式训练,一些ai模型仅可以用无监督学习的方式训练,还有一些ai模型既可以用监督学习的方式训练又可以用无监督学习的方式训练。经过训练完成的ai模型可以用于完成一项特定的任务。通常而言,机器学习中的ai模型都需要采用有监督学习的方式进行训练,有
监督学习的方式对ai模型进行训练可使ai模型在带有标注的训练数据集中更有针对性地学习到训练数据集中训练数据与对应标注的关联,使训练完成的ai模型用于预测其他输入推理数据时准确率较高。
70.损失函数,是用于衡量ai模型被训练的程度(也就是用于计算ai模型预测的结果与真实目标之间的差异)的函数。在训练ai模型的过程中,因为希望ai模型的输出尽可能的接近真正想要预测的值,所以可以通过比较当前ai模型根据输入数据的预测值和真正想要的目标值(即输入数据的标注),再根据两者之间的差异情况来更新ai模型中的参数(当然,在第一次更新之前通常会有初始化的过程,即为ai模型中的参数预先配置初始值)。每次训练都通过损失函数判断一下当前的ai模型预测的值与真实目标值之间的差异,更新ai模型的参数,直到ai模型能够预测出真正想要的目标值或与真正想要的目标值非常接近的值,则认为ai模型被训练完成。
71.分布式训练,分布式训练是ai模型训练过程中常用的加速手段之一。分布式训练指:将训练拆分在多个独立的计算节点当中进行独立计算,再将结果进行周期性的汇总和重新分发,由此加速ai模型的训练过程。当前主流的分布式计算拓扑结构包括ps-worker和all-reduce等。分布式训练可以包括数据并行的分布式训练和模型并行的分布式训练。
72.数据并行的分布式训练,将训练数据集中的训练数据分布到多个计算节点上同时进行计算,在每个计算节点上执行对ai模型的训练,并将每个计算节点上产生的模型参数的梯度聚合后,再更新模型参数,具体的,将训练数据集切分到k个计算节点上时有两种选择,1、k个计算节点中每个计算节点上的批大小与使用单个计算节点进行计算时的批大小相同,批大小指每次调整参数前在训练数据集所选取的训练数据的数目。2、每个计算节点上的批大小是使用单个计算节点进行计算时的批大小除以k,这样聚合后的全局批大小保持不变。在本技术实施例的后续描述中,以数据并行的分布式训练为例描述ai模型的训练方法。
73.模型并行的分布式训练,是将模型切分到多个计算节点上,而数据不需要被切分,对于大规模的深度学习或者机器学习模型,内存或者显存的消耗非常大,所以可以将模型切分。模型并行的分布式训练也存在多种切分方式。例如,对于神经网络模型这种分层模型模可以按照分层切分,即每一层或者多层放在一个计算节点上。
74.ai平台,是一种为ai开发者和用户提供便捷的ai开发环境以及便利的开发工具的平台。ai平台中内置有各种解决不同问题的预训练ai模型或者ai子模型,ai平台可以根据用户的需求搜索并且建立适用的ai模型,用户只需在ai平台中确定自己的需求,且按照提示准备好训练数据集上传至ai平台,ai平台就能为用户训练出一个可用于实现用户需要的ai模型。或者,用户按照提示准备好自己的算法(也称为初始ai模型)和训练数据集,上传至ai平台,ai平台基于用户自己的算法和训练数据集,可以训练出一个可用于实现用户需要的ai模型。用户可利用训练完成的ai模型完成自己的特定任务。应理解,本技术中在被ai平台训练前的ai模型(例如,用户上传的算法、ai平台预置的算法或者预训练模型),称为初始ai模型。
75.为了更灵活地执行分布式训练,以及平衡用户的训练需求和资源利用率的需求,本技术实施例提供了一种ai平台,该ai平台中引入多种训练模式,每种训练模式用于表示对初始ai模型所需的计算节点的分配策略。
76.需要说明的是,上文中提到的ai模型是一种泛指,ai模型包括深度学习模型、机器学习模型等。
77.图1为本技术实施例中的ai平台100的结构示意图,应理解,图1仅是示例性地展示了ai平台100的一种结构化示意图,本技术并不限定对ai平台100中的模块的划分。如图1所示,ai平台100包括算法管理模块101、训练配置模块102、任务管理模块103和数据存储模块104。ai平台与计算资源池相关联,计算资源池中包括多个用于模型训练的计算节点,ai平台可以调度计算资源池中的计算节点,用于模型训练。
78.下面简要地描述ai平台100中的各个模块的功能:
79.算法管理模块101:提供初始ai模型管理界面,用于用户上传基于自己的训练目标创建的初始ai模型;或者,用户在初始ai模型库中,获取已有的初始ai模型。或者,算法管理模101还可以用于根据用户输入的任务目标,获取ai平台上预置的初始ai模型。用户基于自己的训练目标创建的初始ai模型可以基于ai平台提供的框架进行编写。初始ai模型可以包括未进行训练的ai模型、进行训练但是未完全训练完成的ai模型。未进行训练的ai模型指构建的ai模型还未使用训练数据集进行训练,构建的ai模型中的参数均是预设的数值。
80.训练配置模块102:为用户提供了训练配置界面。用户可以在训练配置界面中选取训练模式,训练模式可以包括常规模式、第一模式和第二模式。第一模式也可以称为是turbo模式、性能模式,第二模式也可以称为是经济模式、共享模式,在后文中描述时,将第一模式称为是性能模式,将第二模式称为是共享模式。常规模式是现有的分布式训练的模式。
81.其中,性能模式:指在ai模型的训练过程中,动态的调整初始ai模型使用的资源。
82.共享模式:指在ai模型的训练过程中,不同ai模型的训练可以共享同一个计算节点的资源,或者同一ai模型的不同训练任务共享同一个计算节点的资源。
83.常规模式:指在ai模型的训练过程中,每个ai模型的训练占用一个或多个计算节点的全部资源,且不会动态调整。
84.可选的,在用户选取训练模式为共享模式的情况下,用户还可以在训练配置界面中选取运行训练任务的容器的资源使用量。
85.可选的,在用户选取训练模式为性能模式的情况下,用户还可以在训练配置界面中选取可运行训练任务的容器个数。
86.可选的,用户还可以在训练配置界面选取初始ai模型、配置输入输出对象存储服务(object storage service,obs)路径。
87.可选的,用户还可以在训练配置界面中选取用于训练初始ai模型的计算节点的规格,如要求训练初始ai模型的计算节点的图形处理器(graphics processing unit,gpu)大小、显存量。
88.可选的,用户还可以在训练配置界面中输入用于训练初始ai模型的训练数据集。该训练数据集中的数据可以是已标注的数据,也可以是未标注的数据。具体的,可以是输入训练数据集的访问地址。
89.可选的,用户还可以在训练配置界面中输入对完成任务目标的ai模型的效果期望和训练期望完成时间。例如,输入或选择最终获得的ai模型用于人脸识别的准确率要高于99%,期望在24小时内完成训练。
90.训练配置模块102与算法管理模块101可以通信,用于从算法管理模块101获取初始ai模型的访问地址。训练配置模块102还用于基于初始ai模型的访问地址、用户在训练配置界面输入或者选择的一些内容打包训练作业。
91.配置模块102还与任务管理模块103可以通信,将训练作业(training job)提交给任务管理模块103。
92.任务管理模块103:管理训练ai模型过程的核心模块,任务管理模块103与算法管理模块101、训练配置模块102和数据存储模块104均可以通信。具体处理为:
93.任务管理模块103基于训练配置模块102提供的训练作业中的训练模式、容器个数、容器资源使用量、初始ai模型的访问地址等信息,拉取相应的训练镜像和初始ai模型,生成运行至少一个训练任务的容器。将至少一个训练任务的容器下发给计算资源池的计算节点上进行运行。
94.可选的,任务管理模块103还用于监控至少一个训练任务是否满足扩缩容条件,在满足扩缩容条件的情况下,动态调整至少一个训练任务以及至少一个训练任务的容器。
95.可选的,任务管理模块103还用于配置各个容器的共享资源。例如,将容器1和容器2调度至计算资源池的一个计算节点上。
96.数据存储模块104(如可以是云服务提供商提供的obs对应的数据存储资源):用于存储用户上传的训练数据集、用户上传的初始ai模型、其他用户上传的初始ai模型以及训练模式的一些配置项等。
97.可选的,ai平台还包括展示模块105(图1中未示出),展示模块105与任务管理模块103通信,获取训练过程的状态信息、训练完成的ai模型等,将该状态信息、该ai模型提供给用户。
98.需要说明的是,本技术中的ai平台可以是一个可以与用户交互的系统,这个系统可以是软件系统也可以是硬件系统,也可以是软硬结合的系统,本技术中不进行限定。
99.通过上述各模块的功能,本技术实施例提供的ai平台可向用户提供灵活的分布式训练的业务,使得ai平台可以平衡用户的训练需求和资源利用率的需求。
100.图2为本技术实施例提供的一种ai平台100的应用场景示意图,如图2所示,在一种实施例中,ai平台100可全部部署在云环境中。云环境是云计算模式下利用基础资源向用户提供云服务的实体。云环境包括云数据中心和云服务平台,云数据中心包括云服务提供商拥有的大量基础资源(包括计算资源池、存储资源和网络资源),云数据中心包括的计算资源池可以是大量的计算节点(例如服务器)。ai平台100可以独立地部署在云数据中心中的服务器或虚拟机上,ai平台100也可以分布式地部署在云数据中心中的多台服务器上、或者分布式地部署在云数据中心中的多台虚拟机上、再或者分布式地部署在云数据中心中的服务器和虚拟机上。如图2所示,ai平台100由云服务提供商在云服务平台抽象成一种ai云服务提供给用户,用户在云服务平台购买该云服务后(可预充值再根据最终资源的使用情况进行结算),云环境利用部署在云数据中心的ai平台100向用户提供ai平台云服务。在使用ai平台云服务时,用户可以通过应用程序接口(application program interface,api)或者图形用户界面(graphical user interface,gui)确定要ai模型完成的任务、上传训练数据集至云环境等,云环境中的ai平台100接收用户的任务信息、训练数据集,执行数据预处理、ai模型训练。ai平台通过api或者gui向用户返回ai模型的训练过程的状态信息等内容。
训练完成的ai模型可被用户下载或者在线使用,用于完成特定的任务。
101.在本技术的另一种实施例中,云环境下的ai平台抽象成一种ai云服务向用户提供时,在用户选择共享模式的情况下,用户可以购买固定资源使用量的容器的使用时长,在资源使用量固定的情况下,使用时长越长,需要的费用越高,反之越低。在该使用时长内,ai平台训练ai模型。或者,在用户选择共享模式的情况下,用户可以预充值,在训练完成后再根据最终使用的gpu的数量和使用时长进行结算。
102.在用户选择性能模式的情况下,用户可以预充值,在训练完成后再根据最终使用的gpu的数量和使用时长进行结算。
103.在本技术的另一种实施例中,云环境下的ai平台100抽象成ai云服务向用户提供时,可分为两部分,即:基础ai云服务和ai弹性训练云服务。用户在云服务平台可先仅购买基础ai云服务,在需要使用ai弹性训练云服务时再进行购买,购买后由云服务提供商提供ai弹性训练云服务api,最终按照调用api的次数对ai弹性训练云服务进行额外计费。
104.本技术提供的ai平台100的部署较为灵活,如图3所示,在另一种实施例中,本技术提供的ai平台100还可以分布式地部署在不同的环境中。本技术提供的ai平台100可以在逻辑上分成多个部分,每个部分具有不同的功能。例如,在一种实施例中ai平台100包括算法管理模块101、训练配置模块102、任务管理模块103和数据存储模块104。ai平台100中的各部分可以分别部署在终端计算设备、边缘环境和云环境中的任意两个或三个环境中。终端计算设备包括:终端服务器、智能手机、笔记本电脑、平板电脑、个人台式电脑、智能摄相机等。边缘环境为包括距离终端计算设备较近的边缘计算设备集合的环境,边缘计算设备包括:边缘服务器、拥有计算能力的边缘小站等。部署在不同环境或设备的ai平台100的各个部分协同实现为用户提供训练ai模型等功能。例如,在一种场景中,终端计算设备中部署ai平台100中的算法管理模块101、训练配置模块102和数据存储模块104,边缘环境的边缘计算设备中部署ai平台100中的任务管理模块103。用户将初始ai模型发送至终端计算设备中的算法管理模块101,终端计算设备将初始ai模型存储至数据存储模块104。用户通过训练配置模块102选取训练模式。边缘计算设备中任务管理模块103生成至少一个训练任务,执行该至少一个训练任务。应理解,本技术不对ai平台100的哪些部分部署具体部署在什么环境进行限制性的划分,实际应用时可根据终端计算设备的计算能力、边缘环境和云环境的资源占有情况或具体应用需求进行适应性的部署。
105.ai平台100也可以单独部署在任意环境中的一个计算设备上(如单独部署在边缘环境的一个边缘服务器上)。图4为部署有ai平台100的计算设备400的硬件结构示意图,图4所示的计算设备400包括存储器401、处理器402、通信接口403以及总线404。其中,存储器401、处理器402、通信接口403通过总线404实现彼此之间的通信连接。
106.存储器401可以是只读存储器(read only memory,rom),随机存取存储器(random access memory,ram),硬盘,快闪存储器或其任意组合。存储器401可以存储程序,当存储器401中存储的程序被处理器402执行时,处理器402和通信接口403用于执行ai平台100为用户训练ai模型。存储器还可以存储训练数据集。例如,存储器401中的一部分存储资源被划分成一个数据存储模块104,用于存储ai平台100所需的数据。
107.处理器402可以采用中央处理器(central processing unit,cpu),应用专用集成电路(application specific integrated circuit,asic),gpu或其任意组合。处理器402
可以包括一个或多个芯片。处理器402可以包括ai加速器,例如神经网络处理器(neural processing unit,npu)。
108.通信接口403使用例如收发器一类的收发模块,来实现计算设备400与其他设备或通信网络之间的通信。例如,可以通过通信接口403获取数据。
109.总线404可包括在计算设备400各个部件(例如,存储器401、处理器402、通信接口403)之间传送信息的通路。
110.下面结合图5描述在一种实施例中ai模型的训练方法的具体流程,以该方法由ai平台执行为例进行说明:
111.步骤501,ai平台向用户提供训练配置界面,其中,训练配置界面包括供用户选择的多种训练模式,每种训练模式表示对训练初始ai模型所需的计算节点的一种分配策略。
112.在本实施例中,用户想要使用ai平台训练ai模型,可以在ai平台中,打开训练配置界面。该训练配置界面中可以包括供用户选择的多种训练模式,每种训练模式可以表示对训练初始ai模型所需的计算节点的一种分配策略。具体的,训练配置界面不仅显示有多种训练模式,还对应每种训练模式显示有选择选项,以及针对每种训练模式的介绍,用户可以通过各种训练模式的选择选项以及针对每种训练模式的介绍,选择训练ai模型的训练模式。
113.步骤502,ai平台根据用户在训练配置界面的选择,生成至少一个训练任务。
114.在本实施例中,ai平台可以获取到用户在训练配置界面的选择,根据用户在训练配置界面的选择,以及初始ai模型,生成至少一个训练任务(task)。该至少一个训练任务用于训练初始ai模型。执行训练初始ai模型可以称为是执行一个训练工作(job),也就是说一个训练工作包括至少一个训练任务。
115.步骤503,ai平台执行至少一个训练任务以对初始ai模型进行训练,获得ai模型,获得的ai模型供用户下载或使用,以用于特定应用。
116.在本实施例中,ai平台与计算资源池相关联,计算资源池中包括用于模型训练的计算节点。由计算节点执行至少一个训练任务,以对初始ai模型进行训练,获得ai模型。计算节点将ai模型,反馈给ai平台。ai平台可以为用户提供下载ai模型的界面,用户可以通过该界面,下载ai模型,使用该ai模型执行相应的任务。或者用户可以在ai平台上上传推理数据集,由该ai模型执行对推理数据集的推理过程。
117.这样,通过本技术实施例,用户可以选择合适的训练模式,用于生成至少一个训练任务,使得分布式训练可以灵活的执行,进而可以平衡用户的训练需求和资源利用率。
118.以下针对图5的流程进行补充说明:
119.在一种可能的实现方式中,多种训练模式可以包括性能模式和共享模式。性能模式表示对初始ai模型进行训练的过程中基于一定的策略自动调整训练任务的个数。共享模式表示不同训练任务共享同一计算节点的资源。该资源可以包括gpu资源和/或显存。此处不同训练任务可以属于同一个训练工作,也可以属于不同训练工作。例如,ai平台中分别执行用户a的训练作业a和用户b的训练作业b,其中,训练作业a包括训练任务a、b,训练作业b包括训练任务c、d,用户a在训练配置界面选择了训练模式为共享模式,则ai平台可以根据训练作业a的训练任务a的容器的资源使用量,确定运行训练任务a的容器对应的计算节点的剩余资源,ai平台确定该剩余资源大于运行训练任务c的容器的资源使用量,ai平台可以
将训练任务c的容器调度到运行训练任务a的容器对应的计算节点。
120.在一种可能的实现方式中,至少一个训练任务分别运行在不同的容器上,每个容器包含了完整的运行时环境:一个训练任务,执行这个训练任务所需的全部依赖等。此处运行时是指一个程序在运行的依赖。具体的,在步骤503中,ai平台可以将至少一个训练任务分别运行的容器下发到计算资源池中的计算节点,并启动下发的容器。由容器执行至少一个训练任务,以对初始ai模型进行训练,获得ai模型。
121.在对初始ai模型进行训练的过程中,ai平台还可以向用户提供训练过程的状态信息,该状态信息可以包括执行训练任务的容器个数、每个容器的资源使用量。如图6显示,在对初始ai模型进行训练的过程中,显示了各个时间点执行训练任务的容器个数,可以使用时间和容器个数的曲线表示。并且显示了每个容器的资源使用量。这样,实时的为用户展现执行训练任务的容器个数,直观的展现了训练的性能。
122.可选的,状态信息中还可以包括执行训练任务的计算节点的个数,或者执行训练任务的计算节点的资源使用量。
123.可选的,在显示状态信息的界面中还可以包括初始ai模型的名称(如aa)、训练模式(如性能模式)使用的计算节点的规格(如8核)、训练输入、开始运行时间(如2020/9/27/10:38)等信息。
124.如图7所示,提供了用户仅选择性能模式的情况下,ai模型的训练流程示意图:
125.步骤701,ai平台向用户提供训练配置界面,其中,训练配置界面包括供用户选择的多种训练模式。用户在训练配置界面中选择性能模式时,训练配置界面还供用户输入或选择可运行训练任务的容器个数。
126.在本实施例中,ai平台可以向用户提供训练配置界面,训练配置界面包括供用户选择的多种训练模式。例如,如图8所示,训练模式的选择界面包括性能模式和共享模式、常规模式等,用户选择了性能模式。
127.在用户选择的训练模式为性能模式的情况下,该训练配置界面还提供了供用户输入或选择可运行训练任务的容器个数。可运行训练任务的容器个数是为了约束在扩缩容时,每个训练工作所能使用的容器的个数。
128.用户可以在训练配置界面中输入或者选择可运行训练任务的容器个数。具体的,训练配置界面中显示可供用户选择的容器个数,用户可以在该容器个数中,选择出可运行训练任务的容器个数。例如,可供用户选择的容器个数为1、2、4、8,用户输入或者选取1、2、4作为可运行训练任务的容器个数。或者,训练配置界面中显示容器个数范围,用户可以在该容器个数范围中,选择可运行训练任务的容器个数。例如,容器个数范围为[1,8],用户输入或者选取1、2、4作为可运行训练任务的容器个数。
[0129]
此处需要说明的是,可运行训练任务的容器个数的最大个数是用于运行训练任务的容器的最大数目,可运行训练任务的容器个数的最小个数是用于运行训练任务的容器的最小数目。限制容器个数是为了在性能模式下执行至少一个训练任务时限定弹性扩缩容的范围。
[0130]
可选的,为了更方便扩缩容处理,扩缩容时运行训练任务的容器个数的取值可以是2n,且n大于或等于0,且小于或等于目标数值,例如,目标数值可以是4。
[0131]
可选的,如图8所示,训练配置界面还显示有数据集来源,用户可以选择训练数据
集以及版本。
[0132]
可选的,如图8所示,训练配置界面还显示有容器的资源使用量。
[0133]
可选的,如图8所示,训练配置界面还显示有计费方式,用于提示用户。
[0134]
可选的,如图8所示,训练配置界面还显示有初始ai模型来源,用于显示已经选择的初始ai模型。
[0135]
可选的,如图8所示,在训练配置界面中,还对应计算资源池显示有公共资源池和专属资源池的选项。在用户选择公共资源池的情况下,公共资源池中的计算节点可以供多个训练工作使用。在用户选择专属资源池的情况下,专属资源池中的计算节点仅供用户的训练工作使用,专属资源池中每个计算节点执行多个训练任务,实现多个训练任务的资源共享,提升资源利用率。
[0136]
在用户选择公共资源池的情况下,可以按照前文中的方式进行计费。在用户选择专属资源池的情况下,是按照使用的计算节点的数目以及使用时长进行计费。
[0137]
步骤702,ai平台根据用户在训练配置界面选择的训练模式和用户输入或选择的可运行训练任务的容器个数,生成至少一个训练任务。
[0138]
在本实施例中,ai平台获取到用户在训练配置界面选择的训练模式为性能模式,ai平台可以获取在性能模式下,每个容器的资源使用量,在用户选取的训练模式仅包括性能模式的情况下,运行训练任务的容器的资源使用量是预设数值,如容器的资源使用量是单个计算节点上的所有gpu资源以及所有显存使用量、容器的资源使用量是单个计算节点上的两个gpu资源以及两个显存使用量等。ai平台可以基于当前计算资源池中空闲的计算节点、用户输入或选择的可运行训练任务的容器个数、容器的资源使用量以及初始ai模型,生成至少一个训练任务。例如,容器的资源使用量是单个计算节点上的所有gpu资源以及所有显存使用量,当前资源池中空闲16个计算节点,可运行训练任务的容器个数最大为8,ai平台可以生成8个训练任务,每个训练任务运行在一个容器上,每个容器占用一个计算节点。
[0139]
此处需要说明的是,在ai平台第一次生成训练任务时,ai平台获取可运行训练任务的容器个数的最大值,以及每个容器的资源使用量。ai平台生成该最大值个训练任务。若ai平台根据每个容器的资源使用量,确定计算资源池中当前的空闲资源可以供最大值个容器运行,则创建该最大值个容器。每个训练任务运行于一个容器上,且不同的训练任务运行于不同的容器上。若ai平台根据每个容器的资源使用量,确定计算资源池中当前的空闲资源不可以供最大值个容器运行,则确定所能运行的容器的数目,创建该数目个训练任务。由于该数目小于最大值,所以多个训练任务运行于一个容器上。
[0140]
步骤703,ai平台执行至少一个训练任务以对初始ai模型进行训练,获得ai模型。
[0141]
在本实施例中,ai平台可以将容器下发到计算资源池的计算节点上,由计算节点运行容器,实现执行至少一个训练任务,以对初始ai模型进行训练,获得ai模型。例如,在步骤702中,ai平台确定出8个训练任务,确定出8个容器用于运行不同的训练任务,每个容器分别运行于8个不同的计算节点上。利用8个计算节点实现对初始ai模型进行训练。
[0142]
在选择性能模式的情况下,在对ai模型进行训练的过程中,ai平台可以动态调整容器个数,处理可以为:
[0143]
在执行至少一个训练任务以对初始ai模型进行训练的过程中,当检测到满足弹性
扩缩容的条件时,获取计算资源池中计算资源的空闲量;根据计算资源池中计算资源的空闲量,调整至少一个训练任务的个数以及调整运行调整后的训练任务的容器的个数;在调整后的容器中运行调整后的训练任务以对初始ai模型进行训练。
[0144]
在本实施例中,ai平台在执行至少一个训练任务以对初始ai模型进行训练的过程中,ai平台可以周期性确定计算资源池的计算资源的空闲量占计算资源池中所有计算资源的比例是否高于目标数值,在高于目标数值的情况下,可以进一步获取计算资源池中各训练工作的运行信息,该运行信息包括运行时间等信息,运行阶段可以包括训练数据集加载阶段和训练阶段。ai平台可以确定计算资源池中各训练工作的剩余运行时间与已运行时间的比值,并且确定各训练工作的加速比,对于一个训练工作,加速比可以使用该训练工作最大容器个数与当前使用的容器个数的比值体现,加速比为1的训练工作说明已经是最大的容器个数,不进行调整容器个数处理。
[0145]
ai平台可以确定各训练工作的已运行时间与剩余运行时间的比值、及加速比的加权值。ai平台按照加权值从大到小的顺序进行排序,ai平台根据计算资源池中计算资源的空闲量,以及各训练工作可运行的容器个数,在顺序排列的训练工作中,确定出这些空闲量所能实现扩容的训练工作,作为容器调整对象。在前文中有说明,训练工作包括训练任务,ai平台将在步骤701中提到的至少一个训练任务作为容器调整对象时,即确定该至少一个训练任务满足扩缩容条件,ai平台可以将至少一个训练任务的最大容器个数作为调整后的容器个数。ai平台可以将训练任务的个数,调整为与调整后的容器个数相匹配。然后ai平台将新增的容器下发至计算节点,该新增的容器中运行已有的容器中调整出的训练任务。
[0146]
例如,可运行至少一个训练任务的容器个数为1、2、4。如图9所示,至少一个训练任务为1个训练任务a,该训练任务a包括4个训练进程(训练进程1、训练进程2、训练进程3和训练进程4),使用了1个容器。训练进程1、训练进程2、训练进程3和训练进程4运行于一个容器上,且该容器恰好占用一个计算节点的资源,当前占用了1个计算节点。若当前计算资源池中仅存在该1个训练任务a,该1个训练任务a可以被拆分为4个训练任务(训练任务i、训练任务j、训练任务k和训练任务o),此时每个训练任务分别包括训练进程1、训练进程2、训练进程3和训练进程4,4个训练任务分别运行于4个容器上,且每个容器位于一个计算节点,调整后相当于使用了4个容器,4个容器占用了4个计算节点。
[0147]
ai平台可以判断是否有新的训练工作,在确定存在新的训练工作时,判断计算资源池中的计算节点的计算资源是否能够执行该训练工作,在能够执行该训练工作的情况下,直接下发该训练工作的训练任务所运行的容器至计算节点即可。在不能执行该训练工作的情况下,ai平台获取计算资源池中各训练工作的运行信息,该运行信息包括运行时间等信息,运行阶段可以包括训练数据集加载阶段和训练阶段。ai平台可以确定计算资源池中各训练工作的已运行时间与剩余运行时间的比值,并且确定各训练工作的加速比,对于一个训练工作,加速比可以使用该训练工作当前使用的容器个数与最小容器个数的比值体现,加速比为1的训练工作说明已经是最小的容器个数,不进行调整容器个数处理。ai平台可以确定各训练工作的剩余运行时间与已运行时间的比值、及加速比的加权值。ai平台按照加权值从小到大的顺序进行排序,ai平台根据计算资源池中计算资源的空闲量,以及各训练工作可运行的容器个数,在顺序排列的训练工作中,确定出这些空闲量所能实现缩容的训练工作,作为容器调整对象。
[0148]
ai平台在步骤701中提到的至少一个训练任务作为容器调整对象时,即确定该至少一个训练任务满足扩缩容条件,为了保证ai平台上的训练任务可以快速的被执行完毕,ai平台可以将该至少一个训练任务的容器个数下调一个等级,作为调整后的容器个数。ai平台可以将训练任务的个数,调整为与调整后的容器个数相匹配。然后ai平台删除容器,将该容器上的训练任务调整至至少一个训练任务的其他容器上运行。
[0149]
例如,可运行至少一个训练任务的容器个数为1、2、4。如图10所示,至少一个训练任务为4个训练任务(训练任务1包括训练进程1、训练任务2包括训练进程2、训练任务3包括训练进程3和训练任务4包括训练进程4),4个训练任务使用了4个容器,每个训练任务运行于一个容器上,且每个容器恰好占用一个计算节点的资源,当前占用了4个节点,对该4个训练任务进行缩容处理,每两个训练任务(训练进程1和训练进程3属于一个训练任务a、以及训练进程2和训练进程4属于一个训练任务b)可以分别运行于1个容器上,且每个容器位于一个计算节点,调整后相当于使用了两个容器,两个容器占用了两个计算节点。
[0150]
此处需要说明的是,不管是扩容,还是缩容,性能模式的最终想要达到的目标是使得至少一个训练任务的整体预期运行时间最小。
[0151]
这样,在计算资源池中的空闲资源比较多时,对还在运行的至少一个训练任务进行扩容,加速其运行,使得其尽可能在最短的时间内完成训练,尽量不占用下一个忙时间段的计算资源,所以可以尽可能的快速完成训练。
[0152]
在一种可能的实现方式中,为了保证在扩缩容(即包括扩容和缩容)后训练精度不下降,处理可以为:
[0153]
将至少一个训练任务中的部分训练任务添加到已运行至少一个训练任务中的训练任务的目标容器中,在目标容器中串行运行多个训练任务,在训练过程中,将串行运行多个训练任务获得的模型参数的平均值作为模型参数的更新值。
[0154]
在本实施例中,在进行缩容时,容器的个数会减少。缩减掉的容器上运行至少一个训练任务中的部分训练任务,将该部分训练任务,添加到已运行至少一个训练任务中的训练任务的目标容器中。由于目标容器中本身运行有训练任务,再将部分训练任务添加至目标容器,目标容器运行多个训练任务。目标容器中串行运行该多个训练任务。ai平台将串行运行多个训练任务获取的模型参数的平均值,作为模型参数的更新值。这样,由于在目标容器运行多个训练任务时,是串行运行,所以还相当于多个训练任务是分布式执行,和原来未缩容前的执行方式相同,不会导致ai模型的训练精度降低。
[0155]
上述处理过程可以称为是批处理近似,用于模拟分布式n个容器运行任务,相当于在缩容时,通过模拟的方法模仿整数倍个容器的分布式训练,可以保证精度不下降。例如,在图10的示例中,训练进程1和训练进程3在调整后属于一个训练任务a,训练进程2和训练进程4在调整后属于一个训练任务b,训练任务a运行在容器a上,训练任务b运行在容器b上,容器a串行运行训练进程1和训练进程3,容器b串行运行训练进程2和训练进程4。
[0156]
再例如,在16个容器上,每个容器使用64个数据训练ai模型,将16个容器中每个容器训练获得的模型参数平均,获得ai模型。在缩容至一个容器中,也是串行使用16组数据(每组数据为64个数据)训练ai模型,最终将获得的模型参数平均,获得最终的ai模型,所以ai模型的训练精度不会降低。
[0157]
这样,按照串行运行每个调整前的训练任务,可以保证在缩容后训练精度不下降。
[0158]
在一种可能的实现方式中,为了保证在扩缩容后训练精度不下降,ai平台可以进行自适应的参数调整,ai平台可以使用历史的训练经验、离线测试的参数组等方式,在进行扩缩容的同时,自适应的调整相应的超参数,使得训练精度保持不变。
[0159]
如图11所示,提供了用户仅选择共享模式的情况下,ai模型的训练流程示意图:
[0160]
步骤1101,ai平台向用户提供训练配置界面,其中,训练配置界面包括供用户选择的多种训练模式。用户在训练配置界面中选择共享模式时,训练配置界面还供用户输入或选择运行训练任务的容器的资源使用量。
[0161]
在本实施例中,ai平台可以向用户提供训练配置界面,训练配置界面包括供用户选择的多种训练模式。训练配置界面显示了用户可选择的资源使用量,用户可以在该资源使用量中,选择或输入可运行训练任务对应的容器的资源使用量。或者,该训练配置界面显示了资源使用量范围,用户可以在该资源使用量范围中,选择或输入可运行训练任务对应的容器的资源使用量。例如,资源使用量范围为0.1个gpu至1个gpu,用户可以选择0.5个gpu。
[0162]
步骤1102,ai平台根据用户在训练配置界面选择的训练模式和用户输入或选择运行训练任务的容器的资源使用量,生成至少一个训练任务。
[0163]
在本实施例中,ai平台可以获取到用户在训练配置界面选择的训练模式为共享模式,ai平台可以获取在共享模式下,每个容器的资源使用量,在用户选取的训练模式仅包括共享模式的情况下,运行训练任务的容器的资源使用量是预设数值。ai平台可以基于当前计算资源池中空闲的计算节点、预设的容器个数、容器的资源使用量以及初始ai模型,生成至少一个训练任务。此处预设的容器个数,可以是ai平台为该至少一个训练任务规定的可使用容器个数,也可以是用户指定的该至少一个训练任务的容器个数。
[0164]
可选的,运行训练任务的容器的资源使用量包括小于单个gpu的gpu资源使用量和/或小于单个显存的显存使用量。这样,可以更细化的划分计算节点上的计算资源,可以使资源利用率更高。
[0165]
步骤1103,ai平台执行至少一个训练任务以对初始ai模型进行训练,获得ai模型。
[0166]
可选的,为了减少资源碎片化,步骤1103的处理可以为:
[0167]
根据共享模式下至少一个训练任务运行的每个容器的资源使用量和计算资源池中各计算节点的剩余资源,确定每个训练任务的容器运行的计算节点;在确定的计算节点上启动至少一个训练任务的容器,对初始ai模型进行训练。
[0168]
在本实施例中,ai平台可以统计计算资源池中各计算节点的剩余资源,并且获取至少一个训练任务运行的每个容器的资源使用量。若某个已被占用部分资源的计算节点的剩余资源大于该每个容器的资源使用量,则ai平台可以将某个容器下发至该计算节点。若所有已被占用部分资源的计算节点的剩余资源均小于该每个容器的资源使用量,则ai平台可以将至少一个训练任务运行的容器下发至未被占用资源的计算节点。按照这种方式,ai平台将容器下发至计算节点。然后ai平台在计算节点上启动容器,即能实现对初始ai模型进行训练。
[0169]
可选的,为了减少资源碎片化,步骤1103的另一种处理方式可以为:
[0170]
根据第二模式下至少一个训练任务运行的容器的资源使用量确定每个容器对应的计算节点的剩余资源;利用每个容器对应的计算节点的剩余资源,运行一个或多个其他
训练任务。
[0171]
在本实施例中,ai平台可以使用第二模式下至少一个训练任务运行的容器的资源使用量,确定出该至少一个训练任务运行的容器对应的计算节点的剩余资源。ai平台在进行其它训练工作时,该至少一个训练任务使用的某个计算节点的剩余资源,够执行一个或多个其它训练任务,则可以该计算节点的剩余资源,运行一个或多个其它训练任务,实现同一计算节点的资源共享。
[0172]
这样,在共享模式下,在保证容器的资源需求的情况下,尽可能的使用已经被占用部分资源的计算节点,可以减少资源碎片化,且可以提升资源的整体利用率。
[0173]
需要说明的是,在图11的流程中,由于共享模式是多个容器共享计算节点的资源,所以在初始ai模型中,需要加入显存限制的功能,以避免多个容器共享计算节点时,由于单个任务超用显存,而导致其他容器出现内存泄露错误。
[0174]
如图12所示,提供了用户选择性能模式和共享模式的情况下,ai模型的训练流程示意图:
[0175]
步骤1201,ai平台向用户提供训练配置界面,其中,训练配置界面包括供用户选择的多种训练模式。用户在训练配置界面中选择性能模式和共享模式时,训练配置界面还供用户输入或选择可运行训练任务的容器个数和运行训练任务的容器的资源使用量。
[0176]
步骤1201的处理过程,是步骤701和步骤1101相结合后的处理过程,可参见步骤701和步骤1101的描述,此处不再赘述。
[0177]
步骤1202,ai平台根据用户在训练配置界面选择的训练模式、用户输入或选择的可运行训练任务的容器个数、和用户输入或选择运行训练任务的容器的资源使用量,生成至少一个训练任务。
[0178]
在本实施例中,ai平台可以获取到用户在训练配置界面选择的训练模式为共享模式,ai平台可以获取在共享模式下,每个容器的资源使用量,在用户选取的训练模式仅包括共享模式的情况下,运行训练任务的容器的资源使用量是预设数值。ai平台可以基于当前计算资源池中空闲的计算节点、用户输入或选择的可运行训练任务的容器个数,容器的资源使用量以及初始ai模型,生成至少一个训练任务。此处,ai平台所确定出的容器个数属于用户输入或选择的可运行训练任务的容器个数。
[0179]
可选的,运行训练任务的容器的资源使用量包括小于单个gpu的gpu资源使用量和/或小于单个显存的显存使用量。这样,可以更细化的划分计算节点上的计算资源,可以使资源利用率更高。
[0180]
步骤1203,ai平台执行至少一个训练任务以对初始ai模型进行训练,获得ai模型。
[0181]
在步骤1203中,可以结合图7的流程中动态扩缩容的处理,以及图11的流程中的共享资源。具体描述参见图7和图11中的描述,此处不再赘述。
[0182]
这样,在共享模式下,在保证容器的资源需求的情况下,尽可能的使用已经被占用部分资源的计算节点,可以减少资源碎片化,且提升资源的整体利用率,降低单个用户训练ai模型的成本。而且在性能模式下,通过动态的调整容器的个数,可以尽可能加快训练,提升训练ai模型的效率。
[0183]
另外,针对图7、图11和图12的流程,由于训练数据集存储在obs中,为了减少每个容器从obs中下载训练数据集,在单个容器首先加载训练工作的训练数据时,将整个训练数
据集从obs下载到计算节点加载的存储空间中,该存储空间可以是固态存储(solid state storage,sss)。这样,后续执行该训练工作的每个计算节点可以直接从该存储空间中读取数据,如通过扩容新增的容器可以直接从该存储空间中读取数据,减少从obs中重新下载训练数据集所需的时间。
[0184]
需要说明的是,本技术实施例中,容器是ai平台通过拉取镜像及初始ai模型生成的。另外,通过在容器上运行训练任务,由于容器是一个隔离比较好,所以即使在同一个节点上部署多个容器,各个容器上运行的训练任务不会相互干扰。
[0185]
通过本技术实施例,在ai平台中提供了多种训练模式供用户选择,用户可以通过选择合适的训练模式,使得分布式训练可以灵活的执行,进而可以平衡用户的训练需求和资源利用率。
[0186]
图1是本技术实施例提供的ai模型的训练装置的结构图,该装置应用于ai平台,该ai平台与计算资源池相关联,计算资源池包括用于模型训练的计算节点。该装置可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。本技术实施例提供的装置可以实现本技术实施例图7、图11、图12所述的流程,该装置包括:训练配置模块102、任务管理模块103和展示模块105,其中:
[0187]
训练配置模块102,用于向用户提供训练配置界面,其中,所述训练配置界面包括供所述用户选择的多种训练模式,每种训练模式表示对训练初始ai模型所需的计算节点的一种分配策略,具体可以用于实现步骤701的训练配置功能以及执行步骤701包含的隐含步骤;
[0188]
任务管理模块103,用于:
[0189]
根据所述用户在所述训练配置界面的选择,生成至少一个训练任务;
[0190]
执行所述至少一个训练任务以对所述初始ai模型进行训练,获得ai模型,获得的所述ai模型供所述用户下载或使用,具体可以用于实现步骤702和步骤703的任务管理功能以及执行步骤702和步骤703包含的隐含步骤。
[0191]
在一种可能的实现方式中,所述多种训练模式包括第一模式和/或第二模式,所述第一模式表示对所述初始ai模型进行训练的过程中自动调整训练任务的个数,所述第二模式表示不同训练任务共享同一计算节点的资源。
[0192]
在一种可能的实现方式中,所述至少一个训练任务运行在容器上,所述装置还包括:
[0193]
展示模块105,用于在对所述初始ai模型进行训练的过程中,向所述用户提供训练过程的状态信息,其中,所述状态信息包括以下信息中的至少一种信息:执行训练任务的容器个数,每个容器的资源使用量,执行训练任务的计算节点的个数,和执行训练任务的计算节点的资源使用量。
[0194]
在一种可能的实现方式中,所述多种训练模式包括第一模式和第二模式,所述任务管理模块103,用于:
[0195]
根据所述用户在所述训练配置界面选择的第一模式和第二模式,生成至少一个训练任务。
[0196]
在一种可能的实现方式中,当所述用户在所述训练配置界面中选择所述第一模式时,所述训练配置界面还供所述用户输入或选择可运行训练任务的容器个数;
[0197]
所述任务管理模块103,用于:
[0198]
根据所述用户在所述训练配置界面选择的训练模式和所述用户输入或选择的可运行训练任务的容器个数,生成至少一个训练任务。
[0199]
在一种可能的实现方式中,当所述用户在所述训练配置界面中选择所述第二模式时,所述训练配置界面还供所述用户输入或选择运行训练任务的容器的资源使用量;
[0200]
所述任务管理模块103,用于:
[0201]
根据所述用户在所述训练配置界面选择的训练模式和所述用户输入或选择运行训练任务的容器的资源使用量,生成至少一个训练任务。
[0202]
在一种可能的实现方式中,所述运行训练任务的容器的资源使用量包括小于单个gpu的gpu资源使用量和/或小于单个显存的显存使用量。
[0203]
在一种可能的实现方式中,在选择所述第一模式的情况下,所述任务管理模块103,用于:
[0204]
在执行所述至少一个训练任务以对所述初始ai模型进行训练的过程中,当检测到满足弹性扩缩容的条件时,获取所述计算资源池中计算资源的空闲量;
[0205]
根据所述计算资源池中计算资源的空闲量,调整所述至少一个训练任务的个数以及调整用于运行训练任务的容器的个数;
[0206]
在调整后的容器中运行调整后的训练任务以对所述初始ai模型进行训练。
[0207]
在一种可能的实现方式中,所述任务管理模块103,用于:
[0208]
将所述至少一个训练任务中的部分训练任务添加到已运行所述至少一个训练任务中的训练任务的目标容器中,在所述目标容器中串行运行多个训练任务,在训练过程中,将串行运行所述多个训练任务获得的模型参数的平均值作为模型参数的更新值。
[0209]
在一种可能的实现方式中,在选择所述第二模式的情况下,所述任务管理模块103,还用于:
[0210]
根据所述第二模式下所述至少一个训练任务运行的容器的资源使用量确定每个容器对应的计算节点的剩余资源;
[0211]
利用所述每个容器对应的计算节点的剩余资源,运行一个或多个其他训练任务。
[0212]
本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本技术各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0213]
本技术还提供一种如图4所示的计算设备400,计算设备400中的处理器402读取存储器401存储的程序和数据集合以执行前述ai平台执行的方法。
[0214]
由于本技术提供的ai平台100中的各个模块可以分布式地部署在同一环境或不同环境中的多个计算机上,因此,本技术还提供一种如图13所示的计算设备,该计算设备包括多个计算机1300,每个计算机1300包括存储器1301、处理器1302、通信接口1303以及总线1304。其中,存储器1301、处理器1302、通信接口1303通过总线1304实现彼此之间的通信连接。
[0215]
存储器1301可以是只读存储器,静态存储设备,动态存储设备或者随机存取存储器。存储器1301可以存储程序,当存储器1301中存储的程序被处理器502执行时,处理器
1302和通信接口1303用于执行ai平台训练ai模型的部分方法。存储器还可以存储训练数据集,例如,存储器1301中的一部分存储资源被划分成一个数据集存储模块,用于存储ai平台所需的训练数据集。
[0216]
处理器1302可以采用通用的中央处理器,微处理器,应用专用集成电路,图形处理器或者一个或多个集成电路。
[0217]
通信接口1303使用例如但不限于收发器一类的收发模块,来实现计算机1300与其他设备或通信网络之间的通信。例如,可以通过通信接口1303获取训练数据集。
[0218]
总线504可包括在计算机1300各个部件(例如,存储器1301、处理器1302、通信接口1303)之间传送信息的通路。
[0219]
上述每个计算机1300间通过通信网络建立通信通路。每个计算机1300上运行算法管理模块101、训练配置模块102、任务管理模块103、数据存储模块104和展示模块105中的任意一个或多个。任一计算机1300可以为云数据中心中的计算机(例如,服务器),或边缘数据中心中的计算机,或终端计算设备。
[0220]
上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
[0221]
在上述实施例中,可以全部或部分地通过软件、硬件或者其组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。提供ai平台的计算机程序产品包括一个或多个进ai平台的计算机指令,在计算机上加载和执行这些计算机程序指令时,全部或部分地产生按照本技术实施例图7、图11或图12所述的流程或功能。
[0222]
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、双绞线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质存储有提供ai平台的计算机程序指令。所述计算机可读存储介质可以是计算机能够存取的任何介质或者是包含一个或多个介质集成的服务器、数据中心等数据存储设备。所述介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,光盘)、或者半导体介质(如固态硬盘)。
技术特征:
1.一种人工智能ai模型的训练方法,其特征在于,所述方法应用于ai平台,所述ai平台与计算资源池相关联,所述计算资源池包括用于模型训练的计算节点,包括:向用户提供训练配置界面,其中,所述训练配置界面包括供所述用户选择的多种训练模式,每种训练模式表示对训练初始ai模型所需的计算节点的一种分配策略;根据所述用户在所述训练配置界面的选择,生成至少一个训练任务;执行所述至少一个训练任务以对所述初始ai模型进行训练,获得ai模型,获得的所述ai模型供所述用户下载或使用。2.根据权利要求1所述的方法,其特征在于,所述多种训练模式包括第一模式和/或第二模式,所述第一模式表示对所述初始ai模型进行训练的过程中自动调整训练任务的个数,所述第二模式表示不同训练任务共享同一计算节点的资源。3.根据权利要求1或2所述的方法,其特征在于,所述至少一个训练任务运行在容器上,所述方法还包括:在对所述初始ai模型进行训练的过程中,向所述用户提供训练过程的状态信息,其中,所述状态信息包括以下信息中的至少一种信息:执行训练任务的容器个数,每个容器的资源使用量,执行训练任务的计算节点的个数,和执行训练任务的计算节点的资源使用量。4.根据权利要求2或3所述的方法,其特征在于,所述多种训练模式包括第一模式和第二模式,根据所述用户在所述训练配置界面的选择,生成至少一个训练任务,包括:根据所述用户在所述训练配置界面选择的第一模式和第二模式,生成至少一个训练任务。5.根据权利要求2-4任一项所述的方法,其特征在于,当所述用户在所述训练配置界面中选择所述第一模式时,所述训练配置界面还供所述用户输入或选择可运行训练任务的容器个数;所述根据所述用户在所述训练配置界面的选择,生成至少一个训练任务,包括:根据所述用户在所述训练配置界面选择的训练模式和所述用户输入或选择的可运行训练任务的容器个数,生成至少一个训练任务。6.根据权利要求2-5任一项所述的方法,其特征在于,当所述用户在所述训练配置界面中选择所述第二模式时,所述训练配置界面还供所述用户输入或选择运行训练任务的容器的资源使用量;所述根据所述用户在所述训练配置界面的选择,生成至少一个训练任务,包括:根据所述用户在所述训练配置界面选择的训练模式和所述用户输入或选择运行训练任务的容器的资源使用量,生成至少一个训练任务。7.根据权利要求5或6所述的方法,其特征在于,所述运行训练任务的容器的资源使用量包括小于单个图形处理器gpu的gpu资源使用量和/或小于单个显存的显存使用量。8.根据权利要求2-7任一项所述的方法,其特征在于,在选择所述第一模式的情况下,所述执行所述至少一个训练任务以对所述初始ai模型进行训练,包括:在执行所述至少一个训练任务以对所述初始ai模型进行训练的过程中,当检测到满足弹性扩缩容的条件时,获取所述计算资源池中计算资源的空闲量;根据所述计算资源池中计算资源的空闲量,调整所述至少一个训练任务的个数以及调整用于运行训练任务的容器的个数;
在调整后的容器中运行调整后的训练任务以对所述初始ai模型进行训练。9.根据权利要求8所述的方法,其特征在于,所述调整所述至少一个训练任务的个数以及调整用于运行训练任务的容器的个数,在调整后的容器中运行所述调整后的训练任务以对所述初始ai模型进行训练,包括:将所述至少一个训练任务中的部分训练任务添加到已运行所述至少一个训练任务中的训练任务的目标容器中,在所述目标容器中串行运行多个训练任务,在训练过程中,将串行运行所述多个训练任务获得的模型参数的平均值作为模型参数的更新值。10.根据权利要求2-9任一项所述的方法,其特征在于,在选择所述第二模式的情况下,所述方法包括:根据所述第二模式下所述至少一个训练任务运行的容器的资源使用量确定每个容器对应的计算节点的剩余资源;利用所述每个容器对应的计算节点的剩余资源,运行一个或多个其他训练任务。11.一种人工智能ai模型的训练装置,其特征在于,所述装置应用于ai平台,所述ai平台与计算资源池相关联,所述计算资源池包括用于模型训练的计算节点,包括:训练配置模块,用于向用户提供训练配置界面,其中,所述训练配置界面包括供所述用户选择的多种训练模式,每种训练模式表示对训练初始ai模型所需的计算节点的一种分配策略;任务管理模块,用于:根据所述用户在所述训练配置界面的选择,生成至少一个训练任务;执行所述至少一个训练任务以对所述初始ai模型进行训练,获得ai模型,获得的所述ai模型供所述用户下载或使用。12.根据权利要求11所述的装置,其特征在于,所述多种训练模式包括第一模式和/或第二模式,所述第一模式表示对所述初始ai模型进行训练的过程中自动调整训练任务的个数,所述第二模式表示不同训练任务共享同一计算节点的资源。13.根据权利要求11或12所述的装置,其特征在于,所述至少一个训练任务运行在容器上,所述装置还包括:展示模块,用于在对所述初始ai模型进行训练的过程中,向所述用户提供训练过程的状态信息,其中,所述状态信息包括以下信息中的至少一种信息:执行训练任务的容器个数,每个容器的资源使用量,执行训练任务的计算节点的个数,和执行训练任务的计算节点的资源使用量。14.根据权利要求12或13所述的装置,其特征在于,所述多种训练模式包括第一模式和第二模式,所述任务管理模块,用于:根据所述用户在所述训练配置界面选择的第一模式和第二模式,生成至少一个训练任务。15.根据权利要求12-14任一项所述的装置,其特征在于,当所述用户在所述训练配置界面中选择所述第一模式时,所述训练配置界面还供所述用户输入或选择可运行训练任务的容器个数;所述任务管理模块,用于:根据所述用户在所述训练配置界面选择的训练模式和所述用户输入或选择的可运行
训练任务的容器个数,生成至少一个训练任务。16.根据权利要求12-15任一项所述的装置,其特征在于,当所述用户在所述训练配置界面中选择所述第二模式时,所述训练配置界面还供所述用户输入或选择运行训练任务的容器的资源使用量;所述任务管理模块,用于:根据所述用户在所述训练配置界面选择的训练模式和所述用户输入或选择运行训练任务的容器的资源使用量,生成至少一个训练任务。17.根据权利要求15或16所述的装置,其特征在于,所述运行训练任务的容器的资源使用量包括小于单个图形处理器gpu的gpu资源使用量和/或小于单个显存的显存使用量。18.根据权利要求12-17任一项所述的装置,其特征在于,在选择所述第一模式的情况下,所述任务管理模块,用于:在执行所述至少一个训练任务以对所述初始ai模型进行训练的过程中,当检测到满足弹性扩缩容的条件时,获取所述计算资源池中计算资源的空闲量;根据所述计算资源池中计算资源的空闲量,调整所述至少一个训练任务的个数以及调整用于运行训练任务的容器的个数;在调整后的容器中运行调整后的训练任务以对所述初始ai模型进行训练。19.根据权利要求18所述的装置,其特征在于,所述任务管理模块,用于:将所述至少一个训练任务中的部分训练任务添加到已运行所述至少一个训练任务中的训练任务的目标容器中,在所述目标容器中串行运行多个训练任务,在训练过程中,将串行运行所述多个训练任务获得的模型参数的平均值作为模型参数的更新值。20.根据权利要求12-19任一项所述的装置,其特征在于,在选择所述第二模式的情况下,所述任务管理模块,还用于:根据所述第二模式下所述至少一个训练任务运行的容器的资源使用量确定每个容器对应的计算节点的剩余资源;利用所述每个容器对应的计算节点的剩余资源,运行一个或多个其他训练任务。21.一种计算设备,其特征在于,所述计算设备包括存储器和处理器,所述存储器用于存储计算机指令;所述处理器执行所述存储器存储的计算机指令,以执行上述权利要求1-10中任一项所述的方法。22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被计算设备执行时,所述计算设备执行上述权利要求1-10中任一项所述的方法。
技术总结
本申请提供了一种AI模型的训练方法、装置、计算设备和存储介质,属于人工智能技术领域。该方法应用于AI平台,AI平台与计算资源池相关联,计算资源池包括用于模型训练的计算节点,该方法包括:向用户提供训练配置界面,训练配置界面包括供用户选择的多种训练模式,每种训练模式表示对训练初始AI模型所需的计算节点的一种分配策略,根据用户在训练配置界面的选择,生成至少一个训练任务,执行该至少一个训练任务以对初始AI模型进行训练,获得AI模型,获得的AI模型供用户下载或使用。采用本申请,可以更灵活地执行分布式训练。可以更灵活地执行分布式训练。可以更灵活地执行分布式训练。
技术研发人员:朱疆成 黄哲思 吴仁科 白小龙 杨兵兵 李亿 郑华 戴宗宏
受保护的技术使用者:华为云计算技术有限公司
技术研发日:2020.09.29
技术公布日:2022/3/7