Google发布了一个专为存储和操作N维资料设计的C++、Python开源软件函数库TensorStore,其提供一个统一的API,让用户读取各种数组格式,像是zarr和N5,TensorStore原生支持多种存储系统,并且具有强ACID保证,能够以异步API支持针对高延迟远程存储的高吞吐量访问。
TensorStore的出现,是要解决机器学习迅速发展,对大规模资料集的访问需求,许多先进的机器学习应用程序,皆需要用到多维资料集,像是在空间网格上测量大气,并对天气进行建模,或是医学成像3D扫描等,而这些应用即便仅需要一个人信息料集,但规模也会属于TB或是PB等级。
研究人员提到,要使用这类大型资料集极具挑战,因为用户可能以不规则区间,或是不同的规模读取和写入资料,并且还可能需要用到大量的机器。
而Google所开发的TensorStore,可用于存储像是具有数十亿立体像素(Voxel)的苍蝇大脑3D图像,TensorStore提供用户简单Python API,能够轻松加载和操作大型数据库,并以NumPy数组访问小批次资料。
在用户真正请求特定资料切片之前,TensorStore不会访问或是在内存中存储实际资料,所以能够支持用户加载和操作任意大小的基础资料集,不需要将整个人信息料集搬到内存中,就能够使用与标准NumPy操作相同的语法进行索引和操作。TensorStore针对高端索引功能提供广泛的支持,包括转换、对齐和产生虚拟查看表等。
研究人员提到,处理和分析大型数值资料集,需要大量的计算资源,通过平行化GPU和加速器核心实例,这些资源通常分散在众多机器上。TensorStore的基本目标,便是要能够对单个人信息料集进行安全平行处理,使这些资料集不会因为平行访问模式,而产生损坏或是不一致,但又同时维持高性能。在Google数据中心的实验,随着CPU数量的增加,TensorStore的高性能特性使读写性能可以几乎呈现线性增长。
另外,TensorStore可以通过配置内存缓存和异步API,允许程序在执行其他工作时,在后台继续进行读取和写入操作,而当多台机器同时访问同一个人信息料集时,TensorStore借由乐观并行控制(Optimistic Concurrency)技术,保持并行操作的安全性,且不会明显影响性能。TensorStore也对单个Runtime的所有个别操作提供强ACID执行。
由于TensorStore集成诸如Apache Beam和Dask等平行运算函数库,因此TensorStore的分布式运算,与企业现有资料处理工作流程高度兼容。TensorStore的用例包括语言模型,可在训练过程高效读取和写入模型参数,另外也能用于大脑映射上,存储用于描绘大脑神经的高分辨率映射图。