> ## Documentation Index
> Fetch the complete documentation index at: https://docs.siflow.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用 Workflows 编排训练流程

> 在人工智能平台中创建和管理 Workflow，将多个训练或推理节点按依赖关系编排为流程。

Workflows 用于把多个任务节点编排为流程，适合需要按依赖关系串联多个训练、处理或推理步骤的场景。

## 创建 Workflow

### 1. 进入创建页

1. 进入 **训练任务 > Workflows**。
2. 单击 **新建**，选择 **表单创建** 或 **代码创建**。

* 表单创建：适合在控制台中拖拽节点、配置依赖关系，并逐个填写节点参数。
* 代码创建：适合已有 DAG 配置、需要复用模板，或希望通过 JSON / YAML 统一维护流程定义的场景。

### 2. 填写基本信息

| 配置项         | 说明                                                            |
| ----------- | ------------------------------------------------------------- |
| **工作流名称**   | Workflow 的名称，用于在列表、详情和运行记录中识别流程。                              |
| **描述**      | Workflow 的用途说明，建议写清流程处理的数据、训练阶段或推理阶段。                         |
| **自定义输出路径** | Workflow 输出文件的匹配路径。例如 `/etc/output/*/result.json`，用于收集节点输出结果。 |
| **启用全局变量**  | 开启后，可在 Workflow 范围内使用全局变量，便于多个节点复用同一组参数。                      |
| **开启定时任务**  | 开启后，可按计划触发 Workflow，适合周期性数据处理、训练或评估流程。                        |

### 3. 配置 DAG

