书圈|NumPy: 从单机到分布式并行计算 (Nature文章摘录)
_本文原题:NumPy: 从单机到分布式并行计算 (Nature文章摘录)
NumPy开发团队在 Nature 上发表了 Review文章(Array programming with NumPy ,2020.9.16) , 详细介绍了使用 NumPy 的数组编程 。 本文对其中主要内容进行了摘录和翻译 , 主要包括Numpy的基本计算原理和NumPy对分布式并行计算的支持 。
1、Numpy的基本计算原理
数组编程(array programming)为以向量、矩阵和高维数组的方式访问、操作和操作数据提供强大的语法 。 NumPy是Python语言的主要数组编程库 , 在物理、化学、天文学、心理学、工程、金融和经济等领域的研究分析中发挥着重要作用 。 本文回顾了一些基本的数组概念 , 以及如何形成一个简单而强大的编程范式来组织、探索和分析科学数据 。
本文插图
Numpy的生态
NumPy数组是一种能够高效存储和访问多维数组(也称为张量)的数据结构 , 并支持各种科学计算 。 它能够运行在从嵌入式设备到超级计算机各种设备上 , 性能接近编译语言 。 基本的概念包括 数据结构、索引(切片)、向量化、广播和规约 。
本文插图
本文插图
2、NumPy对分布式并行计算的支持
现在各种大数据集规模都很大 , 超过一台机器的存储容量 , 需要存储在多台机器上或云中 。 同时由于需要加速深度学习和人工智能应用 , 出现了各种专门的加速器硬件 , 如图形处理单元(GPU)、张量处理单元(TPU)和现场可编程门阵列(FPGA) 。 由于其内存数据模型 , NumPy目前无法直接利用此类专用硬件 。 然而 , 无论是分布式数据还是GPU、TPU、FPGA的并行执行方式都很符合数组编程范式 。 不管怎样 , 现代硬件体系结构与利用其计算能力所需的工具之间存在差距 。
【书圈|NumPy: 从单机到分布式并行计算 (Nature文章摘录)】目前 , 在缩短这一差距方面所做的努力有,包括 GPU数组、稀疏数组和分布式数组 。 每个深度学习框架创建了它们自己的数组:PyTorch38、Tensorflow39、Apache MXNet40和JAX数组都能够以分布式方式在CPU和GPU上运行 , 使用延迟求值来允许额外的性能优化 。 SciPy和PyData/Sparse都提供稀疏数组 , 这些数组通常包含很少的非零值 , 为了提高效率 , 它们只存储在内存中 。 此外 , 还有一些项目如Dask实现了分布式数组 。 但不管是哪种方式 , 他们通常会为开发人员提供类似于Numpy的数组表示、操作和API , 以便开发人员能更快地适应 。
为此 , 为了支持这些外部数组对象之间的数组操作 , NumPy添加了中央协调机制及其API的功能 , 使得 NumPy数组、GPU数组、分布式数组等之间可以进行切换 。 这样用户就只需要编写一次代码 。 为了实现这种互操作性 , NumPy提供了一种“协议” , 允许将专门的数组传递给NumPy函数(图) 。 反过来 , NumPy根据需要将操作分派到原始库 。 包括Dask、CuPy、xarray和PyData/Sparse在内的流行库都实现了这些协议 。 因此 , 用户现在可以使用Dask将他们的计算从单机扩展到分布式系统 。 通过这些协议 , 也 允许用户在分布式、多GPU系统上大规模地重新部署NumPy代码 。 使用NumPy的高层API , 用户可以在具有数百万核的多个系统上利用高度并行的代码执行 , 所有这些操作都只需进行最小的代码更改 。
本文插图
本文插图
提供300分钟视频讲解 , 教学大纲、课件、教案、习题答案、程序源码等配套资源 。
扫码 , 优惠购书
凡是在京东购书的用户 , 可以将订单信息和评价发到itbook8@163.com , 将会获取超值大礼包(包括案例源码 , 超多的视频教程 , 数据集等资源)
推荐阅读
- 从小就馋此口,比肉香多了,几块钱做一大盘,咋吃都不腻
- 这早餐我从3岁开始吃,三十多年了,从没吃腻过,晶莹剔透很好吃
- 自从学会做这个,我家隔三差五吃,拌一拌上锅一蒸,蘸着料吃,老香了
- 听力障碍|预防耳聋从身边小事做起
- 自从学会这道肉卷,我家隔三差五吃,一卷一蒸,不用蘸酱也好吃
- 我家零食从来不用买,切一切锅里一炸,比油条薯片好吃,越嚼越香
- 馄饨的家常做法,从擀皮到调馅全教你,汤鲜肉香,太好吃了
- 我家茄子从不炒着吃,淋入3个鸡蛋,比吃肉还香,上桌瞬间被扫光
- 引力波|从暗物质到暗物质引力波
- 有两种谷物被称为“长寿食材”,却很少人当主食吃,从今天要改
