有效的元数据管理是任何完善的特征存储的根本。在线和离线存储处理数据本身,而服务层提供访问,但元数据层为系统带来了一致性、可发现性和可信度。如果没有周密的策略,特征存储很快就会变成一个杂乱无章的特征集合,阻碍协作,损害可复现性,并使治理几乎无法实现。在本节中,我们研究适合复杂生产环境的元数据管理实施策略。
特征存储元数据的范围
在进阶使用中,特征存储元数据远不止特征名称和数据类型。一个全面的元数据系统必须捕获每个特征的背景、历史、质量和治理方面。重要类别包括:
- 特征定义: 这种核心元数据包括唯一名称、版本、描述、数据类型(包括对嵌入 (embedding)或列表等复杂类型的处理)、关联实体(例如,
user_id、product_id)以及所有权信息。对于不断变化的系统,跟踪模式历史也很重要。
- 转换逻辑: 元数据应将特征与其生成的特定代码或配置关联起来。这包括转换函数名称、代码仓库路径、特定版本或提交哈希,以及对上游特征或数据源的依赖。这对于理解特征来源和确保可复现性是根本的。
- 操作信息: 需要有关特征物理状态和生命周期的详细信息。这包括存储位置(数据湖中的路径、数据库中的表)、更新频率、数据新鲜度时间戳(上次成功更新)、分区方案,以及在摄取或计算过程中可能捕获的数据质量指标或摘要。
- 血缘: 理解端到端的数据流很重要。血缘元数据跟踪从原始数据源、经过各种转换步骤,到特征在在线/离线存储中的最终形式,以及进一步到使用该特征的模型或应用程序的关系。这对于调试、影响分析和合规审计非常有价值。
- 治理和使用: 与治理相关的元数据包括访问控制策略、指示敏感性(例如,个人身份信息)的标签、数据保留策略、特征状态(例如,实验性、生产、已弃用)和使用指南。跟踪哪些模型或团队使用哪些特征有助于管理依赖关系和弃用周期。
元数据存储的架构方法
有效存储和提供这些各种元数据需要仔细的架构选择。没有单一的最佳方法;最佳解决方案取决于规模、团队结构和现有基础设施。
集中式元数据存储库
一种常见模式是使用一个专用、集中式存储库,作为所有特征元数据的单一事实来源。
- 优点: 提供了统一视图,简化了发现,强制了一致性,并促进了全球治理策略。
- 缺点: 如果未为规模化设计,可能会成为一个构建和维护复杂的系统,潜在地成为单点故障或性能瓶颈。查询复杂关系(如血缘)可能需要专业存储。
- 技术: 关系型数据库(如PostgreSQL)常用于结构化定义元数据。图数据库(如Neo4j)擅长建模和查询复杂的血缘和关系。专用开源元数据平台(例如DataHub、Apache Atlas、Amundsen)提供专为数据发现和治理定制的模式和API。
分布式元数据管理
或者,元数据可以存储在更接近生成或使用它的组件的地方。
- 优点: 最初实施起来可能更简单,与组件一同自然扩展,减少对中心系统的依赖。例如,转换逻辑元数据可能与版本控制中的转换代码一同存在。
- 缺点: 可发现性成为一个主要挑战。实现一致的、系统范围的元数据视图需要聚合或联邦机制。实施全球标准和治理更加困难。
- 实施: 通常依赖约定、单个组件公开的API,以及潜在的后台进程定期抓取和聚合元数据。
混合模式
许多进阶系统采用混合方法,集中存储核心定义、治理规则和可发现性索引,同时允许操作或详细的血缘元数据存储在更接近源系统或计算引擎的位置。这在统一视图的需求与分布带来的可扩展性优势之间取得平衡。
特征注册中心:您的元数据网关
无论底层存储架构如何,特征注册中心组件都充当与元数据交互的主要接口。该接口提供管理和访问元数据所需的编程功能。
- 注册: 定义新特征、特征组(一组相关特征,通常一起计算)和关联转换。
- 发现: 根据名称、描述、标签、实体或其他元数据字段搜索和浏览可用特征。
- 检索: 获取特定特征的详细元数据,包括定义、血缘和操作状态。
- 更新: 管理特征的生命周期,包括版本控制和弃用。
设计良好的注册中心API对于将特征存储集成到更广泛的MLOps生态系统非常重要。
自动化元数据捕获和维护
手动管理元数据容易出错且无法大规模持续。自动化是必要的。
- CI/CD 集成: 特征定义和转换逻辑应在版本控制(例如Git)中管理。CI/CD 流水线可以在代码合并时自动解析定义,在注册中心注册或更新特征,并将代码版本与特征版本关联。
- 流水线集成: 可以配置数据处理框架(如Spark、Flink、Beam),以在特征计算任务期间自动捕获血缘信息(输入源、输出特征)和操作元数据(运行时间、数据量、质量检查)。
- 模型训练/服务集成: 工具可以自动跟踪哪些特征版本用于训练特定模型版本,或者预测服务正在请求哪些特征,从而丰富使用元数据。
元数据关系的可视化
通过可视化通常更容易理解不同元数据实体之间的连接。图表示对于血缘和依赖关系特别有效。
该图说明了元数据的互联性。“特征定义”充当中心节点,通过“转换逻辑”与其源数据关联,通过“在线存储”和“离线存储”关联其物理存储位置,以及其消费者(“机器学习 (machine learning)模型”、“BI 看板”)和适用的“治理策略”。
进阶元数据管理问题
实施基本的元数据系统是可实现的,但进阶用例带来了更多挑战:
- 模式演变: 如何管理特征数据类型或含义随时间的变化?策略包括严格版本控制、注册时的兼容性检查,以及针对破坏性更改的明确沟通渠道。
- 一致性: 确保元数据准确反映系统状态,特别是在最终一致性的分布式环境中,需要仔细设计。可能需要协调过程或事务性更新。
- 可扩展性: 元数据系统必须扩展以处理可能数十万的特征版本、来自自动化流水线的频繁更新,以及用于血缘追踪或影响分析的复杂查询。这会影响技术选择(例如,数据库索引、查询优化、缓存)。
- 可发现性界面: 除了简单的API调用,提供直观的用户界面或搜索界面,供数据科学家和工程师查看和理解特征,对于采用很重要。
总而言之,元数据管理不是事后才考虑的事情,而是成功进阶特征存储架构的核心组成部分。一个设计良好的策略,包含全面的元数据类别、合适的存储模式、自动化以及通过注册中心进行的用户友好访问,是构建可扩展、可靠和可治理的机器学习 (machine learning)系统的根本。