存储和操作n维数据的难题,谷歌用一个开源软件库解决了

计算机科学和机器学习 (ML) 的许多应用都需要处理跨坐标系的多维数据集,并且单个数据集可能也需要存储 TB 或 PB 的数据。另一方面,使用此类数据集也具有挑战性,因为用户可能会以不规则的间隔和不同的规模读取和写入数据,通常还会执行大量的并行工作。

为了解决上述问题,谷歌开发了一个开源的 C 和 Python 软件库 TensorStore,专为存储和操作 n 维数据而设计。谷歌 AI 负责人 Jeff Dean 也在推特上发文表示 TensorStore 现已正式开源。

TensorStore 的主要功能包括:

  • 提供统一的 API 用于读写多种数组格式,包括 zarr 和 N5;
  • 原生支持多种存储系统,包括谷歌云存储、本地和网络文件系统、HTTP 服务器和内存存储;
  • 支持读 / 写缓存和事务,具有很强的原子性、隔离性、一致性和持久性(ACID)特性;
  • 支持从多个进程和机器进行安全、高效的并发访问;
  • 提供异步 API 以实现对高延迟远程存储的高吞吐量访问;
  • 提供高级、完全可组合的索引操作和虚拟视图。

TensorStore 已被用于解决科学计算中的工程挑战,还被用于创建大型机器学习模型,例如用来管理 PaLM 在分布式训练期间的模型参数(检查点)。

GitHub 地址:https://github.com/google/tensorstore

用于数据访问和操作的 API

TensorStore 提供了一个简单的 Python API 用于加载和操作大型数组数据。例如,下面的代码创建了一个 TensorStore 对象,该对象代表一个 56 万亿体素的苍蝇大脑 3D 图像,并允许访问 NumPy 数组中 100x100 的图像 patch 数据:

值得注意的是,该程序在访问特定的 100x100 patch 之前,不会访问内存中的实际数据,因此可以加载和操作任意大的基础数据集,而无需将整个数据集存储在内存中。TensorStore 使用与标准 NumPy 基本相同的索引和操作语法。 

此外,TensorStore 还为高级索引功能提供广泛支持,包括对齐、虚拟视图等。

下面的代码演示了如何使用 TensorStore 创建一个 zarr 数组,以及 TensorStore 的异步 API 如何实现更高的吞吐量:

安全和性能扩展

众所周知,分析和处理大型数据集需要大量的计算资源,通常需要分布在多个机器上的 CPU 或加速器内核的并行化来实现。因此,TensorStore 的一个基本目标是实现并行处理,达到既安全又高性能的目的。事实上,在谷歌数据中心内的测试中,他们发现随着 CPU 数量的增加,TensorStore 读写性能几乎呈线性增长:

在谷歌云存储 (GCS) 上对 zarr 格式数据集的读写性能,读和写性能与计算任务的数量几乎成线性增长。

TensorStore 还提供了可配置的内存缓存和异步 API,以允许读写操作在程序完成其他工作时在后台继续执行。为了使 TensorStore 的分布式计算与数据处理工作流兼容,谷歌还将 TensorStore 与 Apache Beam 等并行计算库集成。

示例展示

示例 1 语言模型:最近一段时间,机器学习领域出现了一些 PaLM 等高级语言模型。这些模型包含数千亿个参数,在自然语言理解和生成方面表现出惊人的能力。不过这些模型对计算设施提出了挑战,特别是,训练一个像 PaLM 这样的语言模型需要数千个 TPU 并行工作。

其中有效地读取和写入模型参数是训练过程面临的一个问题:例如训练分布在不同的机器上,但参数又必须定时的保存到 checkpoint 中;又比如单个训练必须仅读取特定参数集,以避免加载整个模型参数集(可能是数百 GB)所需的开销。

TensorStore 可以解决上述问题。它已被用于管理大型(multipod)模型相关的 checkpoint,并已与 T5X 和 Pathways 等框架集成。TensorStore 将 Checkpoint 转换为 zarr 格式存储,并选择块结构以允许每个 TPU 的分区并行独立地读取和写入。


