尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Label Studio 自定义一致性指标(Custom Agreement Metric)编写与部署完全指南

Label Studio 自定义一致性指标(Custom Agreement Metric)编写与部署完全指南 Label Studio 自定义一致性指标Custom Agreement Metric编写与部署完全指南【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio本文聚焦 Label Studio Enterprise 的自定义一致性指标Custom Agreement Metric功能讲解如何编写自己的agreement()函数来评估标注annotation与预测prediction之间的质量与一致性并详细说明在 AWS Lambda 与 Google Cloud Functions 两种 on-prem 部署形态下的权限配置、环境变量与函数生命周期管理。读完本文你将能够独立实现带标签权重、per_label粒度返回的自定义指标并把它安全地接入项目级 Quality 设置中。什么是自定义一致性指标Label Studio Enterprise 内置了大量的一致性指标agreement metrics覆盖 Choices、Taxonomy、矩形框、多边形、Brush 遮罩、文本 Span、视频、关键点等几乎所有控制标签类型详见 内置指标参考。但业务场景往往超出内置能力——例如你希望Positive类达成一致时得 0.99 分、Negative类达成一致只得 0.7 分或者需要一套完全自定义的评分逻辑。此时即可通过自定义一致性指标在项目级别注入自己的 Python 评分函数。该功能的核心价值在于Label Studio Enterprise 会将该函数部署为 serverless 函数AWS Lambda 或 Google Cloud Functions在计算 任务一致性Task Agreement 时逐对调用从而将自定义评分纳入数据质量看板、Data Manager 的 Agreement 列以及成员看板等全部分析链路。适用版本说明Label Studio Enterprise Cloud 用户开箱即用无需额外配置。Label Studio Enterprise on-prem自托管必须允许 Label Studio 部署并调用 serverless 函数支持 AWS Lambda 与 Google Cloud Functions 两种运行时。开源 Community Edition不包含这些统计计算。如果你使用的是社区版请参考 Label Studio 版本对比 了解功能差异。从仓库源码可以看到一致性概念贯穿整个数据管理链路label_studio/data_manager/managers.py中将agreement、agreement_selected、_agreement、_agreement_selected及所有dimension_agreement_*前缀字段识别为 agreement 相关字段用于过滤与排序label_studio/tasks/migrations/0058_task_precomputed_agreement.py为任务表引入了precomputed_agreement字段label_studio/data_export/serializers.py在导出时显式排除了overlap、is_labeled、precomputed_agreement等内部字段。这些实现印证了agreement 分数在 Enterprise 中是被预计算并持久化、进而驱动过滤/排序/导出全流程的一等公民自定义指标产出的分数同样汇入该体系。在项目中添加自定义一致性指标自定义一致性指标在项目级别添加入口为Settings Quality Agreement Custom Agreement Metric Code前置条件必须先配置好标注界面labeling interface才能添加自定义一致性指标。不同 on-prem 部署下的附加字段部署方式字段说明AWS LambdaLambda Tags为 AWS Lambda 函数添加标签语法为tag_name tag_value。AWS LambdaLambda Prefix为 AWS Lambda 函数选择前缀。Google Cloud Functions无与 AWS Lambda 不同GCP 端无法设置前缀或标签函数由 Label Studio 自动命名管理见下文 Label Studio 如何管理你的函数。如何编写自定义一致性指标函数签名与参数契约自定义代码必须实现 Label Studio 约定的函数def agreement(annotation_1, annotation_2, per_labelFalse) - float:参数格式说明annotation_1JSON object参与一致性比较的第一个标注或预测采用 Label Studio 标注任务的 JSON 格式。annotation_2JSON object参与一致性比较的第二个标注或预测格式同上。per_labelboolean是否按标注中的每个 label 分别计算一致性而不是对整条标注结果计算一个总分。returnfloat返回的一致性分数为 0 到 1 之间的浮点数。该函数既可以比较两个标注分别传给annotation_1、annotation_2也可以比较一个标注与一个预测将预测作为其中一个参数传入。理解 Label Studio JSON 格式中的 result 结构自定义指标解析的核心数据结构是标注/预测 JSON 中的result数组。以文档 导出格式 中列出的标注示例为参照一个典型的result元素形如{ id: 17n06ubOJs, type: choices, value: { choices: [Positive] }, origin: manual, to_name: image, from_name: choice }自定义指标代码通过annotation[result][0][value][choices][0]这类路径访问具体答案。注意不同控制标签的value结构不同如rectanglelabels的value含x/y/width/heightlabels的value含start/end/text/labels编写指标前请先导出真实标注确认结构。示例一为不同类别赋不同权重的一致性比较给定如下标注配置图片情感分类任务View Image nameimage value$image/ Choices namechoice toNameimage showInLinetrue Choice valuePositive / Choice valueNegative / Choice valueNeutral / /Choices /View下面的一致性指标比较两次标注若二者一致且为 Positive 得 0.99一致且为 Negative 得 0.7不一致得 0def agreement(annotation_1, annotation_2, per_labelFalse) - float: # 以 Label Studio JSON 格式取出两个标注 r1 annotation_1[result][0][value][choices][0] r2 annotation_2[result][0][value][choices][0] # 依据具体选项值判定一致性 if r1 r2: # 若标注一致且为 Positive返回 0.99 if r1 Positive: return 0.99 # 若标注一致且为 Negative返回 0.7 if r1 Negative: return 0.7 # 若标注不一致返回 0 else: return 0示例二per_labelTrue 时按标签分别返回分数如果设置per_labelTrue你可以为每个 label 定义独立的评分方法或分数并且必须为每个标签各返回一个分数。例如对分类任务为每个标签赋予权重并分别返回def agreement(annotation_1, annotation_2, per_labelFalse) - float: label_1 annotation_1[result][0][value][choices][0] label_2 annotation_2[result][0][value][choices][0] weight {Positive: 0.99, Negative: 0.01} if label_1 label_2: if per_label: return {label_1: weight[label_1]} else: return weight[label_1] else: if per_label: return {label_1: 0, label_2: 0} else: return 0查看日志为便于排查问题你可以查看自定义一致性指标的运行日志。前提条件至少有一条任务被至少两名标注员标注过日志才会生成。AWS Lambdaon-prem 部署若 Label Studio Enterprise 部署在自管理云中的 AWS EC2 实例或 Amazon EKS 集群上需要额外授权使 Label Studio Enterprise 能够在 AWS Lambda 中运行自定义一致性指标。整体流程分两步创建用于日志写入的 AWS IAM 角色依据部署场景配置与 AWS Lambda 交互的权限Docker Compose 部署于 EC2EKS 且使用 OIDC providerEKS 且不使用 OIDC provider执行上述步骤前你需要知道管理 Label Studio Enterprise 的 AWS 账号 IDAWS account ID。步骤一创建用于日志写入的 AWS IAM 角色使用你偏好的方式创建名为LSE_CustomMetricsExecuteRole的 AWS IAM 角色参考 AWS IAM 文档中为 AWS 服务创建委托权限角色的步骤。无论用控制台还是 AWS CLI 创建都需创建或附加以下 IAM 策略允许角色向 CloudWatch 写入日志。将YOUR_AWS_ACCOUNT替换为可访问 Label Studio Enterprise 的 AWS 账号 ID{ Version: 2012-10-17, Statement: [ { Effect: Allow, Action: logs:CreateLogGroup, Resource: arn:aws:logs:*:YOUR_AWS_ACCOUNT:* }, { Effect: Allow, Action: [ logs:CreateLogStream, logs:PutLogEvents ], Resource: [ arn:aws:logs:*:YOUR_AWS_ACCOUNT:log-group:/aws/lambda/custom-metric-* ] }, { Effect: Allow, Action: [ logs:CreateLogGroup, logs:PutRetentionPolicy ], Resource: [ arn:aws:logs:*:YOUR_AWS_ACCOUNT:log-group:/aws/lambda/custom-metric-* ] } ] }可以看到日志组统一收敛在/aws/lambda/custom-metric-*前缀下与 Label Studio 自动部署的custom-metric-*Lambda 函数一一对应便于审计与保留策略管理。创建授权与 AWS Lambda 交互的 IAM 策略为授予特定用户、角色或 EKS 节点组用于管理 Label Studio Enterprise 的实体与 AWS Lambda 交互的权限创建名为LSE_AllowInteractLambda的 IAM 策略并将YOUR_AWS_ACCOUNT替换为你的 AWS 账号 ID{ Version: 2012-10-17, Statement: [ { Sid: VisualEditor0, Effect: Allow, Action: iam:PassRole, Resource: arn:aws:iam::YOUR_AWS_ACCOUNT:role/LSE_CustomMetricsExecuteRole }, { Sid: VisualEditor1, Effect: Allow, Action: [ lambda:CreateFunction, lambda:UpdateFunctionCode, lambda:InvokeFunction, lambda:GetFunction, lambda:DeleteFunction, lambda:TagResource, lambda:ListTags ], Resource: [ arn:aws:lambda:*:YOUR_AWS_ACCOUNT:function:custom-metric-* ] }, { Sid: VisualEditor2, Effect: Allow, Action: lambda:ListFunctions, Resource: * }, { Action: [ logs:CreateLogGroup, logs:PutRetentionPolicy, logs:TagResource, logs:StartQuery, logs:GetQueryResults ], Effect: Allow, Resource: [ arn:aws:logs:*:YOUR_AWS_ACCOUNT:log-group:/aws/lambda/custom-metric-* ] } ] }该策略体现了 Label Studio 与 Lambda 交互所需的完整动作集合通过iam:PassRole传入执行角色、通过lambda:*Function系列完成函数的创建/更新/调用/删除生命周期、通过lambda:TagResource/ListTags维护你在 UI 中配置的Lambda Tags、通过lambda:ListFunctions发现已有函数、并通过logs:*完成日志组管理与 CloudWatch Logs Insights 查询StartQuery/GetQueryResults。步骤二配置 Label Studio Enterprise 与 AWS Lambda 之间的权限创建好日志 IAM 角色后需要依据部署方式配置 Label Studio Enterprise 与 AWS Lambda 交互的权限。Docker Compose 部署于 EC2若使用 Docker Compose 在 AWS EC2 实例上部署参考 AWS IAM 文档创建具有编程访问权限programmatic access的 IAM 用户——此类用户会获得访问 AWS 服务的 Access Key。创建用户时在Set permissions选项中选择Attach existing policies directly。选择Create policy附加LSE_AllowInteractLambda策略。创建完成后妥善保存用户名与 Access Key。在部署 Label Studio Enterprise 的docker-compose.yaml中于app和rqworkers两个 section 内添加以下环境变量重要提示请将YOUR_AWS_ACCESS_KEY_ID、YOUR_AWS_SECRET_ACCESS_KEY、YOUR_AWS_ACCOUNT替换为步骤 1 所创建账号的凭证将YOUR_AWS_REGION替换为 EC2 实例所在的 AWS 区域。AWS_ACCESS_KEY_IDYOUR_AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEYYOUR_AWS_SECRET_ACCESS_KEY LS_LAMBDA_REGION_CUSTOM_METRICSYOUR_AWS_REGION LS_LAMBDA_ROLE_CUSTOM_METRICSarn:aws:iam::YOUR_AWS_ACCOUNT:role/LSE_CustomMetricsExecuteRole配置完成后即可开始① 编写自定义一致性指标② 将指标添加到 Label Studio Enterprise。EKS 且使用 OIDC provider若部署在启用 OpenID ConnectOIDC做 IAM 身份管理的 Amazon EKS 上创建名为LSE_ServiceAccountApp的 AWS IAM 角色。适当时将LSE_AllowInteractLambda策略 附加到LSE_ServiceAccountApp角色。在 Helm 的values.yaml中增加以下映射将YOUR_AWS_ACCOUNT替换为你的 AWS 账号 IDapp: serviceAccount: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::YOUR_AWS_ACCOUNT:role/LSE_ServiceAccountApp使用 Helm 重启 Label Studio Enterprise。之后即可开始编写并添加自定义一致性指标。EKS 且不使用 OIDC provider若 EKS 部署未使用 OIDC在 AWS 控制台进入EKS Clusters YOUR_CLUSTER_NAME Node Group。选择部署了 Label Studio Enterprise 的YOUR_NODE_GROUP。在Details页面找到并点击Node IAM Role ARN。创建 AWS IAM 策略LSE_AllowInteractLambda。使用 Helm 重启 Label Studio Enterprise。之后即可开始编写并添加自定义一致性指标。Google Cloud Functionson-prem 部署若 Label Studio Enterprise 部署在 Google Cloud PlatformGCP自定义一致性指标可在Google Cloud Functions2nd gen上运行以替代 AWS Lambda。开始前请确认你的GCP project ID以及 Label Studio Enterprise 的部署形态Compute Engine VM、带 Workload Identity 的 GKE、或不带 Workload Identity 的 GKE。步骤一启用所需的 GCP APILabel Studio Enterprise 需要以下 API 处于启用状态Cloud Functions APIcloudfunctions.googleapis.comCloud Build APIcloudbuild.googleapis.comCloud Storage APIstorage.googleapis.comCloud Logging APIlogging.googleapis.comArtifact Registry APIartifactregistry.googleapis.comCloud Run APIrun.googleapis.com可用gcloudCLI 一键启用gcloud services enable \ cloudfunctions.googleapis.com \ cloudbuild.googleapis.com \ storage.googleapis.com \ logging.googleapis.com \ artifactregistry.googleapis.com \ run.googleapis.com \ --projectYOUR_GCP_PROJECT步骤二为 Cloud Functions 创建运行时服务账号为 Cloud Functions 创建专用的运行时服务账号该账号只需 Logs Writer 角色创建服务账号gcloud iam service-accounts create lse-custom-metrics-runtime \ --display-nameLSE Custom Metrics Runtime \ --projectYOUR_GCP_PROJECT授予 Logs Writer 角色gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT \ --memberserviceAccount:lse-custom-metrics-runtimeYOUR_GCP_PROJECT.iam.gserviceaccount.com \ --roleroles/logging.logWriter该服务账号邮箱lse-custom-metrics-runtimeYOUR_GCP_PROJECT.iam.gserviceaccount.com稍后用于GCP_SERVICE_ACCOUNT_CUSTOM_METRICS环境变量。步骤三向 Label Studio Enterprise 运行身份授予权限Label Studio Enterprise 运行时所使用的身份需要管理 Cloud Functions 并上传函数源码。该身份随部署形态而异——Compute Engine VM 的服务账号、通过 Workload Identity 绑定的专用 GCP 服务账号或 GKE 节点池服务账号。下文各部署小节会指明将角色绑定到哪个身份。创建名为LSE_CustomMetricsDeployer的自定义 IAM 角色包含以下权限title: LSE Custom Metrics Deployer description: Allows Label Studio Enterprise to deploy and invoke custom metric Cloud Functions stage: GA includedPermissions: # Cloud Functions lifecycle - cloudfunctions.functions.create - cloudfunctions.functions.update - cloudfunctions.functions.delete - cloudfunctions.functions.get - cloudfunctions.functions.list # Source upload via generateUploadUrl - cloudfunctions.functions.generateUploadUrl # Source code download from GCS staging bucket - storage.objects.get - storage.objects.create # Cloud Functions invocation (2nd gen uses Cloud Run) - run.routes.invoke # View function execution logs - logging.logEntries.list - logging.logs.list # Act as the runtime service account - iam.serviceAccounts.actAs可使用gcloudCLI 创建该角色gcloud iam roles create LSE_CustomMetricsDeployer \ --projectYOUR_GCP_PROJECT \ --titleLSE Custom Metrics Deployer \ --descriptionAllows Label Studio Enterprise to deploy and invoke custom metric Cloud Functions \ --permissionscloudfunctions.functions.create,cloudfunctions.functions.update,cloudfunctions.functions.delete,cloudfunctions.functions.get,cloudfunctions.functions.list,cloudfunctions.functions.generateUploadUrl,storage.objects.get,storage.objects.create,run.routes.invoke,logging.logEntries.list,logging.logs.list,iam.serviceAccounts.actAs随后将角色绑定到 Label Studio Enterprise 运行身份。将LSE_IDENTITY替换为合适的成员见下文各部署小节gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT \ --memberLSE_IDENTITY \ --roleprojects/YOUR_GCP_PROJECT/roles/LSE_CustomMetricsDeployer提示除了单个自定义角色你也可以直接分配以下预定义角色roles/cloudfunctions.developer、roles/run.invoker、roles/storage.objectAdmin、roles/logging.viewer与roles/iam.serviceAccountUser。上文自定义角色遵循最小权限原则。Docker Compose 部署于 Compute Engine VM若使用 Docker Compose 部署在 Compute Engine VM 上确保 VM 以项目级绑定了LSE_CustomMetricsDeployer自定义角色或等价的预定义角色的服务账号运行。如需创建gcloud iam service-accounts create lse-app \ --display-nameLSE Application \ --projectYOUR_GCP_PROJECT gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT \ --memberserviceAccount:lse-appYOUR_GCP_PROJECT.iam.gserviceaccount.com \ --roleprojects/YOUR_GCP_PROJECT/roles/LSE_CustomMetricsDeployer将该服务账号分配给 Compute Engine 实例。在部署 Label Studio Enterprise 的docker-compose.yaml中向app与rqworkers两个 section 添加以下环境变量重要提示将YOUR_GCP_PROJECT替换为你的 GCP project IDYOUR_GCP_REGION替换为首选区域例如us-central1。CUSTOM_METRIC_PROVIDERgcp GCP_PROJECT_CUSTOM_METRICSYOUR_GCP_PROJECT GCP_REGION_CUSTOM_METRICSYOUR_GCP_REGION GCP_SERVICE_ACCOUNT_CUSTOM_METRICSlse-custom-metrics-runtimeYOUR_GCP_PROJECT.iam.gserviceaccount.com说明在 Compute Engine 上使用作用域正确的服务账号时Label Studio 会自动采用 Application Default Credentials (ADC)无需密钥文件。GKE 且使用 Workload Identity若使用启用 Workload Identity 的 GKE为 Label Studio Enterprise 创建 GCP 服务账号若尚未创建gcloud iam service-accounts create lse-app \ --display-nameLSE Application \ --projectYOUR_GCP_PROJECT将LSE_CustomMetricsDeployer自定义角色绑定到该服务账号gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT \ --memberserviceAccount:lse-appYOUR_GCP_PROJECT.iam.gserviceaccount.com \ --roleprojects/YOUR_GCP_PROJECT/roles/LSE_CustomMetricsDeployer允许 Kubernetes 服务账号冒充该 GCP 服务账号gcloud iam service-accounts add-iam-policy-binding \ lse-appYOUR_GCP_PROJECT.iam.gserviceaccount.com \ --roleroles/iam.workloadIdentityUser \ --memberserviceAccount:YOUR_GCP_PROJECT.svc.id.goog[YOUR_NAMESPACE/YOUR_K8S_SERVICE_ACCOUNT]更新 Helmvalues.yaml为 Kubernetes 服务账号添加注解并设置所需环境变量app: serviceAccount: annotations: iam.gke.io/gcp-service-account: lse-appYOUR_GCP_PROJECT.iam.gserviceaccount.com extraEnvironmentVars: CUSTOM_METRIC_PROVIDER: gcp GCP_PROJECT_CUSTOM_METRICS: YOUR_GCP_PROJECT GCP_REGION_CUSTOM_METRICS: YOUR_GCP_REGION GCP_SERVICE_ACCOUNT_CUSTOM_METRICS: lse-custom-metrics-runtimeYOUR_GCP_PROJECT.iam.gserviceaccount.com rqworker: extraEnvironmentVars: CUSTOM_METRIC_PROVIDER: gcp GCP_PROJECT_CUSTOM_METRICS: YOUR_GCP_PROJECT GCP_REGION_CUSTOM_METRICS: YOUR_GCP_REGION GCP_SERVICE_ACCOUNT_CUSTOM_METRICS: lse-custom-metrics-runtimeYOUR_GCP_PROJECT.iam.gserviceaccount.com重启 Helm release。GKE 且不使用 Workload Identity若使用未启用 Workload Identity 的 GKEPod 将以 GKE 节点的服务账号身份认证因此需将权限授予该节点服务账号。在 GCP 控制台进入Kubernetes Engine Clusters YOUR_CLUSTER Node Pools YOUR_NODE_POOL Security记下节点池使用的服务账号。将LSE_CustomMetricsDeployer自定义角色绑定到节点池服务账号gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT \ --memberserviceAccount:YOUR_NODE_SERVICE_ACCOUNTYOUR_GCP_PROJECT.iam.gserviceaccount.com \ --roleprojects/YOUR_GCP_PROJECT/roles/LSE_CustomMetricsDeployer更新 Helmvalues.yaml设置所需环境变量app: extraEnvironmentVars: CUSTOM_METRIC_PROVIDER: gcp GCP_PROJECT_CUSTOM_METRICS: YOUR_GCP_PROJECT GCP_REGION_CUSTOM_METRICS: YOUR_GCP_REGION GCP_SERVICE_ACCOUNT_CUSTOM_METRICS: lse-custom-metrics-runtimeYOUR_GCP_PROJECT.iam.gserviceaccount.com rqworker: extraEnvironmentVars: CUSTOM_METRIC_PROVIDER: gcp GCP_PROJECT_CUSTOM_METRICS: YOUR_GCP_PROJECT GCP_REGION_CUSTOM_METRICS: YOUR_GCP_REGION GCP_SERVICE_ACCOUNT_CUSTOM_METRICS: lse-custom-metrics-runtimeYOUR_GCP_PROJECT.iam.gserviceaccount.com重启 Helm release。GCP 环境变量参考变量说明默认值CUSTOM_METRIC_PROVIDER设为gcp以使用 Google Cloud Functions 替代 AWS Lambda。awsGCP_PROJECT_CUSTOM_METRICSCloud Functions 部署所在的 GCP project ID。无必填GCP_REGION_CUSTOM_METRICSCloud Functions 所在 GCP 区域例如us-central1、europe-west1。us-central1GCP_SERVICE_ACCOUNT_CUSTOM_METRICS已部署的 Cloud Functions 运行时服务账号邮箱。无可选Cloud Function 运行时配置Label Studio Enterprise 以固定运行时配置部署每个自定义指标 Cloud Function。以下值不可通过 UI 或环境变量配置适用于每个已部署函数设置值RuntimePython 3.13python313Entry pointagreement_handlerMemory256 MBRequest timeout60 秒Max instance count1Ingress仅限内部ALLOW_INTERNAL_ONLY对你的指标代码而言这意味着请使用兼容 Python 3.13 的代码与依赖导入。保持agreement函数轻量、无状态。加载大型模型或执行高开销计算可能超出 256 MB / 60 秒限制并导致评分失败。评分请求按函数逐个排队执行每函数同时 1 个实例。这对后台 worker 是没问题的但意味着该指标不适合交互式即时使用。网络连通性自定义指标函数以 internal-only ingress 部署这会直接影响你的访问方式与 Label Studio Enterprise 位于同一 GCP 项目开箱即用。Compute Engine 或 GKE 工作负载发出的内部流量默认允许。位于不同 VPC 或项目需先配置内部连通性——Shared VPC、VPC peering 或 Serverless VPC Access connector——否则评分会失败。直接测试函数无法从 Google 网络外部调用该函数。从你的笔记本用curl或使用 Cloud Console 的Test按钮会返回403 Forbidden。要验证部署是否成功请在 Label Studio Enterprise 内部触发评分例如对使用该指标的项目重新计算 agreement。Label Studio 如何管理你的函数Label Studio 为每个使用自定义指标的项目创建一个 Cloud Function并在多次评分运行间复用该函数且会为你解析函数 URL——无需手动配置 URL 或函数名。在 Google Cloud 控制台查找函数打开配置的 GCP 项目与区域中的Cloud Functions。查找名为custom-metric-project_id-timestamp的函数。打开函数可查看日志、部署状态与触发 URL。函数生命周期行为行为说明部署Deploy若找不到匹配的已有函数则创建新函数。更新Update尽可能更新已有函数。Provider/指标变更若你切换到其他指标/providerLabel Studio 会尝试删除此前托管的 GCP 函数。应用内运行时状态应用会报告诸如 NotDeployed、Pending、Active、Failed、NotFound、Error 等状态。可发现性与元数据Label Studio 会为函数应用内部标签元数据用于项目/组织/主机跟踪。这些标签主要用于内部管理与云端过滤。函数 HTTPS URL 由 Label Studio 自动解析并缓存。重要提示GCP 端的前缀与 tags/labels当前不会作为用户可见字段暴露在 UI 中。高级用户只能通过 API 级别的指标参数如果你的组织开放该工作流设置此类值而无法通过标准设置页面完成。编写高质量自定义指标的建议结合函数运行时限制与 Label Studio 的一致性计算模型编写自定义指标时建议遵循以下实践从导出的真实标注确认result结构不同控制标签的value字段差异很大务必以 Label Studio 标注任务的 JSON 格式 中的实际导出样例为准编写取值逻辑。保持函数纯函数化、无状态agreement(annotation_1, annotation_2, per_label)应只依赖入参返回分数不依赖全局状态或外部服务调用既保证可重复性也符合 256 MB / 60 秒的运行约束。严格遵守返回值契约默认模式返回0.0–1.0的 floatper_labelTrue时返回{label: score}字典且必须覆盖每个标签。未匹配的标签应显式返回0避免隐式丢失拉低均值。统一用per_label分支保证两种模式都可用参考示例二的结构先判断per_label再返回保证在整体一致性与按标签一致性两种场景下都能正确工作。善用日志定位问题确保至少两个标注员标注过同一任务后再查看日志日志是排查评分未生效/结果异常的最直接手段。一致性分数如何被消费自定义指标产出的分数并非孤立存在而是进入 Label Studio Enterprise 完整的一致性分析体系Data Manager按任务展示一致性分数与标注员间一致性可基于agreement、agreement_selected等字段过滤与排序——这些字段在 label_studio/data_manager/managers.py 中被显式识别为 agreement 相关字段。Data quality dashboard展示任务一致性分布、各维度一致性、top confusion pairs 与混淆矩阵详见 数据质量看板。Members dashboard展示成员与模型一致性矩阵基于 Pairwise 方法论计算详见 成员看板。任务预计算Enterprise 会将一致性分数预计算并持久化到任务的precomputed_agreement字段见 label_studio/tasks/migrations/0058_task_precomputed_agreement.py供过滤、排序与导出使用。因此一个正确的自定义指标会在标注完成后自动驱动任务排序、数据质量管理与成员绩效评估的整个闭环。【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表