AWS SageMaker非常大的数据集

时间:2018-03-19 20:49:47

标签: amazon-web-services amazon-sagemaker

我有一个500GB的csv文件和1.5 TB数据的mysql数据库,我想运行aws sagemaker分类和回归算法以及随机林。

可以为sagemaker提供支持吗?可以批量阅读和训练模型吗?任何一个例子

3 个答案:

答案 0 :(得分:3)

Amazon Sagemaker 旨在帮助您扩展培训活动。对于大型数据集,您可能需要考虑两个主要方面:

  • 存储和访问数据的方式,
  • 实际的训练并行性。

数据存储:S3 是存储训练数据的最具成本效益的方式。要获得更快的启动和训练时间,您可以考虑以下几点:

  • 如果您的数据已经存储在 Amazon S3 上,您可能首先需要考虑利用 Pipe mode 和内置算法或 bringing your own。但是 Pipe 模式并不是一直适用,例如,如果您的算法需要在一个 epoch 内回溯或向前跳过(底层 FIFO 不支持 lseek() 操作)或者如果您的训练不容易解析来自流媒体源的数据集。
  • 在这些情况下,您可能需要利用 Amazon FSx for Lustre and Amazon EFS file systems。如果您的训练数据已经在 Amazon EFS 中,我建议将其用作数据源;否则,请选择 Amazon FSx for Lustre

训练并行性:对于大型数据集,您可能希望在不同的 GPU 上进行训练。在这种情况下,请考虑以下事项:

  • 如果您的培训已经准备好 Horovod,您可以使用 Amazon SageMaker (notebook)。
  • 12 月,AWS 发布了 managed data parallelism,它简化了在多个 GPU 上的并行训练。截至今天,它可用于 TensorFlow 和 PyTorch。

(奖励)成本优化:不要忘记利用 Managed Spot training 节省高达 90% 的计算成本。

您会在 Amazon SageMaker 分布式训练 documentation page

上找到其他示例

答案 1 :(得分:2)

亚马逊SageMaker专为此类规模而设计,可以使用它来训练非常大的数据集。要利用服务的可扩展性,您应该考虑对当前实践进行一些修改,主要是围绕分布式培训。

如果你想使用分布式培训来加快培训速度(“单个实例100小时的成本与100个实例中的1小时完全相同,只需要快100倍”),更具可扩展性(“如果你有10次更多的数据,你只需添加10倍的实例和一切正常工作“)更可靠,因为每个实例只处理一小部分数据集或模型,并且不会超出磁盘或内存空间。

如何以分布式方式实现ML算法并不明显,这仍然是高效和准确的。 Amazon SageMaker具有经典ML算法的现代实现,例如支持分布式训练的线性学习器,K均值,PCA,XGBoost等,可以扩展到这样的数据集大小。从一些基准测试中,与其他分布式培训实施(如Spark MLLib)相比,这些实施可以快10倍。您可以在此笔记本中看到一些示例:https://github.com/awslabs/amazon-sagemaker-workshop/blob/master/notebooks/video-game-sales-xgboost.ipynb

比例尺的另一个方面是数据文件。数据不应位于单个文件中,因为它限制了在用于分布式培训的群集中分发数据的能力。使用SageMaker,您可以决定如何使用Amazon S3中的数据文件。它可以处于完全复制模式,其中所有数据都复制到所有工作人员,但也可以通过密钥进行分片,在工作人员之间分配数据,并且可以进一步加快培训速度。您可以在此笔记本中看到一些示例:https://github.com/awslabs/amazon-sagemaker-examples/tree/master/advanced_functionality/data_distribution_types

答案 2 :(得分:1)

您可以将SageMaker用于大规模机器学习任务!它是专为此而设计的。我开发了这个开源项目https://github.com/Kenza-AI/sagify(sagify),它是一个CLI工具,可以帮助您以非常简单的方式在SageMaker上训练和部署机器学习/深度学习模型。无论我使用什么库(Keras,Tensorflow,scikit-learn,LightFM等),我都设法训练和部署我的所有ML模型

相关问题