利用Ray进行高级数据处理与机器学习
1. Ray数据集的实现
Ray数据集的构建借助了常用工具。Ray会将每个数据集拆分成众多小的组件,这些组件在Ray代码里既被称作块(blocks),也被称作分区(partitions)。每个分区包含一个Arrow数据集,它代表整个Ray数据集的一个切片。由于Arrow并不支持Ray中的所有类型,若存在不支持的类型,每个分区还会包含一个不支持类型的列表。
数据集内的数据存储在标准的Ray对象存储中。每个分区作为一个独立对象存储,因为Ray无法拆分单个对象。这意味着可以将底层的Ray对象作为参数传递给Ray远程函数和参与者(actors)。数据集包含对这些对象的引用以及模式信息。
加载数据集时,会先阻塞在第一个分区上,以便确定模式信息。其余分区则会像Ray的其他操作一样,以非阻塞的方式被急切加载。和Ray的其他部分一样,数据集是不可变的。当要对数据集执行操作时,需应用诸如过滤、连接或映射等转换,Ray会返回一个包含结果的新数据集。
Ray数据集可使用任务(即远程函数)或参与者来处理转换。一些基于Ray数据集构建的库,如Modin,依赖于使用参与者处理,以便实现某些涉及状态的机器学习任务。
Ray在工具间透明地处理数据移动,与传统技术相比,它在构建端到端机器学习管道方面是一个绝佳选择,因为传统技术中工具间的通信障碍更高。Modin和Dask这两个独立的框架都在Ray数据集之上提供了类似pandas的体验,便于扩展现有的数据科学工作流程。RayDP(Ray上的Spark)为使用现有大数据工具的组织提供了简单的集成路径。
2. Ray助力机器学习
Ray内置了两个用于
超级会员免费看
订阅专栏 解锁全文
600

被折叠的 条评论
为什么被折叠?



