概述#
Mars张量是Numpy numpy.ndarray 的对应物,并实现了Numpy ndarray接口的一个子集。
它将大型张量分割成小块,并通过有向图描述内部计算。
这使我们能够在超出内存限制的张量上进行计算,并利用多核或分布式集群的能力。
以下是Numpy接口支持的子集的简要概述。
算术和数学:
+,-,*,/,exp,log, 等等。沿轴的降维 (
sum,max,argmax, 等等)。大多数的 数组创建例程 (
empty,ones_like,diag等)。更重要的是,Mars不仅支持在GPU上创建数组/张量, 还支持创建稀疏张量。大多数的 数组操作例程 (
reshape,rollaxis,concatenate, 等等)基本索引 (通过整数、切片、新轴和省略号进行索引).
高级索引 (除了组合布尔数组索引和整数数组索引).
通用函数 用于逐元素操作。
线性代数函数,包括乘积 (
dot,matmul, 等) 和分解 (cholesky,svd, 等)。
然而,Mars尚未实现整个Numpy接口,时间限制或难度是主要障碍。我们真诚欢迎社区的任何贡献。未实现的主要功能如下:
形状未知的张量不支持所有操作。
只有小部分
np.linalg被实现。Mars张量不实现像
tolist和nditer等接口,因为对大型张量进行迭代或循环非常低效。