目前,我们有一个在 AWS Sagemaker 上运行的系统,其中多个单位拥有自己经过训练的机器学习模型工件(使用带有 Sagemaker SKLearn 估计器的 SKLearn 训练脚本)。通过使用 Sagemaker 的多模型端点,我们能够在单个实例上托管所有这些单元。我们面临的问题是,我们需要扩展这个系统,以便我们可以为数十万个单元训练单个模型,然后将生成的模型工件托管在多模型端点上。但是,Sagemaker 对可以并行训练的模型数量有限制(我们的限制是 30)。除了批量训练我们的模型之外,有谁知道如何在 AWS Sagemaker 中实现一个系统,从而对于数十万个单元,我们可以为每个单元拥有一个单独的经过训练的模型工件?有没有办法使用 SKLearn 估计器为 1 个 sagemaker 训练作业输出多个模型工件?此外,提交训练脚本时,Sagemaker如何利用多个CPU?这是否必须在训练脚本/估计器对象中指定,还是自动处理?
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
以下是一些想法:
1. 有谁知道如何在 AWS Sagemaker 中实现一个系统,从而对于数十万个单元,我们可以为每个单元拥有一个单独的经过训练的模型工件?有没有办法使用 SKLearn 估计器为 1 个 sagemaker 训练作业输出多个模型工件?
我不知道 30 个训练作业并发数是否是一个硬性限制,如果它是一个障碍,您应该尝试打开支持票询问是否是这样,并尝试提高它。否则,正如您所指出的,您可以尝试在一项作业中训练多个模型,并生成多个工件,您可以 (a) 手动发送到 S3,或 (b) 保存,以便将opt/ml/model
它们全部发送到模型。 S3 中的 tar.gz 工件。请注意,如果这个工件变得太大,这可能会变得不切实际
2. 提交训练脚本时,Sagemaker如何利用多个CPU?这是否必须在训练脚本/估计器对象中指定,还是自动处理?
这取决于您使用的训练容器的类型。SageMaker 内置容器由 Amazon 团队开发,旨在高效利用可用资源。如果您在 Sklearn 容器中使用自己的代码(例如自定义 python),则您有责任确保您的代码高效编写并使用可用的硬件。因此框架的选择非常重要:)例如,一些sklearn模型支持显式使用多个CPU(例如随机森林n_jobs
中的参数),但我不认为Sklearn原生支持GPU、多GPU或多节点训练。
添加回答
举报
0/150
提交
取消