<Tabs>
  <Tab title="表单创建">
    <img src="https://mintcdn.com/siflow/avekptrv6O-LsLPz/ai-platform/training/media/workflow-dag-form-editor.png?fit=max&auto=format&n=avekptrv6O-LsLPz&q=85&s=ee456de2901094305a2bcfaf7e1decbc" alt="Workflow DAG 表单编排画布" width="3174" height="1170" data-path="ai-platform/training/media/workflow-dag-form-editor.png" />

    1. 在 **DAG** 区域，从左侧节点列表拖拽节点到画布。当前支持 **SF 作业节点** 和 **SF 推理节点**。
    2. 按流程顺序连接节点，或单击 **自动布局** 整理画布。
    3. 单击节点的编辑按钮，打开 **节点配置**。
    4. 在 **前序节点依赖** 页签中配置上游依赖关系。
    5. 在 **公共字段** 页签中配置节点基础信息。

    | 配置项         | 说明                               |
    | ----------- | -------------------------------- |
    | **节点名称**    | 节点在 DAG 配置中的唯一名称，代码创建时对应 `name`。 |
    | **显示名称**    | 节点在画布中的展示名称。                     |
    | **节点类型**    | 当前节点类型，例如 `sfjob`。               |
    | **服务模式**    | 控制节点是否按服务模式运行。                   |
    | **重试次数**    | 节点失败后的重试次数。                      |
    | **超时时间（秒）** | 节点允许运行的最长时间，超过后按超时处理。            |
    | **标签**      | 为节点增加标签，便于区分节点阶段或用途。             |
    | **环境变量**    | 为当前节点添加运行时环境变量。                  |
    | **输入参数**    | 定义当前节点需要读取的参数。                   |
    | **输出参数**    | 定义当前节点产出的参数，可供下游节点引用。            |

    6. 在 **负载参数** 页签中配置节点要运行的作业或推理负载参数。

       * **SF 作业节点**：镜像、资源、Volume、数据集、模型和启动命令等配置与训练任务基本一致，详细说明请参考[创建训练任务](./create-training-tasks)。
       * **SF 推理节点**：资源池、推理引擎、模型配置、缓存配置、服务配置和监控配置等配置口径与创建大模型推理服务基本一致，详细说明请参考[创建大模型推理服务](../inference/create-llm-inference-services)。

    7. 单击 **保存**。

    8. 确认画布中的节点和依赖关系符合预期。
  </Tab>

  <Tab title="代码创建">
    1. 在 **代码填写格式** 中选择 **JSON** 或 **YAML**。
    2. 在 **Dag** 编辑器中填写或粘贴节点编排配置。
    3. 在 **Steps** 编辑器中填写或粘贴节点运行配置。
    4. 确认配置可以表达预期的节点、依赖关系和执行条件。

    **Dag 配置结构**

    **Dag** 配置用于描述 Workflow 的节点编排、依赖关系和执行条件。

    | 字段         | 说明                                                                                            |
    | ---------- | --------------------------------------------------------------------------------------------- |
    | `tasks`    | Workflow 中的节点编排列表。                                                                            |
    | `name`     | 节点名称，需要与 Steps 配置中的节点名称对应。                                                                    |
    | `template` | 节点使用的模板或节点类型。例如 SF 作业节点可使用 `sfjob`。                                                           |
    | `depends`  | 前序节点依赖。可以引用上游节点及其状态，例如 `data-preprocess.Success`。                                             |
    | `when`     | 节点执行条件。可引用上游节点输出参数，例如 `{{tasks.data-preprocess.outputs.parameters.next-step}} == training-1`。 |

    Dag 结构示例：

    ```yaml theme={null}
    tasks:
      - name: data-preprocess
        template: sfjob
      - name: train-model
        template: sfjob
        depends: data-preprocess.Success
        when: "{{tasks.data-preprocess.outputs.parameters.next-step}} == training"
    ```

    **Steps 配置结构**

    **Steps** 配置用于描述每个节点自身的运行参数、展示信息、输入输出和负载配置。

    | 字段                   | 说明                                            |
    | -------------------- | --------------------------------------------- |
    | `type`               | 节点类型。例如 SF 作业节点可使用 `sfjob`。                   |
    | `name`               | 节点名称，需要与 Dag 配置中的节点名称对应。                      |
    | `outputs.parameters` | 节点输出参数。可通过 `valueFrom.path` 从节点运行产生的文件中读取参数值。 |
    | `inputs`             | 节点输入参数。                                       |
    | `displayName`        | 节点展示名称。                                       |
    | `labels`             | 节点标签。                                         |
    | `retries`            | 节点失败后的重试次数。                                   |
    | `timeoutSeconds`     | 节点超时时间，单位为秒。                                  |
    | `env`                | 节点环境变量。                                       |
    | `spec`               | 节点负载配置。具体结构取决于节点类型。                           |

    Steps 结构示例：

    ```yaml theme={null}
    - type: sfjob
      name: data-preprocess
      displayName: 数据预处理
      retries: 1
      timeoutSeconds: 3600
      outputs:
        parameters:
          - name: next-step
            valueFrom:
              path: /etc/output/data-preprocess/result.json
      env:
        - name: STAGE
          value: preprocess
      spec:
        # 节点负载参数按节点类型配置。
        # SF 作业节点可参考创建训练任务；SF 推理节点可参考创建大模型推理服务。
    ```
  </Tab>
</Tabs>

### 4. 提交创建

单击 **新建** 提交 Workflow。提交后，在 Workflows 列表或详情中查看流程状态。

创建 Workflow 时，重点确认节点依赖和执行条件是否符合流程预期。节点本身配置仍需满足对应训练任务或推理服务的配置要求。

## 查看和管理 Workflow

进入 **训练任务 > Workflows** 后，可以按页面提供的筛选条件查找 Workflow。查看 Workflow 时，重点关注：

* 当前流程状态和执行进度。
* 哪个节点正在运行、失败或等待上游节点。
* 节点失败是否来自任务配置、资源调度、镜像、挂载、命令或上游依赖。
* 是否需要重新运行流程，或单独排查某个训练任务。

如果 Workflow 未按预期执行，请先确认依赖关系和失败节点，再进入对应训练任务详情页查看事件、日志和监控。

## 相关文档

* [创建训练任务](./create-training-tasks)
