作者:
(1) Sasun Hambardzumyan,Activeloop,加利福尼亚州山景城,美国;
(2) Abhinav Tuli,Activeloop,美国加利福尼亚州山景城;
(3) Levon Ghukasyan,Activeloop,加利福尼亚州山景城,美国;
(4)Fariz Rahman,Activeloop,美国加利福尼亚州山景城;
(5) Hrant Topchyan,Activeloop,美国加利福尼亚州山景城;
(6)David Isayan,Activeloop,美国加利福尼亚州山景城;
(7)Mark McQuade,Activeloop,美国加利福尼亚州山景城;
(8) Mikayel Harutyunyan,Activeloop,美国加利福尼亚州山景城;
(9) Tatevik Hakobyan,Activeloop,加利福尼亚州山景城,美国;
(10) Ivo Stranic,Activeloop,加利福尼亚州山景城,美国;
(11)Davit Buniatyan,Activeloop,加利福尼亚州山景城,美国。
在本节中,我们将通过实验展示 Deep Lake 相对于其他数据加载器和格式的大规模性能,从提取格式到大规模训练。我们比较了来自不同存储后端的流式数据集,并展示了在云端训练时的性能提升和可扩展性。
FFHQ [43] 数据集中的 10,000 张图像未压缩并以 NumPy 格式存储。每个 1024x1024x3 原始图像都是一个 3MB 数组。然后,如图 6 所示,将图像按顺序写入每种格式。为了提高性能,我们使用 TensorStore [23] 写入 Zarr [52] 和 N5 [24] 格式。实验是在 AWS c5.9xlarge 机器上进行的。与数组格式相比,Deep Lake 的写入性能明显更快,与 WebDataset [19] 和 FFCV Beton [39] 等二进制格式相当
如图 7 所示,Deep Lake 在没有模型的情况下在 PyTorch 训练循环中实现了更快的数据加载。实验在 AWS P3.2xlarge 实例上进行,使用一个 Nvidia V100 GPU
卡。该数据集随机生成了 50,000 张 250x250x3 图像,存储为 JPEG 文件。进行基准测试的库列表包括 Deep Lake、FFCV [39]、Squirrel [75]、Webdataset [19] 和原生 PyTorch 数据加载器 [58]。
如图 8 所示,在本实验中,我们使用与第 6.2 节相同的数据集探索了远程流式传输的不同存储后端。MinIO [17] 在本地网络中的另一台机器上运行。值得注意的是,与 AWS S3 相比,Deep Lake 实现了与数据在机器本地时类似的性能。WebDataset 和 Deep Lake 在从
MinIO 与 AWS S3 的比较。如需更详细的数据加载器基准测试,我们推荐 Ofeidis 等人撰写的详尽数据加载器概述研究。[54]
由于 Deep Lake 是云端优先构建的,因此在本节和下一节中,我们将展示它为在云端训练模型带来的好处。我们采用 ImageNet 数据集 [35] 并将其作为原始和 Tensor 存储格式存储在 AWS S3 [1] 上。该数据集包含 120 万张图像和标签,总共 150GB。Deep Lake 实现了几乎与数据在机器本地相同的训练性能。这节省了高达 4 倍的 GPU 计算时间和成本,如图 9 所示
作为第二个实验,我们采用包含 4 亿个图像文本对的 LAION 数据集 [67] 并训练 CLIP [60],即具有 10 亿个参数的图像文本嵌入模型。原始数据集是一个 Parquet 文件表,其中包含一列图像 URL。从源下载数据集花费了 100 个小时,而提取到 Tensor Storage 格式仅花费了 6 个小时,总大小为 1.9TB。数据集已存储在美国东部地区的 AWS 上,同时在美国中部地区训练 GPU 机器。如图 10 所示,Deep Lake 通过将 5,100 张图像/秒传输到 16 个 Nvidia A100 GPU 来实现高 GPU 利用率,而没有模型的情况下在同一地区每台机器高达 80,000 张图像/秒。