谷歌官方高性能大规模高维数据处理库TensorStore发布!
许多令人振奋的当代计算机科学和机器学习(ML)的应用都在处理跨越单一大坐标系的多维数据集,例如,从空间网格上的大气测量结果进行天气建模,或从2D或3D扫描的多通道图像强度值进行医学成像预测。在这些情况下,即使是一个单一的数据集也可能需要TB级或PB级的数据存储。这样的数据集在工作中也具有挑战性,因为用户可能以不规则的时间间隔和不同的规模来读写数据,而且往往对使用众多机器并行工作来进行分析感兴趣。
今天Google发布了TensorStore,这是一个开源的C++和Python软件库,设计用于存储和操作大规模n维数据,它包含如下特点:
- 为读写多种阵列格式提供统一的API,包括zarr和N5。
- 天然支持多种存储系统,包括谷歌云存储、本地和网络文件系统、HTTP服务器和内存存储。
- 支持读/写缓存和事务,具有强大的原子性、隔离性、一致性和耐久性(ACID)保证。
- 通过乐观的并发性,支持来自多个进程和机器的安全、高效的访问。
- 提供一个异步的API,以实现高吞吐量的访问,甚至是对高延迟的远程存储。
- 提供先进的、完全可组合的索引操作和虚拟视图。
TensorStore已经被用来解决科学计算中的关键工程挑战(例如,管理和处理神经科学中的大型数据集,如石油级的三维电子显微镜数据和神经元活动的 "4d "视频)。TensorStore还被用于创建大规模的机器学习模型,如PaLM,解决了分布式训练期间管理模型参数(检查点)的问题。
熟悉的数据访问和操作的API
TensorStore提供了一个简单的Python API,用于加载和操作大型阵列数据。在下面的例子中,我们创建了一个TensorStore对象,它代表了一个56万亿体素的苍蝇大脑三维图像,并以NumPy数组的形式访问100x100的小块数据。
>>> import tensorstore as ts
>>> import numpy as np
# Create a TensorStore object to work with fly brain data.
>>> dataset = ts.open({
:
,
:
+
,
}).result()
dataset_3d = dataset[ts.d[][]]
dataset_3d.domain
{ : [, ), : [, ), : [, ) }
= np.array(dataset_3d[:, :, ])


