Arrow
Arrow让大量的数据可以被快速的处理和移动。它是一种在内存中列式存储的格式。他提供了几个明显的优势:
- Arrow的标准格式允许零拷贝读取,这实际上消除了所有序列化开销。
- Arrow是语言无关的,所以它支持不同的编程语言。
- Arrow是面向列的,因此查询和处理数据片或数据列的速度更快。
- Arrow允许无复制切换到标准机器学习工具,如NumPy, Pandas, PyTorch和TensorFlow。
- Arrow支持许多的,可能嵌套的列类型。
内存映射
HF Datasets 作为本地缓存系统。它允许数据集由磁盘缓存支持,磁盘缓存是内存映射的,用于快速查找。这种架构允许在设备内存相对较小的机器上使用大型数据集。
例如,加载完整的英文维基百科数据集只需要几MB的RAM:
import os; import psutil; import timeit
from datasets import load_dataset
# Process.memory_info is expressed in bytes, so convert to megabytes
mem_before = psutil.Process(os.getpid()).memory_info().rss / (1024 * 1024)
wiki = load_dataset("wikipedia", "202203