这是一个基本的 AWS Sagemaker 问题。当我使用 Sagemaker 的一种内置算法进行训练时,我可以通过增加训练算法的 instance_count 参数来利用将作业分配到多个实例的巨大加速。但是,当我打包自己的自定义算法时,增加实例数似乎只是在每个实例上重复训练,导致没有加速。
我怀疑当我打包自己的算法时,我需要做一些特别的事情来控制它如何以不同方式处理我的自定义 train() 函数中的特定实例的训练(否则,它如何知道工作应该如何分发?),但我无法在网上找到有关如何执行此操作的任何讨论。
有谁知道如何处理这个?非常感谢您提前。
具体示例:=> 它在标准算法中运行良好:我验证了在第一个记录的 sagemaker 示例中增加 train_instance_count 可以加快速度:https ://docs.aws.amazon.com/sagemaker/latest/dg/ex1-train -model-create-training-job.html
=> 它在我的自定义算法中不起作用。我尝试采用标准的 sklearn build-your-own-model 示例,并在训练中添加一些额外的 sklearn 变体,然后打印出结果进行比较。当我增加传递给 Estimator 对象的 train_instance_count 时,它会在每个实例上运行相同的训练,因此输出会在每个实例中重复(结果的打印输出是重复的)并且没有加速。这是 sklearn 示例库:https ://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb 。本笔记本中 Estimator 对象的第三个参数是让您控制训练实例数量的原因。