Argo Workflows广泛应用于定时任务、机器学习和ETL数据处理等场景,但当对Kubernetes不太熟练时,YAML定义工作流程可能会增加学习难度。Hera Python SDK提供了一种简洁易用的替代方案,允许以Python代码构建工作流,支持复杂任务场景,易于测试,并与Python生态无缝集成。
功能介绍
Argo Workflows主要依赖YAML来定义工作流程,以实现配置的清晰与简洁。但当数据科学家不熟悉YAML时,在复杂的工作流设计中,YAML的严格缩进要求及层次化的结构可能会增加配置难度。
Hera是一个专为构建和提交Argo工作流程设计的Python SDK框架,旨在简化工作流程的构建和提交。在处理复杂工作流时,使用Hera可以有效避免YAML可能产生的语法错误。使用Hera PythonSDK还具有以下优势。
代码简洁性:Hera提供了易于理解和编写的代码,可提升开发效率。
Python生态集成简单:每个Function就是一个Template,与Python生态中的各种框架无缝集成,提供了丰富的Python库和工具。
可测试性:可直接利用Python的测试框架,有助于提高代码的质量和可维护性。
前提条件
已安装Argo组件和控制台,并获取访问凭证和Argo Server 访问IP。具体操作,请参见启用批量任务编排能力。
已安装Hera。
pip install hera-workflows
场景一:Simple DAG Diamond
在Argo Workflows中,DAG(有向无环图)常用于定义复杂的任务依赖关系,其中Diamond结构是一种常见的工作流模式,可以实现多个任务并行执行后,并将结果汇聚到一个共同的后续任务。这种结构适用于需要合并不同数据流或处理结果的场景。以下展示如何使用Hera定义一个具有Diamond结构的工作流,其中两个任务taskA和taskB并行运行,它们的输出共同作为输入传递给taskC。
使用以下内容,创建simpleDAG.py。
# 导入相关包。 from hera.workflows import DAG, Workflow, script from hera.shared import global_config import urllib3 urllib3.disable_warnings() # 配置访问地址和Token。 global_config.host = "https://${IP}:2746" global_config.token = "abcdefgxxxxxx" # 填入之前获取的Token。 global_config.verify_ssl = "" # 装饰器函数script是Hera实现近乎原生的Python函数编排的关键功能。 # 它允许您在Hera上下文管理器(例如Workflow或Steps上下文)下调用该函数。 # 该函数在任何Hera上下文之外仍将正常运行,这意味着您可以在给定函数上编写单元测试。 # 该示例是打印输入的信息。 @script() def echo(message: str): print(message) # 构建Workflow,Workflow是Argo中的主要资源,也是Hera的关键类,负责保存模板、设置入口点和运行模板。 with Workflow( generate_name="dag-diamond-", entrypoint="diamond", namespace="argo", ) as w: with DAG(name="diamond"): A = echo(name="A", arguments={"message": "A"}) # 构建Template。 B = echo(name="B", arguments={"message": "B"}) C = echo(name="C", arguments={"message": "C"}) D = echo(name="D", arguments={"message": "D"}) A >> [B, C] >> D # 构建依赖关系,B、C任务依赖A,D依赖B和C。 # 创建Workflow。 w.create()
执行以下命令, 提交工作流。
python simpleDAG.py
工作流运行后,在工作流控制台(Argo)查看任务DAG流程与运行结果。
场景二:Map-Reduce
在Argo Workflows中实现MapReduce风格的数据处理时,需要有效利用其DAG模板,以组织和协调多个任务,从而模拟Map和Reduce阶段。以下展示如何使用Hera构建一个简单的MapReduce工作流,用于处理文本文件的单词计数任务。每一步都是一个Python函数,便于和Python生态进行集成。
配置Artifacts,相关操作,请参见配置Artifacts。
使用以下内容,创建map-reduce.py。
执行以下命令,提交工作流。
python map-reduce.py
工作流运行后,您可以在工作流控制台(Argo)查看任务DAG流程与运行结果。
相关文档
Hera相关文档。
如果您需要详细了解Hera相关信息,请参见Hera概述。
若您想学习如何设置和使用Hera来进行LLM的训练过程,请参见Train LLM with Hera。
YAML部署示例。
如果您想了解以YAML的方式部署simple-diamond,请参见dag-diamond.yaml。
如果您想了解以YAML的方式部署map-reduce,请参见map-reduce.yaml。
联系我们
若您有任何产品建议或疑问,请加入钉钉群(钉钉群号:35688562)联系我们。