『阿里云云栖号』阿里云云效团队在家高效开发实录,战“疫”期( 四 )


测试机器配置是500G内存、96核、NVIDIAV100显卡 。 Mars和DASK在GPU上都使用RAPIDS执行计算 。
Groupby数据有三个规模 , 分别是500M、5G和20G 。
查询也有三组 。
查询一df=read_csv('data.csv')df.groupby('id1').agg({'v1':'sum'})查询二df=read_csv('data.csv')df.groupby(['id1','id2']).agg({'v1':'sum'})查询三df=read_csv('data.csv')df.gropuby(['id6']).agg({'v1':'sum','v2':'sum','v3':'sum'})数据大小500M , 性能结果
『阿里云云栖号』阿里云云效团队在家高效开发实录,战“疫”期
文章图片
数据大小5G , 性能结果
『阿里云云栖号』阿里云云效团队在家高效开发实录,战“疫”期
文章图片
数据大小20G , 性能结果
『阿里云云栖号』阿里云云效团队在家高效开发实录,战“疫”期
文章图片
数据大小到20G时 , pandas在查询2会内存溢出 , 得不出结果 。
可以看到 , 随着数据增加 , Mars的性能优势会愈发明显 。
得益于GPU的计算能力 , GPU运算性能相比于CPU都有数倍的提升 。 如果单纯使用RAPIDScuDF , 由于显存大小的限制 , 数据来到5G都难以完成 , 而由于Mars的声明式的特点 , 中间过程对显存的使用大幅得到优化 , 所以整组测试来到20G都能轻松完成 。 这正是Mars+RAPIDS所能发挥的威力 。
Join测试查询:
x=read_csv('x.csv')y=read_csv('y.csv')x.merge(y,on='id1')测试数据x为500M , y包含10行数据 。
『阿里云云栖号』阿里云云效团队在家高效开发实录,战“疫”期
文章图片
总结【『阿里云云栖号』阿里云云效团队在家高效开发实录,战“疫”期】RAPIDS将Python数据科学带到了GPU , 极大提升了数据分析和处理的效率 。 Mars的注意力更多放在并行和分布式 。 相信这两者的结合 , 在未来会有更多的想象空间 。


推荐阅读