【问题标题】:AWS Sagemaker Multiple Training JobsAWS Sagemaker 多项训练作业
【发布时间】:2021-02-08 17:04:33
【问题描述】:

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

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

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

除了批量训练我们的模型之外,有没有人知道如何在 AWS Sagemaker 中实施一个系统,从而为数十万个单元提供一个单独的训练模型工件?

有没有办法使用 SKLearn 估计器为 1 个 sagemaker 训练作业输出多个模型工件?

此外,Sagemaker 在提交训练脚本时如何利用多个 CPU?这必须在训练脚本/估计器对象中指定还是自动处理?

【问题讨论】:

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


    【解决方案1】:

    这里有一些想法:

    1.有没有人知道如何在 AWS Sagemaker 中实施一个系统,对于数十万个单元,我们可以为每个单元拥有一个单独的训练模型工件?有没有办法使用 SKLearn 估计器为 1 个 sagemaker 训练作业输出多个模型工件?

    我不知道 30-training 作业并发是否是硬限制,如果它是一个障碍,你应该尝试打开支持票询问它是否是并尝试提高它。否则,正如您可以指出的那样,您可以尝试在一项工作中训练多个模型,并生成多个工件,您可以 (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 或多-节点训练。

    【讨论】:

    • 感谢您的回复,您几乎证实了我们的想法
    • 谢谢奥利维尔。我们也是这么想的:)
    • RAPIDS cuML 是一个 GPU 机器学习库,具有可与 SageMaker 一起使用的类似 scikit-learn 的 API。 GPU 加速的估计器在大型数据集上通常要快得多。此页面可能有一些值得探索的链接:rapids.ai/cloud.html#AWS-Sagemaker
    猜你喜欢
    • 2018-10-04
    • 2020-05-25
    • 2020-06-29
    • 2020-07-17
    • 2021-04-18
    • 1970-01-01
    • 2021-05-22
    • 2021-02-14
    • 1970-01-01
    相关资源
    最近更新 更多