DVC 使用指南:项目结构中dvc.yaml文件详解(下)

简介: 您可以通过在一个或多个 dvc.yaml 文件(或流水线文件)中定义各个阶段(Stage)来构建数据科学或机器学习流水线(Pipeline)。 Stage 相互连接时形成 Pipeline (形成依赖关系图,具体请见: dvc dag)。

DVC 还可以对直接提供给 foreach 的字典进行迭代,从而产生两个可用的替换表达式:${key}${item}。 前者用于 Stage 名称:

stages:
  build:
    foreach:
      uk:
        epochs: 3
        thresh: 10
      us:
        epochs: 10
        thresh: 15
    do:
      cmd: python train.py '${key}' ${item.epochs} ${item.thresh}
      outs:
        - model-${key}.hdfs
复制代码


dvc.lock文件如下所示:

# dvc.lock
schema: '2.0'
stages:
  build@uk:
    cmd: python train.py 'uk' 3 10
    outs:
      - path: model-uk.hdfs
        md5: 17b3d1efc339b416c4b5615b1ce1b97e
  build@us: ...
复制代码


重要的是,来自 参数文件 的字典也可以用于foreach阶段:

stages:
  mystages:
    foreach: ${myobject} # From params.yaml
    do:
      cmd: ./script.py ${key} ${item.prop1}
      outs:
        - ${item.prop2}
复制代码


注意,此功能目前与 模板 不兼容。

Stage 条目

这些是每个Stage接受的字段:

字段 描述
cmd (必须的) Stage 执行的一个或多个命令(可能包含单个值或列表)。 命令按顺序执行,直到所有命令都完成或其中一个失败(请参阅 dvc repro)。
wdir stage命令要在其进行运行的工作目录(相对于文件的位置)。其他字段中的任何路径也基于此工作目录。默认为.(文件的位置)。
deps 此 Stage 的依赖路径列表(相对于wdir)。
outs 此 Stage 的输出路径列表(相对于wdir)。 这些可以包含某些可选的 子字段
params 要从params.yaml(在wdir中)跟踪的参数依赖键(字段名称)列表。 该列表还可能包含其他参数文件名,以及要在他们之中进行跟踪的参数名称的子列表。
metrics 指标文件 列表,以及是否缓存此指标文件(默认情况下为true)(可选)。 请参阅 dvc run--metrics-no-cache(-M) 选项。
plots 图表指标 列表,以及可选的默认配置(匹配 dvc plots modify命令参数选项的子字段),以及此图表文件是否被缓存(默认为 true)。 请参阅 dvc run--plots-no-cache 参数选项。
frozen 这个阶段是否因重现而冻结
always_changed 此阶段是否被 dvc statusdvc repro等命令视为已更改。 默认 为false
meta (可选的) 可以使用此字段手动添加任意元数据。 支持任何 YAML 内容。 meta 内容被 DVC 忽略,但它们对于直接读取或写入 .dvc 文件的用户进程可能有意义。
desc (可选的) 此 Stage 的用户描述。 这不会影响任何 DVC 操作。
live (可选的) Dvclive 配置字段

dvc.yaml 文件也支持 # 号注释 ,如:# the comments is demo

请注意,我们维护一个 dvc.yamlschema  可供 VSCode 或  PyCharm 等编辑器使用,目的是为了启用自动语法验证和自动完成。

请参阅如何合并冲突

输出(output)子字段

其中包括 .dvc 文件 output 条目 中的部分字段。

