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