Google 開源 TensorStore,為讀寫大型多維數(shù)據(jù)而設計
Google 在上周發(fā)表了一篇博客文章,當中介紹了一個開源的 C++ 和 Python 庫 —— TensorStore,開發(fā)者可以使用它來存儲和操作多維數(shù)據(jù),該庫旨在通過更好地管理和處理大型數(shù)據(jù)集來解決科學計算中的關鍵工程挑戰(zhàn)。
如今計算機科學和機器學習中的各種應用都在操作跨越單一坐標系的多維數(shù)據(jù)集。在這些應用中,一個單一的數(shù)據(jù)集可能就需要 PB 級的存儲空間,而且處理這種數(shù)據(jù)集也同樣面對挑戰(zhàn) —— 因為用戶可能以不同的規(guī)模和不可預測的時間間隔接收和寫入數(shù)據(jù)。
TensorStore 提供了一個簡單的 Python API 來加載和處理大量的數(shù)據(jù)數(shù)組,任意大型的底層數(shù)據(jù)集都可以被加載和操作,而且不需要將整個數(shù)據(jù)集存儲在內(nèi)存中,因為在請求精確分片之前,TensorStore 不會讀取實際數(shù)據(jù)或?qū)⑵浔4嬖趦?nèi)存中。這可以通過索引和操作語法實現(xiàn),這與 NumPy 操作所用的語法基本相同。
TensorStore 還支持多種存儲系統(tǒng),如 Google Cloud、本地和網(wǎng)絡文件系統(tǒng)等。它提供了一個統(tǒng)一的 API 來讀寫不同的數(shù)組類型(如 zarr 和 N5)。憑借強大的原子性、隔離性、一致性和持久性(ACID)保證,該庫還提供了讀 / 寫回的緩存和事務。
此外,TensorStore 具備的并發(fā)性能夠確保當許多機器訪問同一個數(shù)據(jù)集時,并行操作的安全性。它與各種底層存儲層保持兼容,而不嚴重影響性能。
研究人員提到,處理和分析大型數(shù)值數(shù)據(jù)集時,需要大量的運算資源,一般情況下,這是由分布在多個設備上的大量 CPU 或加速器核心之間的并行操作來完成的,這些資源通常也分散在眾多機器上。TensorStore 的基本目標,便是要能夠?qū)蝹€數(shù)據(jù)集進行安全并行處理,使這些數(shù)據(jù)集不會因為并行存取模式,而產(chǎn)生損壞或是不一致,但又同時維持高性能。事實上,在 Google 數(shù)據(jù)中心內(nèi)的一項測試中發(fā)現(xiàn),隨著 CPU 數(shù)量的增加,讀寫性能幾乎呈線性增長。
TensorStore 也有一個異步 API,允許程序在進行其他任務時,可以繼續(xù)在后臺進行讀或?qū)懖僮?。TensorStore 還與 Apache Beam 和 Dask 等并行計算框架集成,以使 TensorStore 的分布式計算與當前許多數(shù)據(jù)處理工作流程兼容。
TensorStore 的用例包括語言模型,可在訓練過程高效讀取和寫入模型參數(shù),另外也能用于大腦映射上,儲存用于描繪大腦神經(jīng)的高解析度映射圖。
項目 Github 地址: https://github.com/google/tensorstore
本文轉(zhuǎn)自OSCHINA
本文標題:Google 開源 TensorStore,為讀寫大型多維數(shù)據(jù)而設計
本文地址:https://www.oschina.net/news/211942/google-tensorstore