概述#

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张量不实现像 tolistnditer 等接口,因为对大型张量进行迭代或循环非常低效。