十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

DataHub Java SDK V2 之 MLModelGroup 实体实战:用代码管理 ML 模型族的版本、血缘与元数据

DataHub Java SDK V2 之 MLModelGroup 实体实战:用代码管理 ML 模型族的版本、血缘与元数据 数据目录数据治理数据血缘后端前端数据工程数据集成【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址https://gitcode.com/GitHub_Trending/da/datahub点击查看免费下载DataHub 的 MLModelGroupML 模型组实体用于将同一模型家族Model Family下的一组版本化 ML 模型组织在一起统一承载版本管理、A/B 测试、环境流转DEV/STAGING/PROD以及跨训练与部署管线的完整血缘追踪。本文基于 DataHub 仓库中的 mlmodelgroup-entity.md 官方指南结合 MLModelGroup.java 源码、可运行的 examples 与单元/集成测试带你从 URN 结构、Builder API 到五种实战模式完整掌握用 Java SDK V2 创建与维护 ML Model Group 的全部能力。一、MLModelGroup 实体概述MLModelGroup实体在 DataHub 中代表一组版本化的 ML 模型集合。与单个MLModel实体记录某个具体训练产物的指标与超参数不同模型组关注的是同一业务模型在不同版本、不同环境下的演进轨迹从而支持版本管理追踪模型从 v1.0、v1.1 到 v2.0 的演进A/B 测试将 champion冠军与 challenger挑战者模型归入同一组进行对比多环境流转同一模型族在 DEV、STAGING、PROD 环境中的对应关系框架变体管理承载同一业务逻辑的不同实现血缘聚合在模型族层面统一追踪训练作业Training Jobs与下游作业Downstream Jobs形成的完整数据流。从源码看实体类MLModelGroup继承自Entity并实现了HasTags、HasGlossaryTerms、HasOwners、HasDomains、HasSubTypes、HasStructuredProperties、HasDocumentation等多个能力接口实体类型常量ENTITY_TYPE mlModelGroup见 MLModelGroup.java。其默认加载的 aspects 包括Ownership、GlobalTags、GlossaryTerms、Domains、Status、InstitutionalMemory、MLModelGroupProperties与EditableMLModelGroupProperties这决定了它天生具备标签、属主、术语、域、文档等全套标准元数据能力。二、URN 结构MLModelGroup URN 遵循以下模式urn:li:mlModelGroup:(urn:li:dataPlatform:{platform},{group_name},{environment})组成要素组件说明示例值platformML 平台mlflow、sagemaker、vertexai、tensorflowgroup_name模型组的唯一标识recommendation_modelsenvironmentFabric 环境类型PROD、DEV、STAGING、TEST示例urn:li:mlModelGroup:(urn:li:dataPlatform:mlflow,recommendation_models,PROD) urn:li:mlModelGroup:(urn:li:dataPlatform:sagemaker,fraud_detection_family,PROD) urn:li:mlModelGroup:(urn:li:dataPlatform:vertexai,churn_prediction_models,STAGING)在源码实现中Builder 的build()方法会依次构造DataPlatformUrn(platform)、FabricType.valueOf(env)再组合出MlModelGroupUrn当platform或groupId缺失时直接抛出IllegalArgumentException见 MLModelGroup.java。这一点在单元测试 MLModelGroupTest.java 中被明确验证testMLModelGroupBuilderMissingPlatform与testMLModelGroupBuilderMissingGroupId均断言抛出异常而testMLModelGroupUrnStructure则验证生成的 URN 必须同时包含urn:li:mlModelGroup:、平台名、组名与PROD。三、ML 模型组核心概念3.1 模型族Model Families一个模型组代表一个相关模型的家族通常是同一模型的不同版本版本演进记录模型随时间的演化v1.0、v1.1、v2.0A/B 测试将 champion 与 challenger 模型分组对比多环境同一模型族横跨 DEV、STAGING、PROD框架变体同一业务逻辑的不同实现方式。3.2 与 MLModel 的关系一对多一个模型组包含多个模型版本化组内每个独立模型代表该组的一个具体版本共享元数据目的purpose、业务上下文、团队归属等公共属性在组级共享血缘聚合训练作业与下游作业可在组级进行统一追踪。3.3 训练作业Training Jobs指训练该组模型的数处理作业或流水线。训练作业建立训练数据 → 模型组的血缘关系清晰展示构建该模型所有版本所用的数据来源。3.4 下游作业Downstream Jobs指消费或使用该组模型进行推理、评分、预测的作业。下游作业建立模型组 → 应用的血缘关系展示这些模型在哪些业务场景中被使用。四、创建 ML 模型组4.1 基础示例MLModelGroup modelGroup MLModelGroup.builder() .platform(mlflow) .groupId(recommendation_models) .env(PROD) .name(Product Recommendation Model Family) .description(Collection of product recommendation models trained on user behavior data) .build(); // Add standard metadata modelGroup.addTag(recommendation) .addTag(production) .addOwner(urn:li:corpuser:ml_team, OwnershipType.TECHNICAL_OWNER) .setDomain(urn:li:domain:MachineLearning); // Add training job references modelGroup.addTrainingJob(urn:li:dataProcessInstance:training_pipeline_2025_01); // Save to DataHub client.entities().upsert(modelGroup);4.2 Builder 选项详解MLModelGroup modelGroup MLModelGroup.builder() .platform(sagemaker) // 必填ML 平台 .groupId(churn_prediction_models) // 必填模型组标识 .env(PROD) // 可选默认 PROD .name(Customer Churn Prediction Models) // 可选人类可读名称 .description(Models predicting customer churn) // 可选 .externalUrl(https://mlflow.company.com/groups/123) // 可选 .build();Builder 还支持customProperties、created、lastModified、trainingJobs、downstreamJobs、urn(MlModelGroupUrn)等入参。其中urn()方法会反向从已有 URN 中提取platform、groupId、env三个字段见 MLModelGroup.java。底层实现要点源码印证Builder 属性 vs Patch 更新是两种写入机制Builder 中设置的属性name、description、externalUrl、customProperties、created、lastModified、trainingJobs、downstreamJobs会直接缓存在MLModelGroupPropertiesaspect 中而实体构建后调用setDescription()、addTag()等 setter 方法则生成patch MCPMetadataChangeProposal在upsert时以累积补丁的形式提交见 MLModelGroup.java 的 Javadoc 说明平台与组名必填校验缺少platform或groupId会在build()时抛出IllegalArgumentExceptionexternalUrl 合法性校验非法 URL 同样会在构建阶段抛出IllegalArgumentException见 MLModelGroup.javaSDK 模式与 INGESTION 模式默认的 SDK 模式下用户编辑写入editableaspects如editableMLModelGroupPropertiesINGESTION 模式供系统/流水线写入系统 aspects。实体默认为 SDK 模式可通过setMode()切换见 MLModelGroupTest.java。仓库还提供了两个可直接运行的完整示例类MLModelGroupCreateExample.java创建 标签 属主 训练作业 域与 MLModelGroupFullExample.java覆盖全部元数据操作。二者都展示了客户端初始化模式DataHubClientV2 client DataHubClientV2.builder() .server(System.getenv().getOrDefault(DATAHUB_SERVER, http://localhost:8080)) .token(System.getenv(DATAHUB_TOKEN)) .build(); if (!client.testConnection()) { System.err.println(Failed to connect to DataHub server); return; }即通过环境变量DATAHUB_SERVER默认http://localhost:8080与DATAHUB_TOKEN配置连接testConnection()校验连通性最后client.close()释放资源。五、ML 模型组操作5.1 显示名称与描述// 名称通常在 Builder 中设置创建后只读 String name modelGroup.getName(); // 描述可通过 patch 操作更新 modelGroup.setDescription(Updated description for customer churn model family); // 获取属性 String description modelGroup.getDescription();从源码看setDescription()生成的是针对editableMLModelGroupPropertiesaspect 的 patch写入路径为/description而getName()、getDescription()读取的是MLModelGroupPropertiesaspect见 MLModelGroup.java。单元测试testMLModelGroupSetDescription验证了生成的 patch 的 aspect 名为editableMlModelGroupProperties见 MLModelGroupTest.java。5.2 外部链接External URL// 外部链接通常在 Builder 中设置 MLModelGroup modelGroup MLModelGroup.builder() .platform(mlflow) .groupId(fraud_models) .externalUrl(https://mlflow.company.com/experiments/fraud-detection) .build(); // 获取外部链接 String url modelGroup.getExternalUrl();5.3 自定义属性Custom Properties// 自定义属性在 Builder 中设置 MapString, String customProps new HashMap(); customProps.put(model_family, transformer); customProps.put(framework, pytorch); customProps.put(use_case, fraud_detection); customProps.put(model_type, classification); MLModelGroup modelGroup MLModelGroup.builder() .platform(vertexai) .groupId(fraud_models) .customProperties(customProps) .build(); // 获取自定义属性 MapString, String props modelGroup.getCustomProperties();5.4 时间戳Timestampsimport com.linkedin.common.TimeStamp; // 设置创建与修改时间戳 TimeStamp created new TimeStamp().setTime(System.currentTimeMillis()); TimeStamp lastModified new TimeStamp().setTime(System.currentTimeMillis()); MLModelGroup modelGroup MLModelGroup.builder() .platform(mlflow) .groupId(recommendation_models) .created(created) .lastModified(lastModified) .build(); // 获取时间戳 TimeStamp createdTime modelGroup.getCreated(); TimeStamp modifiedTime modelGroup.getLastModified();在底层 MLModelGroupProperties.pdl 中created/lastModified均为TimeStamp类型而旧的createdAtTime类型已被标记为deprecated并额外提供versionVersionTag字段用于记录模型组版本。5.5 训练作业血缘// 逐个添加训练作业 modelGroup.addTrainingJob(urn:li:dataProcessInstance:training_pipeline_v1_2025_01) .addTrainingJob(urn:li:dataProcessInstance:training_pipeline_v2_2025_03); // 一次性设置全部训练作业替换已有 ListString trainingJobs Arrays.asList( urn:li:dataProcessInstance:training_pipeline_v1_2025_01, urn:li:dataProcessInstance:training_pipeline_v2_2025_03, urn:li:dataProcessInstance:training_pipeline_v3_2025_06 ); modelGroup.setTrainingJobs(trainingJobs); // 移除一个训练作业 modelGroup.removeTrainingJob(urn:li:dataProcessInstance:training_pipeline_v1_2025_01); // 获取训练作业 ListString jobs modelGroup.getTrainingJobs();5.6 下游作业血缘// 逐个添加下游作业 modelGroup.addDownstreamJob(urn:li:dataProcessInstance:prediction_service) .addDownstreamJob(urn:li:dataProcessInstance:batch_scoring_job); // 一次性设置全部下游作业替换已有 ListString downstreamJobs Arrays.asList( urn:li:dataProcessInstance:prediction_service, urn:li:dataProcessInstance:batch_scoring_job, urn:li:dataProcessInstance:real_time_inference_api ); modelGroup.setDownstreamJobs(downstreamJobs); // 移除一个下游作业 modelGroup.removeDownstreamJob(urn:li:dataProcessInstance:prediction_service); // 获取下游作业 ListString jobs modelGroup.getDownstreamJobs();关于训练/下游作业的实现细节见 MLModelGroup.javaaddTrainingJob()通过getOrCreateMLModelGroupProperties()惰性创建/复用MLModelGroupPropertiesaspect并自动去重——单元测试testMLModelGroupAddDuplicateTrainingJob断言重复添加同一作业后集合大小仍为 1setTrainingJobs()/setDownstreamJobs()为整体替换语义且因为底层暂无对应 patch builder采用的是直接缓存 aspect的方式源码注释明确说明此点所有作业 URN 均通过Urn.createFromString()解析非法 URN 会抛出IllegalArgumentException血缘字段定义在MLModelLineageInfotrainingJobs/downstreamJobs由MLModelGroupProperties继承同时继承的还有CustomProperties与ExternalReference。六、标准元数据操作6.1 标签Tags// 添加标签可带或不带 urn:li:tag: 前缀 modelGroup.addTag(production) .addTag(urn:li:tag:ml-model-group) .addTag(high-priority); // 移除标签 modelGroup.removeTag(production);6.2 属主Owners// 添加不同类型的属主 modelGroup.addOwner(urn:li:corpuser:ml_platform_team, OwnershipType.TECHNICAL_OWNER) .addOwner(urn:li:corpuser:data_science_lead, OwnershipType.TECHNICAL_OWNER) .addOwner(urn:li:corpuser:product_team, OwnershipType.BUSINESS_OWNER); // 移除属主 modelGroup.removeOwner(urn:li:corpuser:ml_platform_team);6.3 术语Glossary Terms// 添加术语 modelGroup.addTerm(urn:li:glossaryTerm:MachineLearning.ModelGroup) .addTerm(urn:li:glossaryTerm:CustomerAnalytics.Prediction); // 移除术语 modelGroup.removeTerm(urn:li:glossaryTerm:MachineLearning.ModelGroup);6.4 域Domain// 设置域 modelGroup.setDomain(urn:li:domain:MachineLearning); // 移除域 modelGroup.removeDomain();从单元测试可以确认这些操作各自的底层 aspectaddTag对应globalTags补丁、addTerm对应glossaryTerms补丁、addOwner对应ownership补丁而setDomain走的是aspect 缓存而非 patch见 MLModelGroupTest.java。七、常见实战模式7.1 完整模型组工作流// 1. 创建携带完整元数据的模型组 MapString, String customProperties new HashMap(); customProperties.put(model_family, transformer); customProperties.put(framework, pytorch); customProperties.put(use_case, customer_churn_prediction); customProperties.put(model_type, classification); customProperties.put(deployment_status, production); MLModelGroup modelGroup MLModelGroup.builder() .platform(sagemaker) .groupId(customer_churn_predictor) .env(PROD) .name(Customer Churn Prediction Model Family) .description( Collection of customer churn prediction models trained on historical customer behavior, subscription data, and engagement metrics. Models are retrained monthly and deployed across all customer touchpoints.) .externalUrl(https://ml-platform.example.com/models/churn-predictor) .customProperties(customProperties) .build(); // 2. 添加组织级元数据 modelGroup.addTag(churn-prediction) .addTag(classification) .addTag(production) .addTag(customer-analytics) .addOwner(urn:li:corpuser:ml_team, OwnershipType.TECHNICAL_OWNER) .addOwner(urn:li:corpuser:product_team, OwnershipType.BUSINESS_OWNER) .addTerm(urn:li:glossaryTerm:MachineLearning.Classification) .addTerm(urn:li:glossaryTerm:CustomerAnalytics.ChurnPrediction) .setDomain(urn:li:domain:MachineLearning); // 3. 添加训练作业血缘 modelGroup.addTrainingJob(urn:li:dataProcessInstance:training_pipeline_v1_2025_01) .addTrainingJob(urn:li:dataProcessInstance:training_pipeline_v2_2025_03) .addTrainingJob(urn:li:dataProcessInstance:training_pipeline_v3_2025_06); // 4. 添加下游作业血缘 modelGroup.addDownstreamJob(urn:li:dataProcessInstance:prediction_service_deployment) .addDownstreamJob(urn:li:dataProcessInstance:batch_scoring_job) .addDownstreamJob(urn:li:dataProcessInstance:real_time_inference_api); // 5. 保存到 DataHub client.entities().upsert(modelGroup);参考 MLModelGroupFullExample.java 的做法你还可以在upsert前通过modelGroup.getPendingPatches().size()查看累积的补丁数量并在完成后用client.getConfig().getServer() /mlModelGroup/ modelGroup.getUrn()拼接出可直达 UI 的查看地址。7.2 版本化模型族模式// 第一步创建模型组 MLModelGroup modelGroup MLModelGroup.builder() .platform(tensorflow) .groupId(fraud_detection_models) .env(PROD) .name(Fraud Detection Model Family) .description(Collection of fraud detection models across versions and environments) .build(); modelGroup.addTag(fraud-detection) .addOwner(urn:li:corpuser:fraud_ml_team, OwnershipType.TECHNICAL_OWNER) .setDomain(urn:li:domain:FraudPrevention); client.entities().upsert(modelGroup); // 第二步在组内创建各版本模型 MLModel modelV1 MLModel.builder() .platform(tensorflow) .name(fraud_detector_v1_0) .env(PROD) .displayName(Fraud Detector v1.0) .build(); modelV1.setModelGroup(urn:li:mlModelGroup:(urn:li:dataPlatform:tensorflow,fraud_detection_models,PROD)) .addTrainingMetric(accuracy, 0.92) .addCustomProperty(version, 1.0) .addCustomProperty(release_date, 2025-01-15); client.entities().upsert(modelV1); MLModel modelV2 MLModel.builder() .platform(tensorflow) .name(fraud_detector_v2_0) .env(PROD) .displayName(Fraud Detector v2.0) .build(); modelV2.setModelGroup(urn:li:mlModelGroup:(urn:li:dataPlatform:tensorflow,fraud_detection_models,PROD)) .addTrainingMetric(accuracy, 0.95) .addCustomProperty(version, 2.0) .addCustomProperty(release_date, 2025-06-15) .addCustomProperty(improvements, New feature engineering and ensemble methods); client.entities().upsert(modelV2);7.3 多环境模型组模式// 为每个环境创建模型组 MLModelGroup devGroup MLModelGroup.builder() .platform(mlflow) .groupId(recommendation_models) .env(DEV) .name(Recommendation Models - Development) .description(Development versions of recommendation models) .build(); devGroup.addTag(development) .addOwner(urn:li:corpuser:ml_dev_team, OwnershipType.TECHNICAL_OWNER); client.entities().upsert(devGroup); MLModelGroup stagingGroup MLModelGroup.builder() .platform(mlflow) .groupId(recommendation_models) .env(STAGING) .name(Recommendation Models - Staging) .description(Staging versions of recommendation models for testing) .build(); stagingGroup.addTag(staging) .addOwner(urn:li:corpuser:ml_qa_team, OwnershipType.TECHNICAL_OWNER); client.entities().upsert(stagingGroup); MLModelGroup prodGroup MLModelGroup.builder() .platform(mlflow) .groupId(recommendation_models) .env(PROD) .name(Recommendation Models - Production) .description(Production recommendation models serving live traffic) .build(); prodGroup.addTag(production) .addTag(business-critical) .addOwner(urn:li:corpuser:ml_prod_team, OwnershipType.TECHNICAL_OWNER) .addOwner(urn:li:corpuser:product_team, OwnershipType.BUSINESS_OWNER) .setDomain(urn:li:domain:ProductRecommendations); client.entities().upsert(prodGroup);7.4 A/B 测试模型组模式// 为 A/B 测试创建模型组 MLModelGroup abTestGroup MLModelGroup.builder() .platform(sagemaker) .groupId(product_ranking_ab_test) .env(PROD) .name(Product Ranking A/B Test Models) .description(Model group for A/B testing different product ranking algorithms) .build(); MapString, String abTestProps new HashMap(); abTestProps.put(test_type, ab_test); abTestProps.put(test_id, ranking_experiment_2025_10); abTestProps.put(start_date, 2025-10-01); abTestProps.put(expected_end_date, 2025-11-01); MLModelGroup groupWithProps MLModelGroup.builder() .platform(sagemaker) .groupId(product_ranking_ab_test) .env(PROD) .customProperties(abTestProps) .build(); abTestGroup.addTag(ab-test) .addTag(experiment) .addOwner(urn:li:corpuser:growth_team, OwnershipType.BUSINESS_OWNER) .addOwner(urn:li:corpuser:ml_team, OwnershipType.TECHNICAL_OWNER); client.entities().upsert(abTestGroup); // 冠军模型80% 流量 MLModel championModel MLModel.builder() .platform(sagemaker) .name(ranking_champion_collaborative_filter) .env(PROD) .displayName(Champion: Collaborative Filtering) .build(); championModel.setModelGroup(urn:li:mlModelGroup:(urn:li:dataPlatform:sagemaker,product_ranking_ab_test,PROD)) .addCustomProperty(traffic_percentage, 80) .addCustomProperty(model_role, champion) .addTrainingMetric(ndcg, 0.82); client.entities().upsert(championModel); // 挑战者模型20% 流量 MLModel challengerModel MLModel.builder() .platform(sagemaker) .name(ranking_challenger_neural_network) .env(PROD) .displayName(Challenger: Neural Network) .build(); challengerModel.setModelGroup(urn:li:mlModelGroup:(urn:li:dataPlatform:sagemaker,product_ranking_ab_test,PROD)) .addCustomProperty(traffic_percentage, 20) .addCustomProperty(model_role, challenger) .addTrainingMetric(ndcg, 0.85); client.entities().upsert(challengerModel);7.5 完整血缘模式// 创建带完整血缘追踪的模型组 MLModelGroup modelGroup MLModelGroup.builder() .platform(vertexai) .groupId(customer_ltv_models) .env(PROD) .name(Customer Lifetime Value Models) .description(Models predicting customer lifetime value for marketing campaigns) .build(); // 添加上游训练作业血缘数据来源 modelGroup.addTrainingJob(urn:li:dataProcessInstance:customer_data_etl_2025_01) .addTrainingJob(urn:li:dataProcessInstance:feature_engineering_pipeline_2025_01) .addTrainingJob(urn:li:dataProcessInstance:model_training_pipeline_2025_01); // 添加下游作业血缘消费方 modelGroup.addDownstreamJob(urn:li:dataProcessInstance:ltv_scoring_batch_job) .addDownstreamJob(urn:li:dataProcessInstance:marketing_campaign_targeting) .addDownstreamJob(urn:li:dataProcessInstance:customer_segmentation_pipeline) .addDownstreamJob(urn:li:dataProcessInstance:retention_prediction_service); modelGroup.addTag(ltv-prediction) .addTag(marketing-analytics) .addOwner(urn:li:corpuser:marketing_analytics_team, OwnershipType.BUSINESS_OWNER) .addOwner(urn:li:corpuser:ml_platform_team, OwnershipType.TECHNICAL_OWNER) .setDomain(urn:li:domain:Marketing); client.entities().upsert(modelGroup);八、最佳实践使用描述性的组 ID组 ID 应清晰体现模型族用途如customer_churn_models、fraud_detection_family保持命名一致跨环境使用一致的命名方案如 DEV、STAGING、PROD 中统一使用recommendation_models在组级追踪血缘添加训练与下游作业展示模型族的完整数据流归组相关版本同一业务模型的所有版本都应归属同一组合理使用环境按 DEV、STAGING、PROD 分离模型组以追踪晋升promotion流程记录模型演进用自定义属性记录重要里程碑、改进与架构变化用标签组织使用production、experimental、deprecated、ab-test等标签对模型组分类明确属主职责同时指定技术属主ML 工程师与业务属主产品经理链接外部系统使用externalUrl链接到 MLflow、SageMaker 等 ML 平台面板善用自定义属性存储framework、model_family、use_case、deployment_status等元数据。九、模型组 vs 单个模型何时使用模型组Model Groups版本管理追踪同一模型的多个版本A/B 测试将 champion 与 challenger 模型归组对比环境晋升跨 DEV、STAGING、PROD 追踪同一模型族聚合血缘在模型族层面展示训练与下游作业团队组织按维护团队归组全部模型。何时使用单个模型Individual Models具体模型版本表示带特定指标与超参数的某个训练产物部署追踪追踪特定模型版本部署在何处性能指标存储特定模型的训练与验证指标详细元数据捕获超参数、训练配置与模型工件artifacts。关系建立最佳实践// 1. 先创建模型组 MLModelGroup group MLModelGroup.builder() .platform(tensorflow) .groupId(churn_models) .env(PROD) .name(Customer Churn Model Family) .build(); client.entities().upsert(group); // 2. 创建引用该组的单个模型 MLModel modelV1 MLModel.builder() .platform(tensorflow) .name(churn_predictor_v1) .env(PROD) .build(); // 将模型链接到组 modelV1.setModelGroup(urn:li:mlModelGroup:(urn:li:dataPlatform:tensorflow,churn_models,PROD)); client.entities().upsert(modelV1); // 3. 对其他版本重复上述步骤 MLModel modelV2 MLModel.builder() .platform(tensorflow) .name(churn_predictor_v2) .env(PROD) .build(); modelV2.setModelGroup(urn:li:mlModelGroup:(urn:li:dataPlatform:tensorflow,churn_models,PROD)); client.entities().upsert(modelV2);十、源码与测试验证本文涉及的实现与验证均可直接在仓库中查阅实体实现MLModelGroup.javaBuilder、patch 机制、训练/下游作业管理、旧版本兼容的transformPatchToFullAspect可运行示例MLModelGroupCreateExample.java、MLModelGroupFullExample.java单元测试MLModelGroupTest.java覆盖 Builder 必填校验、各 aspect 的 patch 行为、作业去重、equals/hashCode 等集成测试MLModelGroupIntegrationTest.java需真实 DataHub 实例可通过export DATAHUB_SERVERhttp://localhost:8080后执行./gradlew :metadata-integration:java:datahub-client:test --tests *Integration*运行验证了创建、标签、属主、域、完整元数据写入与读取回验底层 PDL 模型MLModelGroupProperties.pdl定义了name的搜索权重boostScore: 10.0与自动补全、description的可搜索属性以及弃用的createdAt和version字段十一、相关文档MLModel 实体指南 —— 单个模型的元数据与指标管理Dataset 实体指南 —— 训练数据血缘DataJob 实体指南 —— 训练与推理作业元数据SDK V2 实体总览 —— 各实体通用模式与生命周期SDK V2 快速入门 —— 客户端初始化与基础用法Patch 操作指南 —— 补丁式更新的底层机制赞分享数据目录数据治理数据血缘后端前端数据工程数据集成【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址https://gitcode.com/GitHub_Trending/da/datahub点击查看免费下载相关推荐DataHub Java SDK V2 实战Chart 实体完整操作指南创建、血缘、属性与 Patch 机制DataHub Java SDK V2 实战Chart 实体完整操作指南创建、血缘、属性与 Patch 机制 本文是 DataHub Java SDK V数据目录数据治理数据血缘后端前端数据工程数据集成DataHub SDK v2 Main Client 使用指南统一入口管理实体、搜索与血缘DataHub SDK v2 Main Client 使用指南统一入口管理实体、搜索与血缘 DataHub 作为数据与 AI 技术栈的上下文平台其 SDK数据目录数据治理数据血缘后端前端数据工程数据集成DataHub MLPrimaryKey 实体深度解析ML 特征存储主键的元数据建模、血缘与治理实践DataHub MLPrimaryKey 实体深度解析ML 特征存储主键的元数据建模、血缘与治理实践 MLPrimaryKey机器学习主键是 DataHu数据目录数据治理数据血缘后端前端数据工程数据集成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表