You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubeflow KFP v2.x中示例代码触发TypeError的原因排查

KFP v2.x 加法示例报错原因及错误触发条件

问题场景

使用依赖版本:kfp==2.8.0(及2.7.0)、kfp-pipeline-spec==0.3.0、kfp-server-api==2.0.5,运行Kubeflow官方加法管道示例代码时,首次定义管道触发如下错误:

TypeError: Artifacts must have both a schema_title and a schema_version, separated by @. Got: float

报错原因

这个错误核心是组件参数类型标注不符合KFP v2.x的规范。如果官方加法示例是基于KFP v1.x编写的,会直接用原生Python类型(如float)作为组件输入输出类型,但KFP v2.x对类型标注的要求更严格:

  • 若参数是普通数值/字符串(Parameter类型),部分过渡版本(如2.7.0/2.8.0)必须显式标注为Parameter[类型];
  • 若误将原生类型当作Artifact类型处理,KFP会要求其具备schema_title和schema_version,而原生类型没有这些属性,因此触发报错。

错误写法示例:

@component
def add(a: float, b: float) -> float:
    return a + b

修正后的写法:

from kfp.dsl import component, Parameter

@component
def add(a: Parameter[float], b: Parameter[float]) -> Parameter[float]:
    return a + b

KFP v2.0.0+下该错误的普遍触发条件

  • 未显式标注基础类型为Parameter:直接用int/float/str等原生类型作为组件输入输出,KFP类型推断逻辑将其误判为Artifact类型,导致缺少schema信息。
  • 自定义Artifact类未配置schema:自定义Artifact时未定义schema_title和schema_version属性,或标注时未使用@分隔的schema标识(如CustomArtifact@v1)。
  • 依赖版本不兼容:kfp、kfp-pipeline-spec等依赖版本不匹配,导致类型处理逻辑冲突,引发错误。
  • 错误将Parameter声明为Artifact:比如使用Input[float]而非Input[Parameter[float]],KFP会把float当作Artifact处理,进而要求schema信息。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:05:00