但是没有解释为什么我应该使用一个或另一个,例如加载一个基于容器的,我需要生成一个 docker 图像推送,并在管道中加载带有规范的 yaml,但是基于函数,我只需要导入函数。
这里有一些误解。
引擎盖下只有一种组件-基于容器的组件(也有图形组件,但这无关紧要)。
但是,我们的大多数用户喜欢 python,不喜欢构建容器。这就是为什么我开发了一个名为“轻量级 python 组件”的功能,它生成 ComponentSpec/component.yaml 从 python 函数源代码。生成的组件基本运行python3 -u -c '<your function>; <command-line parsing>' arg1 arg2 ...。
存在“基于函数的组件不同于component.yaml文件”的误解。
不,格式相同。您应该将生成的组件保存到一个文件中以供共享:create_component_from_func(my_func, output_component_file='component.yaml')。在您的代码稳定后,您应该将代码和component.yaml 上传到GitHub 或其他地方,并使用load_component_from_url 将component.yaml 加载到管道中。
检查 KFP 存储库中的 component.yaml 文件。超过一半的component.yaml 文件是轻量级组件——它们是从 python 函数生成的。
component.yaml 用于共享组件。它们是声明性的、可移植的、可索引的、安全的、与语言无关的等。您应该始终发布component.yaml 文件。如果component.yaml 是从python 函数生成的,那么最好将component.py 放在旁边,以便在进行更改时可以轻松地重新生成组件。
决定是否使用轻量级python组件特性创建组件非常简单:
您是否在自包含的 Python 函数中编写代码(还不是 CLI 程序)?您想避免构建、推送和维护容器吗?如果是,那么轻量级 python 组件功能 (create_component_from_func) 可以帮助您并为您生成 component.yaml。
否则,请自己写component.yaml。