谷歌推出开源 C++ 和 Python 库 TensorStore

嘻嘻笔记 17 0

》》》点击全文阅读《《《

TensorStore,一个用 C++ 和 Python 编写的开源软件库,用于存储和操作 n 维数据。

跨越单个广泛坐标系的多维数据集用于各种当代计算机科学和机器学习应用程序。 示例包括使用位置网格上的空气测量来预测天气,或使用来自 2D 或 3D 扫描的多通道图像强度值来预测医学成像结果。 这些数据集可能难以使用,因为用户经常希望同时在多个工作站上运行研究,并且可能以不可预测的间隔和不同的规模接收和写入数据。 在这些条件下,即使是单个数据集也可能需要数 PB 的存储空间。

谷歌的 TensorStore 已被用于解决与神经科学中大数据集的管理和处理相关的科学计算中的基本工程问题。 为了解决存储和操作 n 维数据的问题,Google Research 创建了开源的 TensorStore C++ 和 Python 软件包。 该模块支持多种存储系统,包括本地和网络文件系统、Google Cloud Storage 等。 它提供了一个统一的 API,可以读写各种数组类型。 该库提供读/写缓存、事务以及强大的原子性、隔离性、一致性和持久性 (ACID) 保证。 乐观的并发保证了来自多个进程和系统的安全访问。

谷歌推出开源 C++ 和 Python 库 TensorStore-第1张图片-嘻嘻笔记

TensorStore 提供了一个简单的 Python API,可用于加载和操作大量数据。 由于在需要特定切片之前不会在内存中读取或维护实际数据,因此可以加载和编辑任意大型基础数据集,而无需将整个数据集存储在内存中。 索引和操作的语法与用于 NumPy 操作的语法非常相似,这使得这成为可能。 TensorStore 还支持虚拟视图、广播、对齐和其他高级索引功能(数据类型转换、下采样、延迟动态生成的数组)。

处理和分析大型数值数据集需要大量的处理能力。 通常,这是通过在分散在多个设备上的大量 CPU 或加速器内核之间并行活动来完成的。 由于在计算过程中对 TensorStore 的读写不会成为瓶颈,因此 TensorStore 的主要目标之一是在保持良好性能的同时实现特定数据集的同时处理(通过防止并发访问模式导致的损坏或不一致)。

此外,TensorStore 包含一个异步 API,可以同时进行读取或写入操作。 该应用程序还同时执行各种操作和可定制的内存缓存(这减少了频繁访问数据的较慢存储系统交互)。 当多台机器访问同一个数据集时,乐观并发保护并行操作的安全。 在不显着降低性能的情况下,它保持与许多底层存储层的兼容性。 为了让 TensorStore 分布式计算能够兼容很多现有的数据处理工作流,TensorStore 还集成了 Apache Beam 和 Dask 等并行计算框架。

PaLM 和其他高级大语言模型是令人兴奋的 TensorStore 应用案例之一。 凭借其数千亿参数,这些神经网络突破了计算基础设施的界限,同时在生成和理解简单语言方面表现出意想不到的能力。 在这个训练过程中,读取和写入模型参数的准确性是一个挑战。 尽管训练分布在许多工作站上,但需要定期将参数存储到长期存储系统上的单个检查点,而不会导致训练过程滞后。 TensorStore 已经被用来解决这些问题。 使用 JAX 训练的大型(“多脚架”)模型已使用此框架连接到检查点,该框架已与 T5X 和 Pathways 等框架集成。

另一个引人入胜的应用是脑图。 突触解析连接组学的目标是绘制动物和人类大脑中单个突触的复杂网络。 为此需要 PB 级的数据集,这些数据集是通过以非常高分辨率对大脑进行成像而创建的,视野小至一毫米或更多。 然而,当前的数据集带来了主要的存储、操作和处理挑战,因为它们需要数百万 GB 来存储、修改和处理坐标系内的数据。 TensorStore 已被用于处理一些最大和最知名的连接组数据集所带来的计算挑战,谷歌云存储充当底层对象存储系统。

》》》点击全文阅读《《《

标签: C++ 谷歌 Python 张量存储

抱歉,评论功能暂时关闭!