
DataHub 集成 SageMaker 元数据摄取指南模型、特征组、作业与血缘【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahubSageMaker 是 AWS 提供的机器学习平台本文基于 DataHub 开源仓库中的 SageMaker 摄取源metadata-ingestion/docs/sources/sagemaker/README.md系统讲解如何将 SageMaker 中的模型、特征组、作业及表级血缘等 ML 元数据同步到 DataHub。读完本文你将掌握 SageMaker 源的整体架构、概念映射、配置项含抽取开关与状态化摄取、血缘构建原理以及如何用实际 recipe 一键运行摄取。概述DataHub 对 SageMaker 的集成范围SageMaker 是 AWS 的机器学习平台。DataHub 的 SageMaker 集成覆盖以下 ML 实体模型Models包括 SageMaker Model、Model Package Group模型组以及模型对应的部署端点Endpoint特征组Feature GroupsSageMaker Feature Store 中的特征组及其中的特征Feature与主键Primary Key相关血缘元数据Lineage模型与端点、模型组与模型之间的关联关系以及作业输入/输出数据集的表级血缘状态化删除检测Stateful Deletion Detection结合 DataHub 的状态化摄取能力自动软删除上一轮存在、本轮已消失的实体。从源码实现看摄取入口类是 SagemakerSource其类文档明确说明该插件提取以下内容Feature groups特征组Models, jobs 以及两者之间的血缘例如作业产出模型或模型被作业使用。平台标识为sagemaker配置类为SagemakerSourceConfig支持状态为GAGenerally Available并声明了LINEAGE_COARSE粗粒度血缘能力默认开启。这一能力声明可以通过装饰器capability(SourceCapability.LINEAGE_COARSE, Enabled by default)在 sagemaker.py 中确认。概念映射SageMaker 实体到 DataHub 实体原文档指出SageMaker 源的“具体概念映射仍在完善中specific concept mapping is still pending”以下为 DataHub 中的通用概念映射源概念Source ConceptDataHub 概念说明Notes平台/账号/项目范围Platform/account/project scopePlatform Instance、Container在平台上下文中组织资产。核心技术资产如表/视图/主题/文件table/view/topic/fileDataset主要的被摄取技术资产。Schema 字段/列Schema fields / columnsSchemaField在支持 Schema 提取时包含。所有权与协作主体Ownership and collaboration principalsCorpUser、CorpGroup由支持所有权与身份元数据的模块发出。依赖与处理关系Dependencies and processing relationshipsLineage edges在支持且启用了血缘提取时可用。结合源码SageMaker 源在实现层面实际使用的 DataHub 实体还包括MLFeatureTable / MLFeature / MLPrimaryKey分别对应 SageMaker 特征组、特征与记录标识主键见 feature_groups.py 中的MLFeatureTableSnapshot、MLFeatureSnapshot、MLPrimaryKeySnapshot构造逻辑MLModel / MLModelGroup / MLModelDeployment对应 SageMaker 模型、模型包组与端点见 models.pyDataFlow / DataJob对应 SageMaker 的各种作业训练、处理、转换等见 jobs.pyDataset作业输入/输出的 S3 数据源被建模为 DatasetURN 通过 s3_util.py 的make_s3_urn生成。架构与处理流程SagemakerSource继承自StatefulIngestionSourceBase其工作单元生成流程get_workunits_internal见 sagemaker.py分为如下几个阶段构建血缘图LineageProcessor首先通过list_actions、list_artifacts、list_contexts分页拉取 SageMaker 的 Actions、Artifacts、Contexts 三类节点并用list_associations查询节点间的关联边构建内存中的血缘图。随后识别两类关键关系模型部署血缘对ActionType ModelDeployment的 action 节点取其入边被部署的模型/镜像与出边产出的端点得到「模型 URI/镜像 → 端点」映射模型组血缘对ContextType ModelGroup的 context 节点经由模型包Model Package关联到组内模型得到「模型 URI/镜像 → 模型组」映射。 相关实现见 lineage.py。提取特征组可选若extract_feature_groups为 true调用FeatureGroupProcessor逐个特征组生成 MLFeatureTable、MLFeature、MLPrimaryKey 工作单元。提取作业默认开启若extract_jobs不为 false调用JobProcessor遍历 AutoML、编译、超参调优、标注、处理、训练、转换七类作业。提取模型可选若extract_models为 true调用ModelProcessor结合第 1 步的血缘信息与第 3 步的作业-模型映射生成模型、模型组、端点工作单元。工作单元MetadataWorkUnit统一以 MetadataChangeEventMCE形式产出最终通过 sink 写入 DataHub。作业处理的三个阶段作业处理在 jobs.py 中采用三遍three-pass模式第一遍遍历全部作业调用对应describe_job接口获取详情并由各类型专属处理器process_training_job、process_processing_job等生成中间表示SageMakerJob同时收集作业使用的输入/输出数据集第二遍将输出作业output jobs归并到输入作业集合中聚合所有输入/输出数据集并为每个数据集生成 Dataset 工作单元第三遍为每个作业生成 DataFlow 与 DataJob 工作单元并以DataJobInputOutputClass记录输入/输出数据集与上游作业inputDatajobs。模型与作业的匹配机制在作业阶段JobProcessor维护两张映射表jobs.pymodel_image_to_jobs以模型数据 URLS3 ModelDataUrl为键记录训练作业JobDirection.TRAINING与该 URL 关联的超参数、指标转换作业则作为下游作业JobDirection.DOWNSTREAMmodel_name_to_jobs以模型名称为键记录引用该模型的作业。模型阶段models.py 的match_model_jobs再根据模型详情中的Containers与PrimaryContainer的ModelDataUrl反查映射表从而把训练作业的超参数hyperParams与指标trainingMetrics挂到 MLModel 上并把作业区分为trainingJobs与downstreamJobs。支持的数据类型与作业类型SageMaker 作业类型JobProcessor支持七类作业job_classes.py每类作业通过SageMakerJobInfo子类声明对应的 boto3 list/describe 命令、响应字段键与状态映射作业类型对应 SageMaker APIlist/describeDataHub 状态映射示例auto_mlAutoML 自动建模list_auto_ml_jobs/describe_auto_ml_job_v2Completed→COMPLETED、InProgress→IN_PROGRESS、Failed→FAILED、Stopped→STOPPED、Stopping→STOPPINGcompilation编译作业list_compilation_jobs/describe_compilation_jobINPROGRESS→IN_PROGRESS、COMPLETED→COMPLETED、STARTING→STARTING 等hyper_parameter_tuning超参调优list_hyper_parameter_tuning_jobs/describe_hyper_parameter_tuning_jobInProgress→IN_PROGRESS、Completed→COMPLETED 等labeling数据标注list_labeling_jobs/describe_labeling_jobInitializing→STARTING、InProgress→IN_PROGRESS 等processing数据处理list_processing_jobs/describe_processing_jobInProgress→IN_PROGRESS、Completed→COMPLETED 等training模型训练list_training_jobs/describe_training_jobInProgress→IN_PROGRESS、Completed→COMPLETED 等transform批量转换list_transform_jobs/describe_transform_jobInProgress→IN_PROGRESS、Completed→COMPLETED 等作业详情中的状态字符串通过各status_map映射到 DataHub 的JobStatusClass遇到未知状态时会记录 warning 并回退为JobStatusClass.UNKNOWN见 jobs.py。特征类型映射特征组的字段类型在 feature_groups.py 中映射为 DataHub 的MLFeatureDataTypeSageMaker FeatureTypeDataHub MLFeatureDataTypeStringTEXTIntegralORDINALFractionalCONTINUOUS其他UNKNOWN并记录 warning特征组的RecordIdentifierFeatureName被摄取为 MLPrimaryKey其余 FeatureDefinition 被摄取为 MLFeature特征数据源sources会解析离线存储OfflineStoreConfig的 S3 路径与关联的 AWS Glue 数据目录表若配置了 DataCatalogConfig。注意离线存储若关联 Glue 表本源不会摄取 Glue 表的完整元数据需要额外运行 Glue 摄取相关提示日志见 feature_groups.py。端点状态映射端点状态通过ENDPOINT_STATUS_MAPmodels.py映射到DeploymentStatusClassSageMaker EndpointStatusDataHub DeploymentStatusOutOfServiceOUT_OF_SERVICECreatingCREATINGUpdating / SystemUpdatingUPDATINGRollingBackROLLING_BACKInServiceIN_SERVICEDeletingDELETINGFailedFAILEDUnknown / 其他UNKNOWN摄取配置详解基础 Recipe仓库提供了可直接运行的示例配置 sagemaker_to_datahub.dhub.yaml# in this example, AWS creds are detected automatically # see https://docs.datahub.com/docs/generated/ingestion/sources/sagemaker/ for complete documentation source: type: sagemaker config: aws_region: us-west-2 # see https://docs.datahub.com/docs/metadata-ingestion/sink_docs/datahub for complete documentation sink: type: datahub-rest config: server: http://localhost:8080运行方式在metadata-ingestion目录下datahub ingest -c examples/recipes/sagemaker_to_datahub.dhub.yamlSagemakerSourceConfig 配置项配置类定义于 common.py其基础能力继承自AwsSourceConfigaws_common.py。核心配置项如下配置项类型默认值说明aws_regionstr无AWS 区域代码如us-west-2可从环境/凭证链自动探测extract_feature_groupsbooltrue是否提取特征组Feature Groupsextract_modelsbooltrue是否提取模型Modelsextract_jobsbool 或 dicttrue是否提取作业传字典可细粒度控制具体作业类型stateful_ingestionobject无状态化摄取配置见下文extract_jobs支持两种取值true表示提取全部七类作业也可以传入字典按作业类型开关例如仅提取训练与转换作业extract_jobs: { training: true, transform: true, auto_ml: false, ... }源码中按job_type.value逐一判断见 jobs.py。AWS 凭证支持自动检测环境变量、共享凭证文件、IAM 角色等也支持在配置中显式指定aws_region、aws_profile等继承自AwsSourceConfig的能力。状态化摄取与陈旧实体移除SagemakerSource集成 DataHub 的状态化摄取框架stateful_ingestion_base.pySagemakerSourceConfig内嵌StatefulStaleMetadataRemovalConfigstale_entity_removal_handler.py配置项类型默认值说明stateful_ingestion.enabledboolfalse总开关开启后启用状态化摄取需要配置 state providerstateful_ingestion.remove_stale_metadataboolfalse软删除「上次成功运行存在、本次运行缺失」的实体stateful_ingestion.fail_safe_thresholdfloat70.0安全阈值百分比。当相比上次状态的实体变化比例超过该阈值时跳过陈旧实体删除并阻止状态提交防止源配置误改导致大面积误删示例配置source: type: sagemaker config: aws_region: us-west-2 extract_feature_groups: true extract_models: true extract_jobs: true stateful_ingestion: enabled: true remove_stale_metadata: true fail_safe_threshold: 70.0 state_provider: type: datahub config: datahub_api: server: http://localhost:8080血缘构建原理深入SageMaker 原生提供 ML Lineage Tracking 能力Actions / Artifacts / Contexts / Associations。DataHub 的LineageProcessorlineage.py在此基础上构建两类关键血缘模型 → 端点血缘get_model_deployment_lineage针对每个ModelDeploymentaction收集入边中SourceType Model的SourceUri与SourceType Image的镜像 URI收集出边中DestinationType Endpoint且SourceType ARN的端点 URI从而建立映射lineage.py模型组 → 模型血缘get_model_group_lineage针对每个ModelGroupcontext经模型包Model Package的入边递归找到组内模型的 URI/镜像建立模型组 ARN → 模型映射lineage.py。在模型阶段ModelProcessor.get_model_wu使用上述血缘信息把端点解析为 MLModel 的deployments把模型组解析为groups与 BrowsePaths/sagemaker/group未分组模型使用/sagemaker实现“模型 → 部署端点”与“模型 → 模型组”的可视化血缘关系models.py。作业血缘则表现为训练/处理/转换等作业的 S3 输入输出被建模为 Dataset通过DataJobInputOutputClass.inputDatasets/outputDatasets挂接超参调优作业产出训练作业、转换作业引用标注/AutoML 作业等跨作业关系通过inputDatajobs串联第二遍处理时输出作业被归并到输入集合见 jobs.py。测试与验证仓库为 SageMaker 源提供了完整的单元测试可作为理解行为与验证部署的参考测试入口 test_sagemaker_source.py使用botocore.stub.Stubber模拟 boto3 SageMaker 客户端的 list/describe 响应覆盖 actions、artifacts、contexts、associations、feature groups、七类作业、endpoints、model package groups、models通过SagemakerSource.get_workunits()生成 MCE 并与黄金文件比对黄金文件 sagemaker_mces_golden.json记录了预期产出的全部 MetadataChangeEvent响应桩 test_sagemaker_source_stubs.py包含各类 API 响应样例便于理解每个实体被映射成何种 URN 与 aspect。如果你希望本地快速验证摄取逻辑可参考上述测试的桩数据编写一个最小化的模拟摄取脚本但注意不要修改仓库文件。运行前提与限制前提需要可访问 SageMaker API 的 AWS 凭证建议使用最小权限 IAM 策略至少包含 SageMaker 相关资源的List/Describe权限以及可访问的 DataHub 实例recipe 中 sink 指向http://localhost:8080。区域摄取针对单一 AWS 区域aws_region跨区域资产需配置多个 source。限制当前实现聚焦 S3 数据源的血缘建模Processing 作业中的 Athena/Redshift 数据源在源码中以 TODO 标注暂未摄取jobs.pyFeature Store 的在线存储OnlineStoreConfig因元数据不足也未生成数据集feature_groups.py。Glue 表元数据需另行运行 Glue 摄取。概念映射按原文档说明SageMaker 到 DataHub 的具体概念映射仍处于完善中本文概念映射表为 DataHub 通用映射实体 URN 生成细节如make_ml_model_urn、make_s3_urn等可参考 sagemaker.py 与各 processor 源码。小结DataHub 的 SageMaker 摄取源通过「血缘图预构建 → 特征组 → 作业 → 模型」的流水线把 SageMaker 的模型、模型组、端点、特征组与七类作业完整纳入 DataHub 的 ML 资产目录并提供表级血缘与状态化删除能力。配合仓库中的示例 recipe 与单元测试你可以快速在本地搭建并验证一条从 AWS SageMaker 到 DataHub 的元数据管线。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考