5

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

aws sagemaker 可以支持吗?可以分批或分块读取和训练模型吗?任何例子

4

3 回答 3

4

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

如果您想使用分布式训练来实现更快的训练(“100 小时的单个实例的成本与 1 小时的 100 个实例的成本完全相同,只是快 100 倍”),更具可扩展性(“如果您有 10 倍的数据,您只需添加 10 倍以上的实例,一切都正常运行”)并且更可靠,因为每个实例只处理一小部分数据集或模型,并且不会耗尽磁盘或内存空间。

如何以分布式方式实现仍然高效且准确的 ML 算法并不明显。Amazon SageMaker 具有支持分布式训练的经典 ML 算法(例如 Linear Learner、K-means、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

于 2018-03-24T14:27:48.613 回答
3

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

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

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

  • 如果您的数据已经存储在 Amazon S3 上,您可能需要首先考虑利用具有内置算法的Pipe模式或自带. 但是Pipe模式并非一直都适合,例如,如果您的算法需要在一个 epoch 内回溯或向前跳过(底层 FIFO 不支持 lseek() 操作),或者如果从流式源解析训练数据集并不容易.
  • 在这些情况下,您可能希望利用Amazon FSx for Lustre 和 Amazon EFS 文件系统。如果您的训练数据已经在Amazon EFS中,我建议将其用作数据源;否则,为 Lustre 选择 Amazon FSx

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

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

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

您可以在 Amazon SageMaker 分布式训练文档页面上找到其他示例

于 2021-01-18T11:49:20.777 回答
1

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

于 2018-05-05T19:35:40.123 回答