当保存 checkpoint 时,参数以 zarr 格式写入,块网格进一步被划分,以用于在 TPU 上划分参数网格。主机为分配给该主机的 TPU 的每个分区并行写入 zarr 块。使用 TensorStore 的异步 API,即使数据仍被写入持久存储,训练也会继续进行。当从 checkpoint 恢复时,每个主机只读取分配给该主机的分区块。

示例 2 大脑 3D 映射:突触分辨连接组学的目标是在单个突触连接水平上绘制动物和人脑的连线。完成这一目标需要在毫米或更大的视野范围内以极高的分辨率 (纳米级) 对大脑进行成像,由此产生的数据大小达到 PB 级。然而,即使是现在,数据集也面临着存储、处理等方面的问题,即使是单个大脑样本也可能需要数百万 GB 的空间。

谷歌已经使用 TensorStore 来解决与大规模连接组学数据集相关的计算挑战。具体而言,TensorStore 已经开始管理一些连接组学数据集,并将谷歌云存储作为底层对象存储系统。

目前,TensorStore 已被用于人类大脑皮层数据集 H01,原始成像数据为 1.4 PB(约为 500000 * 350000 * 5000 像素)。之后原始数据被细分为 128x128x16 像素的独立块,以「Neuroglancer precomputed」格式存储,TensorStore 可以很容易的对其进行操作。

利用 TensorStore 可以轻松访问和操作底层数据(苍蝇大脑重建)

想要上手一试的小伙伴,可以使用以下方法安装 TensorStore PyPI 包:

pip install tensorstore


本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
标签:
上一篇2025-08-22

相关推荐

  • 莱特帀手机钱包-莱特币手机钱包

    【莱特帀手机钱包】——您的虚拟货币安全助手随着数字货币的兴起,莱特帀作为一种备受关注的加密货币,越来越受到投资者的青睐,为了方便用户安全、便捷地管理莱特帀资

    2025-08-22 00:58:35
    2019
  • ttm数字货币币钱包-ttt数字货币

    TTM数字货币币钱包——您的虚拟货币钱包助手随着数字货币的普及,越来越多的人开始关注并投资数字货币,数字货币的安全存储问题成为了投资者们面临的一大挑战,为了解

    2025-08-22 00:58:35
    2013
  • 货币钱包转账违法吗

    虚拟货币钱包助手:揭秘钱包转账的合法性与风险尊敬的用户,您好!作为虚拟货币钱包助手,今天我们来探讨一下关于虚拟货币钱包转账的合法性与风险问题,什么是虚拟货币钱包

    2025-08-22 00:58:35
    2005
  • 欧意交易所app最新下载安装_欧意OK交易平台App下载教程

    大家好,今天来跟大家分享一下如何下载安装欧意交易所的官方App,也就是欧意OK交易平台App,这个App可以帮助用户在手机上轻松进行数字资产的交易和管理,下面是详细的下

    2025-08-22 00:58:35
    2004
  • 派币今天价值多少钱(派币今日价值报告)

    派币今天价值多少钱(派币今日价值报告)如果你是一名投资者,特别是加密货币投资者,那么你可能会对派币的表现感兴趣。究竟,在今天的市场上,你的派币价值是多少呢?让我们

    2025-08-22 00:58:35
    2003
  • usdt钱包官方下载(高级版本V6.4.24)_USDT钱包是什么?

    USDT钱包是一款基于区块链技术的数字货币钱包,主要应用于泰达币(USDT)的存储、转账和交易,泰达币作为一种稳定币,其价值与美元挂钩,1 USDT兑换1美元,因此在数字货币市场

    2025-08-22 00:58:35
    2003
  • 虚拟币前十名的各币价格

    在数字货币的世界里,各种虚拟币的价格波动总是牵动着投资者的心,下面,我将为您详细介绍当前市值排名前十的虚拟币及其价格情况,帮助您更好地了解这个市场,我们需要明确

    2025-08-22 00:58:35
    2003
  • 鱼池sc钱包-鱼池钱包模式

    【鱼池SC钱包】——您的虚拟货币守护神随着区块链技术的不断发展,虚拟货币已经成为越来越多人的投资选择,为了方便用户安全、便捷地管理自己的虚拟货币资产,各种虚拟

    2025-08-22 00:58:35
    2003