按照存储格式分类,AI数据可分为表格数据和非表格数据。按照数据格式分类,则包括结构化数据、半结构化数据和非结构化数据。
2.非结构化数据
在开源社区中,AI数据中的非结构化数据已使用“非表格数据”来描述。以往在大数据领域的处理对象一般都是指表格数据,其数据量仅占整个数据体量的20%。剩余的非表格数据(包括音频、视频、TXT等非结构化数据)的预计体量将达到80%。
非表格数据具有三个特点:一是数据体量大,企业级一般达到PB级别,甚至EB级别,文件数量可达亿级、十亿级,这个体量在表格数据中较少见;二是价值密度大,因其包含音频、视频等,能承载的信息量更多;三是处理难度大,表格数据可通过SQL进行处理和分析,而对于非表格数据,需要用到自然语言处理或其他机器学习方法,对技术人员的要求更高。
02
平台建设背景
2022年AI的大爆发为AI基建的发展带来了机遇和挑战。数据作为AI基建的三要素之一,其高效、安全和智能成为AI基建发展的重要模块。这一外部趋势是促使我们进行AI数据建设的背景之一。
以上是两个背景,外部AI的发展以及内部AI数据管理存在的诸多问题和痛点,这促使我们需要在降低成本、进行AI数据治理、提高算法开发流程效率以及挖掘数据价值方面提供相应的能力。
03
平台方案设计
首先,看一下AI数据管理的业界趋势。在项目启动前,我们调研了许多平台,如Databricks和Snowflake。Databricks很早就使用了UnityCatalog的概念,将表格数据和非表格数据在统一的Catalog下进行管理。同样Snowflake也使用了Fileset的概念。如图所示,Databricks有统一的Metastore存储,通过统一的Catalog管理表和Volume等文件数据,表格数据和非表格数据在一个体系下进行管理,这是业界关于AI数据管理或Data与AI在数据上融合的趋势。
小米的现状是,此前在做表格数据治理时,内部有许多存储系统,如Hive、Iceberg、Doris、MySQL等,不同存储系统存在难以审计、追查,权限割裂不统一等问题。当时提出的方案是用统一的目录名MetaCat,将所有表(如Hive表、Iceberg表等)用三元组的形式进行统一,由三元组在数据管理平台上进行管理,再与上层引擎(如Spark、Flink等)进行数据运算处理。有了统一Catalog后,能够进行各种权限审计和跨数据源的数据治理。
对于AI数据管理,我们结合业界趋势,将Data与AI进行融合,数据与算法流程进行融合,实现非表格数据或AI数据的可追溯,知道每个文件的使用情况、管理方式以及如何进行数据治理,联通整个AI与Data的开发链路。基于这四个点,我们提出了小米的存算管治方案,即Fileset。
我们有四个设计原则:
第一,方案要满足业务现有降低存储成本和提高算法流程的需求;
第二,兼容业务已有的用法,避免提供与现有用法割裂的方案,导致使用或迁移成本过高,难以推动新方案;
第三,能够快速落地,考虑使用哪些引擎的能力以及与开源社区的协作方式;
第四,方案要具有先进性,能满足长期业务发展,包括表格数据和非表格数据的协同发展。
基于这四个设计原则,最终Fileset的方案有两个关键点:
首先,我们在现有的大数据开发平台中引入了Fileset,对数据进行封装,而不是创建一个新的平台。在现有的表格数据管理系统中,我们融入了Fileset的非表格数据管理能力,实现数据的统一治理和追溯,从而建立数据的连通性。那么,如何实现这种统一呢?如左侧下方图示所示,我们将所有数据纳入一个统一的元数据系统。原有的表格数据通过一个三元组的目录(Catalog)进行管理,现在我们也将Fileset的数据整合进来,涵盖HDFS、JuiceFS、FDS等各种存储系统。用户无需了解底层的复杂性,只需知道Fileset本质上是一种特殊的表,它兼具了表和文件的属性。
其次,我们需要提供相应的开发能力。在传统的表格数据管理过程中,无论是数据出仓还是数据处理,我们通常只需使用SQL语言。然而,在涉及算法流程时,仅使用SQL语言是不足够的,我们还需要更多的编程语言支持,如Python和Scala。在底层数据层面,我们不仅需要处理表格数据(Table),还需要处理Fileset(即非表格数据)。这些数据都需要在统一的数据管理平台中进行管理,并通过SQL、Python、Scala等语言进行处理,从而支持模型训练。因此,我们建立了一个综合的开发能力体系。
以上就是关于Fileset方案的整体概述。
04
平台落地实践
Fileset在小米内部是如何落地的呢?其中涉及四项核心能力。
其次,我们提供了Notebook的在线开发能力,以前使用SQL,现在提供Python、Scala等开发语言的能力,Notebook的交互式开发产品已在内部平台落地,其价值在于提供算法开发的调试环境,后续还将提供GPU资源,用户无需在本地使用其他机器或跳板机进行算法处理,可直接在平台上进行算法开发。
最后一个核心能力是非表格数据的资产管理,包括成本管理、权限管理和生命周期管理等。有了这些能力后,我们能够对用户的文件进行统一而全面的管理。对于闲置的资产(例如存储了多天的大量文件),我们可以采用类似于表格数据的管理方式,例如TTL生命周期管理和TTV来完成数据的冷备和热备管理。总体而言,我们的思路是基于表格数据治理的经验,进一步扩展到非表格数据的管理能力。
功能落地后,在业务上取得了以下收益:
一是链路减少,效率提高。通过提供Fileset和Notebook的方案,原链路较长,需要多次在本地和线上之间跨平台操作,每个跨平台流程都需要单独进行认证。在线化后,所有东西都在一个管理平台上完成,除了特征平台可能有单独平台外,所有AI数据处理流程都在一个平台上,统一用Fileset进行对接和权限空间权限的对接。用户无需直接对接存储系统,只需要知道Fileset这个类似表格的概念,无需跳板机和本地开发环境,可在开发平台线上完成。
二是成本降低。如图所示,某内部业务中,在有了血缘和审计能力后,能明确哪些PB的数据可以删除,哪些可以冷备,哪些需要转移到另一个存储系统(如小米自研的LavaFS存储系统)。经过内部算法处理,LavaFS存储系统的存储成本理论上比HDFS降低80%。用户只需要知道Fileset,无需知道其下面存储的数据和存储系统,就能大大降低存储成本。通过Fileset概念,查找数据的访问情况、数据血缘情况和使用情况,才能对非表格数据进行各种数据治理。
05
总结与未来规划
接下来,我们的工作重点有以下几个方向:
首先,目前Fileset主要对接的是HDFS,未来我们计划逐步接入更多的数据源,例如JuiceFS等。我们会基于调研和用户使用情况,将这些数据源逐步纳入Fileset,实现各种存储系统的统一,从而构建一个以Fileset为特殊表概念的统一存储系统。
其次,我们将提供一个基于线上的框架,包括对PyTorch、TensorFlow等用户常用框架的支持。我们的目标是在平台上逐步替代本地平台,形成一个统一的开发平台。
第三,我们将打通上下游的开发链路,实现AI应用平台、资源平台等多种平台之间的无缝衔接,避免用户在不同平台间频繁切换,并简化使用过程。
最后,我们将不断改进和提升产品体验。
以上是对小米Fileset的整体介绍。谢谢。
06
Q&A
Q1:小米在进行项目或平台优化设计时,有哪些推动因素?在设计过程中是否对外界有参考,还是基于内部问题进行的设计和探索?
Q2:非表格数据是指研发写的研发代码文档吗?能否具体举几个例子?
A2:在最开始介绍概念时,提到了AI数据和非表格数据。非表格数据主要指一些音频、视频数据。例如小米的车有影像数据,小爱有许多语音数据等。在原来的大数据体系中,更多对接的是业务系统的数据,如研产供销服务等数据,而像这种音频视频文件的数据,虽然有大量价值,但此前未进行处理。这里的非表格数据主要指此类数据。
Q3:关于整个链路和平台优化的成本投入大概有多少?用户在应用时,是否会因平台更新而出现使用习惯上难以适配的问题?
Q4:AI的模型文件是否有版本管理的考虑?
A4:内部曾讨论过这个需求,但目前没有实施,后续会根据业务迭代情况来决定是否进行。
Q5:非结构数据是如何存储的?
A5:关于非结构化数据的存储,我之前简要提到了LavaFS。原先的数据存储在HDFS中,当然这些数据仍然可以存储在HDFS中,并通过Fileset进行封装。存储系统本身不需要改变,数据依然保存在原处。然而,我们也提供了一个由小米自主研发的存储系统,名为LavaFS。该系统在理论上可以减少80%的存储需求,显著降低存储成本,同时不影响存储和计算效率。
INTRODUCTION
何婵
小米科技
产品经理
现任小米大数据产品经理,武汉大学MEM硕士。加入小米4年,深度参与Mi-DataWorks(小米一站式数据生产平台)产品管理,当前聚焦于集团内AI数据存算管治一体化平台建设工作。