概述¶
Mars tensor 对应 Numpy ndarray,实现了 Numpy ndarray 接口的子集。在执行中,Mars tensor 将一个大张量切分成很多小块,并用有向图描述块之间的计算。这使我们可以在大于内存的张量上进行计算,并利用多核或分布式集群的能力。
以下是 Mars tensor 所支持 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
这样的接口,因为迭代或者循环处理巨大的张量非常低效。