我正在尝试使用Argo构建ML管道DAG。我遇到了一个问题,我需要将 DAG 中一个节点的值作为参数发送到其后续节点。假设 ARGO DAG 结构如下所示:
{
"apiVersion": "argoproj.io/v1alpha1",
"kind": "Workflow",
"metadata": {
"generateName": "workflow01-"
},
"spec": {
"entrypoint": "workflow01",
"arguments": {
"parameters": [
{
"name": "log-level",
"value": "INFO"
}
]
},
"templates": [
{
"name": "workflow01",
"dag": {
"tasks": [
{
"name": "A",
"template": "task-container",
"arguments": {
"parameters": [
{
"name": "model-type",
"value": "INTENT-TRAIN"
}
]
}
},
{
"name": "B",
"template": "task-container",
"dependencies": ["A"],
"arguments": {
"parameters": [
{
"name": "model-type",
"value": "INTENT-EVALUATE"
}
]
}
}
]
}
},
{
"name": "task-container",
"inputs": {
"parameters": [
{
"name": "model-type",
"value": "NIL"
}
]
},
"container": {
"env": [
{
"name": "LOG_LEVEL",
"value": "{{workflow.parameters.log-level}}"
},
{
"name": "MODEL_TYPE",
"value": "{{inputs.parameters.model-type}}"
}
]
}
}
]
}
}
A->B
在 B 中发生的计算取决于在 A 中计算的值。
如何将 A 中计算的值传递到 B 中?
你可以使用Argo的"工件"来实现这一点 - 请参阅 https://github.com/argoproj/argo-workflows/tree/master/examples#artifacts
另一种方法是设置共享卷:https://github.com/argoproj/argo-workflows/tree/master/examples#volumes