作者:
(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的应用。
深度学习应用中的典型场景始于
(1) 对象存储桶中收集的一组原始文件。它可能包括图像、视频和其他类型的多媒体数据(其原生格式为 JPEG、PNG 或 MP4)。
(2) 存储在关系数据库中的任何相关元数据和标签。它们可以与原始数据一起以规范化的表格形式(例如 CSV、JSON 或 Parquet 格式)存储在同一个存储桶中。
如图 4 所示,创建一个空的 Deep Lake 数据集。然后,定义空张量来存储原始数据和元数据。张量的数量可以是任意的。图像分类任务的一个基本示例将有两个张量,
• htype 为 𝑖𝑚𝑎𝑔𝑒 的图像张量和 JPEG 的样本压缩
• 使用 htype 𝑐𝑙𝑎𝑠𝑠_𝑙𝑎𝑏𝑒𝑙 和 LZ4 块压缩标记张量。
声明张量后,可以将数据附加到数据集中。如果原始图像压缩与张量样本压缩匹配,则二进制文件将直接复制到块中而无需额外解码。标签数据从 SQL 查询或 CSV 表中提取为分类整数并附加到标签张量中。标签张量块使用 LZ4 压缩存储。所有 Deep Lake 数据都存储在存储桶中并且是自包含的。存储后,可以通过 NumPy 接口或可流式传输的深度学习数据加载器访问数据。然后,在计算机上运行的模型在图像张量流上进行迭代,并将模型的输出存储在名为预测的新张量中。此外,我们在下面讨论如何训练、版本控制、查询和检查 Deep Lake 数据集的质量。
深度学习模型在组织中以多个级别进行训练,从在个人计算机上进行的探索性训练到在涉及许多 GPU 的分布式机器上进行的大规模训练。将数据从长期存储带到训练客户端所需的时间和精力通常与训练本身相当。Deep Lake 通过实现快速数据流而不影响下游训练过程来解决此问题,从而避免了在本地存储上复制数据所需的成本和时间。
随着新数据的增加和现有数据的质量控制,深度学习数据不断发展。分析和训练工作负载在数据变化的同时并行进行。因此,了解给定工作负载使用哪个数据版本对于理解数据和模型性能之间的关系至关重要。Deep Lake 使深度学习从业者能够了解其数据的哪个版本用于任何分析工作负载,并在需要审核时跨这些版本进行时间旅行。由于所有数据都是可变的,因此可以对其进行编辑以满足与合规性相关的隐私要求。与代码的 Git 一样,Deep Lake 还引入了数据分支的概念,允许在不影响同事工作的情况下试验和编辑数据。
深度学习模型的训练很少发生在组织为特定应用收集的所有数据上。训练数据集通常是通过根据提高模型性能的条件过滤原始数据来构建的,这通常包括数据平衡、消除冗余数据或选择包含特定特征的数据。Deep Lake 提供了查询和分析数据的工具,以便深度学习工程师可以创建产生最高精度模型的数据集。
尽管无监督学习在实际用例中越来越适用,但大多数深度学习应用仍然依赖于监督学习。任何监督学习系统的好坏都取决于其数据的质量,而数据质量通常需要通过手动和详尽的数据检查来实现。由于这个过程非常耗时,因此为人员提供工具来快速检查大量数据至关重要。Deep Lake 允许从浏览器检查任何大小的深度学习数据集,而无需任何设置时间或下载数据。此外,这些工具可以扩展以将模型结果与基本事实进行比较。结合查询和版本控制,这可以应用于数据的迭代改进,以实现最佳模型。