MindSpore Pandas 文档
MindSpore Pandas是一个数据分析扩展包,兼容Pandas接口,同时提供分布式处理能力。
数据处理及分析是AI训练流程中重要的一环,其中表格数据类型是常见的数据表示形式。当前业界常用的数据分析扩展包Pandas提供了易用、丰富的接口,但由于其单线程的执行方式,在处理较大数据量时性能较差,同时因为其不支持分布式,导致无法处理超出单机内存的大数据量;另外,由于业界常用的数据分析扩展包与昇思MindSpore等AI框架是互相独立的,数据需要经过落盘、格式转换等步骤才能被训练,极大影响了使用效率。
MindSpore Pandas致力于提供支持大数据量、高性能的表格类型数据处理能力,同时又能与训练流程无缝结合,使得昇思MindSpore支持完整AI模型训练全流程的能力。
MindSpore Pandas的架构图如下图所示:
最上层提供了与Pandas兼容的API,基于现有Pandas脚本,修改少量代码,即可切换到MindSpore Pandas进行分布式执行。
Distributed Query Compiler将API转换成为分布式的基础范式组合(map/reduce/injective_map等),保证了后端逻辑的稳定性,当有新的算子实现时,可尝试转换为已有的通用计算范式组合。
Parallel Execution层提供了两种执行模式:多线程模式和多进程模式,用户可根据自己的实际场景进行选择。
MindSpore Pandas将原始数据进行切分,形成多个内部的Partition切片,随后每个Partition在不同的线程或进程同时执行相应的算子逻辑,从而实现数据的并行处理。
最底层提供了插件化的算子执行逻辑,当前主要支持Pandas算子,后续会以插件的形式支持更多类型的算子逻辑。
MindSpore Pandas提供了基于共享内存的数据管道,数据无需落盘即可从MindSpore Pandas数据处理进程传输至MindSpore训练进程,解决了数据分析扩展包与训练框架割裂的问题。
设计特点
MindSpore Pandas可以使用机器上的所有CPU核
相较于原生Pandas的单线程实现,在任何给定时间只能使用一个CPU核,MindSpore Pandas可以使用机器上的所有CPU核,或者整个集群的所有CPU核,使用如下所示:
MindSpore Pandas可以拓展到整个集群,利用整个集群的内存以及CPU资源,使用如下所示:
MindSpore Pandas与现有原生Pandas的API在接口使用上保持一致,设置MindSpore Pandas的后端运行模式即可运行脚本,在使用上只需将Pandas的导入替换为: