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

DVC报load_extract_save阶段循环依赖CyclicGraphError如何解决

错误原因

DVC 流水线依赖有向无环图(DAG)解析阶段执行顺序,抛出循环错误的核心原因是load_extract_save阶段存在自依赖配置:

  • 你在该阶段的deps(依赖项)中声明了artifacts/data路径
  • 同时在该阶段的outs(输出项)中也声明了同一路径artifacts/data

DVC 构建依赖图的规则是:为每个「输出路径所属阶段 → 依赖该路径的阶段」绘制一条有向边。当同一路径同时是一个阶段的输入和输出时,就会生成一条从该阶段指向自身的边,直接形成闭环,违反DAG的无环要求,因此抛出循环错误。

修复方案

根据artifacts/data的实际属性二选一调整即可:

  • 如果artifacts/data是stage_01_load_extract_save.py脚本运行生成的目录(比如脚本负责下载原始数据、解压到该路径):
    直接从load_extract_save的deps列表中删除- artifacts/data这一项即可,输出路径不需要作为自身的依赖。
    修正后该阶段配置如下:

    load_extract_save: 
      cmd: python src/stage_01_load_extract_save.py --config=config/config.yaml
      deps:
        - config/config.yaml
        - src/utils/all_utils.py
        - src/stage_01_load_extract_save.py
      outs:
        - artifacts/data
        - artifacts/clean_data/X.npy
        - artifacts/clean_data/Y.npy
    

    其余三个阶段(train_test_split_save、train_model、metrics)的配置不需要改动。

  • 如果artifacts/data是你提前存放的静态原始数据集、不是该脚本生成的:
    从load_extract_save的outs列表中删除- artifacts/data这一项,保留其在deps中的配置,提前执行dvc add artifacts/data命令将静态原始数据集纳入DVC版本追踪即可,不要让同一路径同时作为单个阶段的输入和输出。

调整完成后重新执行dvc repro即可正常解析流水线,不会再报循环错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:27:18