字段 描述
cache 是否缓存此文件或目录(默认为true)。 请参阅 dvc add--no-commit 选项参数。
remote (可选的) 用于pushing/fetching的远程存储的名称。
persist dvc repro 运行时是否应保留输出文件/目录(默认为falsedvc repro 启动时会删除输出
checkpoint (可选的) 设置为 true 让 DVC 知道此输出与 checkpoint 实验 相关联。 这些输出将恢复到它们在 dvc exp run 处的最后一个缓存版本,并且在 Stage 执行期间也“持久化”。
desc (可选的) 此输出的用户描述。 这不会影响任何 DVC 操作。

⚠️ 请注意,使用 dvc.yaml 中的 checkpoint 字段与 dvc repro不兼容。

dvc.lock 文件

避免编辑这些文件。 DVC 将为您创建和更新它们。

为了记录流水线的状态并帮助跟踪其输出,DVC 对于每个 dvc.yaml 将维护一个 dvc.lock  文件。 他们的目的包括:

  • 当 Stage 定义或其依赖关系发生变化时,允许 DVC 检测。此类状况将使 Stage 无效,需要对其进行重新生产(参见 dvc status)。
  • 跟踪流水线的中间和最终输出---类似于 .dvc 文件。
  • 需要多个 DVC 命令才能运行,例如: dvc checkoutdvc get

具体示例如下:

schema: '2.0'
stages:
  features:
    cmd: jupyter nbconvert --execute featurize.ipynb
    deps:
      - path: data/clean
        md5: d8b874c5fa18c32b2d67f73606a1be60
    params:
      params.yaml:
        levels.no: 5
    outs:
      - path: features
        md5: 2119f7661d49546288b73b5730d76485
        size: 154683
      - path: performance.json
        md5: ea46c1139d771bfeba7942d1fbb5981e
        size: 975
      - path: logs.csv
        md5: f99aac37e383b422adc76f5f1fb45004
        size: 695947
复制代码


dvc.lock 中再次列出了 Stage ,以便了解它们的定义是否在 dvc.yaml中发生了变化。

常规的依赖项和所有形式的输出项(包括 metricsplots 文件)也在 dvc.lock 中,包括一个内容哈希字段(md5etagchecksum)。

每个参数文件名下也列出了完整的参数依赖项(包括键和值)(在params下)。 templated dvc.yaml 文件,实际值写入了dvc.lock(没有${}表达式)。

至于 foreach 阶段,扩展了各个 Stage(不保留foreach 结构)。

相关文章
|
2月前
|
存储 IDE 测试技术
玩转数据处理利器:学会使用 YAML 文件轻松处理数据
玩转数据处理利器:学会使用 YAML 文件轻松处理数据
158 0
|
9月前
|
Kubernetes Cloud Native 应用服务中间件
【云原生】使用k8s创建nginx服务—通过yaml文件svc类型暴露
【云原生】使用k8s创建nginx服务—通过yaml文件svc类型暴露
314 0
|
9月前
|
Web App开发 资源调度 JavaScript
SAP Fiori Elements 应用里的 ui5.yaml 文件详解试读版
SAP Fiori Elements 应用里的 ui5.yaml 文件详解试读版
|
9月前
|
Kubernetes 应用服务中间件 nginx
kubernetes集群命令行工具kubectl介绍&yaml文件介绍-20230208
kubernetes集群命令行工具kubectl介绍&yaml文件介绍-20230208
177 0
|
2月前
|
机器学习/深度学习 数据可视化 计算机视觉
YOLOv5改进 | 2023Neck篇 | 轻量级跨尺度特征融合模块CCFM(附yaml文件+添加教程)
YOLOv5改进 | 2023Neck篇 | 轻量级跨尺度特征融合模块CCFM(附yaml文件+添加教程)
461 1
|
9天前
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
9天前
|
存储 Java 数据库连接
YAML文件格式详解及应用
YAML文件格式详解及应用
|
11天前
|
数据安全/隐私保护 Python
经验大分享:python读取yaml文件
经验大分享:python读取yaml文件
13 0
|
13天前
|
存储 Java 应用服务中间件
后端企业级开发之yaml数据序列化格式文件详解2024
后端企业级开发之yaml数据序列化格式文件详解2024
16 0
|
21天前
|
SQL 监控 Java
实时计算 Flink版产品使用问题之在进行数据同步时,修改了YAML文件以增加新的同步表并取消了之前的同步任务,如何从之前的检查点继续执行
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。