AWS Sagemaker多项培训工作

时间:2020-10-26 12:30:39

标签: python amazon-web-services machine-learning scikit-learn amazon-sagemaker

我们当前有一个在AWS Sagemaker上运行的系统,其中几个单元具有自己训练有素的机器学习模型工件(使用带有Sagemaker SKLearn估计器的SKLearn训练脚本)。

通过使用Sagemaker的多模型端点,我们可以将所有这些单元托管在一个实例上。

我们遇到的问题是,我们需要扩大该系统的规模,以便可以训练成千上万个单元的单个模型,然后将生成的模型工件托管在多模型端点上。但是,Sagemaker限制了您可以并行训练的模型数量(我们的限制是30个)。

除了分批训练我们的模型之外,没有人有任何想法如何在AWS Sagemaker中实施系统,从而对于成千上万的单位,我们可以为每个单位拥有单独的训练过的模型工件?

是否有一种方法可以通过使用SKLearn估计器为一项贤哲训练工作输出多个模型工件?

此外,提交培训脚本时,Sagemaker如何利用多个CPU?是否必须在训练脚本/估计器对象中指定此参数,或者是否可以自动处理?

1 个答案:

答案 0 :(得分:2)

以下是一些想法:

1。有没有人有任何想法如何在AWS Sagemaker中实施一个系统,对于成千上万个单位,我们可以为每个单位拥有一个单独的训练过的模型工件?有没有一种方法可以通过使用SKLearn估计器为一项贤哲训练工作输出多个模型工件?

我不知道接受30项培训的工作并发性是否有硬性限制,如果这是一种阻碍,那么您应该尝试打开支持通知单以询问是否存在并尝试将其提高。否则,您可以指出,您可以尝试在一项工作中训练多个模型,并产生多个工件,您可以(a)手动将其发送到S3,或(b)保存到opt/ml/model以使它们都发送到S3中的model.tar.gz工件。请注意,如果此伪像太大,则可能不切实际

2。提交培训脚本时,Sagemaker如何利用多个CPU?

是必须在训练脚本/估计器对象中指定还是自动处理?

这取决于您使用的训练容器的类型。 SageMaker内置容器是由Amazon团队开发的,旨在有效利用可用资源。如果您在Sklearn容器中使用自己的代码(例如自定义python),则有责任确保代码被有效地编写并使用可用的硬件。因此,框架的选择非常重要:)例如,某些sklearn模型明确支持使用多个CPU(例如random forest中的n_jobs参数),但我不认为Sklearn本身就支持GPU,多-GPU或多节点训练。