我们当前有一个在AWS Sagemaker上运行的系统,其中几个单元具有自己训练有素的机器学习模型工件(使用带有Sagemaker SKLearn估计器的SKLearn训练脚本)。
通过使用Sagemaker的多模型端点,我们可以将所有这些单元托管在一个实例上。
我们遇到的问题是,我们需要扩大该系统的规模,以便可以训练成千上万个单元的单个模型,然后将生成的模型工件托管在多模型端点上。但是,Sagemaker限制了您可以并行训练的模型数量(我们的限制是30个)。
除了分批训练我们的模型之外,没有人有任何想法如何在AWS Sagemaker中实施系统,从而对于成千上万的单位,我们可以为每个单位拥有单独的训练过的模型工件?
是否有一种方法可以通过使用SKLearn估计器为一项贤哲训练工作输出多个模型工件?
此外,提交培训脚本时,Sagemaker如何利用多个CPU?是否必须在训练脚本/估计器对象中指定此参数,或者是否可以自动处理?
答案 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或多节点训练。