当前位置: 首页 > 知识库问答 >
问题:

AWS SageMaker超大数据集

舒阳州
2023-03-14

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

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

共有3个答案

谭成业
2023-03-14

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

钱振
2023-03-14

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

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

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

  • 如果您的数据已经存储在Amazon S3上,您可能需要首先考虑使用内置算法或自带的Pipe模式。但是Pipe模式并不总是合适的,例如,如果您的算法需要在一个时代内回溯或跳过(基础FIFO不能支持lsearch()操作),或者不容易从流中解析训练数据集来源。
  • 在这种情况下,您可能希望利用Amazon FSx实现Lustre和Amazon EFS文件系统。如果您的训练数据已经在Amazon EFS中,我建议将其用作数据源;否则,为Lustre选择Amazon FSx。

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

  • 如果你的训练已经准备好了Horovod,你可以用亚马逊SageMaker(笔记本)来做。
  • 12月,AWS发布了托管数据并行,简化了在多个GPU上的并行训练。从今天开始,它可用于TensorFlow和PyTorch。

(奖金)成本优化:别忘了利用托管现场培训节省高达90%的计算成本。

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

高经艺
2023-03-14

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

如果您希望使用分布式培训来实现更快的培训(“单个实例100小时的成本与100个实例1小时的成本完全相同,仅快100倍”)、更具可扩展性(“如果您的数据量增加了10倍,您只需添加10倍多的实例,一切都正常工作”)和更可靠,因为每个实例只处理数据集或模型的一小部分,并且不会占用磁盘或内存空间。

如何以分布式的方式实现仍然高效准确的最大似然算法还不明显。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,您可以决定如何使用AmazonS3中的数据文件。它可以处于完全复制模式,将所有数据复制到所有工作人员,但也可以通过密钥进行切分,从而将数据分布到工作人员,并进一步加快培训速度。您可以在本笔记本中看到一些示例:https://github.com/awslabs/amazon-sagemaker-examples/tree/master/advanced_functionality/data_distribution_types

 类似资料:
  • 我有一个庞大的CA的csv数据集。7GB,它有不同类型的列:string和Float。那么将其导入到Neo4J中的超快解决方案是什么呢? 我也尝试使用neo4j-admin导入工具,但每次我都被以下错误所困扰: Invoke-Neo4jAdmin:c:\users\shafigh.neo4jdesktop\neo4jdatabases\database-417e361b-f273-496c-983

  • 我最近在spark工作,遇到了一些我仍然无法解决的问题。 假设我有一个100GB的数据集,集群的ram大小是16GB。 现在,我知道在简单地读取文件并将其保存在HDFS中的情况下,Spark将为每个分区执行它。当我对100GB数据执行排序或聚合转换时会发生什么?它将如何在内存中处理100GB,因为我们需要整个数据来进行排序? 我已经通过下面的链接,但这只告诉我们火花在持久化的情况下做什么,我正在寻

  • 我是相当新的Spring和MongoDB,并有一个问题,从我的MongoDB拉数据。我试图获得相当大的数据量,并收到以下异常: 执行器错误:操作失败:排序操作使用超过最大33554432字节的RAM。添加索引,或指定一个较小的限制。;嵌套异常是com.mongodb.MongoExc0019: Execator错误:操作失败:排序操作使用超过内存的最大33554432字节。添加索引,或指定较小的限

  • 我对Java非常陌生,所以如果我做了一些非常错误的事情,请原谅我。 我在一个项目中工作,我需要快速扫描大量的数据(CSV有5000万行或更多,每行5个条目)重复。我使用了,因为它的方法速度很快。

  • 我有一个h2数据库文件,文件大小已经增长到5GB。我删除了一些数据以缩小文件的大小。但即使从数据库中删除了一半记录,文件大小仍然保持不变。 我已经尝试了以下所有选项来减少数据库大小,但没有一个对我有用。 我的连接字符串如下所示: 注: 我们正在结清我们已经开始的交易 文件中没有5GB的数据 有人能给我建议一些解决方法或修复方法来减少我的数据库大小吗

  • 我们不确定从这里到哪里去,完全被困住了。有人能帮忙吗?我们到处找了一些例子来帮忙。