我有一个 500GB 的 csv 文件和一个 1.5 TB 数据的 mysql 数据库,我想在上面运行 aws sagemaker 分类和回归算法以及随机森林。
aws sagemaker 可以支持吗?可以分批或分块读取和训练模型吗?任何例子
我有一个 500GB 的 csv 文件和一个 1.5 TB 数据的 mysql 数据库,我想在上面运行 aws sagemaker 分类和回归算法以及随机森林。
aws sagemaker 可以支持吗?可以分批或分块读取和训练模型吗?任何例子
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
Amazon Sagemaker 旨在帮助您扩展培训活动。对于大型数据集,您可能会考虑两个主要方面:
数据存储:S3 是存储训练数据的最具成本效益的方式。为了获得更快的启动和培训时间,您可以考虑以下几点:
Pipe
模式或自带. 但是Pipe
模式并非一直都适合,例如,如果您的算法需要在一个 epoch 内回溯或向前跳过(底层 FIFO 不支持 lseek() 操作),或者如果从流式源解析训练数据集并不容易.训练并行性:对于大型数据集,您可能希望在不同的 GPU 上进行训练。在这种情况下,请考虑以下事项:
(奖励)成本优化:不要忘记利用Managed Spot 训练来节省高达 90% 的计算成本。
您可以在 Amazon SageMaker 分布式训练文档页面上找到其他示例
您可以将 SageMaker 用于大规模机器学习任务!它就是为此而设计的。我开发了这个开源项目https://github.com/Kenza-AI/sagify (sagify),它是一个 CLI 工具,可以帮助您以非常简单的方式在 SageMaker 上训练和部署机器学习/深度学习模型。无论我使用什么库(Keras、Tensorflow、scikit-learn、LightFM 等),我都设法训练和部署了所有 ML 模型