在 GitHub 上编辑

DVC 配置

项目 中初始化后,DVC 会在其安装目录中生成 内部文件,其中包括默认的配置文件 .dvc/config

配置文件可以手动(或通过编程)编写,也可以使用辅助命令 dvc config 进行管理。

配置文件位置

.dvc/config 应由 Git 跟踪,且不应包含敏感用户信息或密钥(如密码、SSH 密钥等)。

DVC 支持将配置保存在 仓库 之外,可以是与常规配置文件并列的 Git 忽略文件,也可以是文件系统中的其他位置。这些位置及其加载优先级如下所示:

优先级类型macOS 位置Linux 位置(典型*)Windows 位置
1本地.dvc/config.local相同相同
2项目(默认).dvc/config相同相同
3全局$HOME/Library/Application\ Support/dvc/config$HOME/.config/dvc/config%LocalAppData%\iterative\dvc\config
4系统/Library/Application\ Support/dvc/config/etc/xdg/dvc/config%AllUsersProfile%\Application Data\iterative\dvc\config

* 对于 Linux,如果定义了环境变量,则全局文件可能位于 $XDG_CONFIG_HOME,系统文件位于 $XDG_CONFIG_DIRS[0]

另见 dvc config--local--global--system 参数。

配置部分

以下配置部分由该命令写入相应的配置文件(默认为 .dvc/config),支持其中不同的配置选项:

  • core.remote - 默认远程存储的名称

  • core.interactive - 在执行 dvc repro 时,是否始终在每个 阶段 再现前请求确认。(通常,此行为需要使用该命令的 -i 选项。)可接受值:truefalse

  • core.analytics - 用于关闭匿名使用统计信息。可接受值为 true(默认)和 false

  • core.checksum_jobs - 计算文件哈希值的线程数。接受正整数。默认值为 max(1, min(4, cpu_count() // 2))

  • core.hardlink_lock - 使用硬链接文件锁,代替基于 flock 的默认文件锁(即项目锁文件 .dvc/lock)。可接受值为 truefalse(默认)。当 DVC 项目位于不完全支持文件锁定的文件系统上时(例如 NFS v3 及更早版本),此选项非常有用。

  • core.no_scm - 告诉 DVC 不要期望或集成 Git(即使项目初始化在 Git 仓库中)。可接受值为 truefalse(默认)。可通过 dvc init 命令的 --no-scm 选项设置(更多详情)。

  • core.check_update - 禁用/启用 DVC 的自动更新检查功能,该功能会在有新版本可用时通知用户。可接受值为 true(默认)和 false

  • core.autostage - 启用后,DVC 将自动暂存(git add)由 DVC 命令创建或修改的DVC 文件。这些文件不会被提交。可接受值为 truefalse(默认)。

  • core.site_cache_dir - 指定其他临时文件的自定义位置。点击 此处了解更多信息。

与其他大多数部分不同,配置文件可以包含多个 'remote'。每个远程都需要唯一的 "name" 和一个 url 值。它们还可以指定 jobsverify 以及许多特定平台的键值对,如 portpassword

详见 远程存储配置

例如,以下配置文件在本地文件系统中定义了一个名为 temp 的远程(位于 /tmp/dvcstore),并通过 core 部分将其标记为默认远程:

['remote "temp"']
    url = /tmp/dvcstore
[core]
    remote = temp
  • cache.dir - 设置/取消设置缓存目录的位置。正确值应为绝对路径,或相对于配置文件位置的路径。默认值为 cache,对应于 .dvc/cache(相对于项目配置文件位置)。

    也可使用辅助命令 dvc cache dir 直观地设置此配置项,该命令会将相对于当前工作目录的路径正确转换为相对于配置文件位置的路径。

  • cache.type - DVC 应用于从缓存链接数据文件到工作区的链接类型。可能的值包括:reflinksymlinkhardlinkcopy,或以逗号分隔的有序组合,例如:reflink,hardlink,copy。默认值:reflink,copy

    不同的链接类型各有优缺点。请参阅 文件链接类型 获取每种类型的完整说明。

    如果将 cache.type 设置为 hardlinksymlink,手动修改工作区中被跟踪的数据文件将会破坏缓存。为防止此问题,DVC 会自动保护此类链接(使其变为只读)。请使用 dvc unprotect 来安全地修改这些文件。

    要将此配置更改应用到工作区,请使用 dvc checkout --relink 从缓存中恢复所有文件链接/副本。

  • cache.slow_link_warning - 用于关闭关于缓存链接类型较慢的警告。当链接文件耗时较长时,dvc pulldvc checkout 会抛出此类警告,提醒用户存在比默认值(reflink,copy — 参见 cache.type)更快的缓存链接类型。可接受的值为 truefalse

    当手动设置 cache.type 时,这些警告将自动关闭。

  • cache.shared - 新创建或下载的缓存文件和目录的权限。目前唯一接受的值是 group,它会使 DVC 对文件使用 444(r—r—r—),对目录使用 775(rwxrwxr-x)。这在项目之间共享缓存时非常有用。缓存文件的默认权限取决于系统。例如,在 Linux 和 macOS 上,它们由 os.umask 决定。

类似于 remote,配置文件可以包含多个 'db'。每个都必须具有唯一的 "name" 和一个 url 值,该值是连接数据库所需的连接字符串。它们还可以指定 usernamepassword 选项,这些选项将与提供的 url 组合使用,并传递给相应的数据库驱动程序以连接数据库。

password 设置为 Git 忽略的本地配置文件(.dvc/config.local),以防止通过 Git 泄露任何敏感信息。

例如,以下配置文件定义了一个名为 pgsql 的数据库连接,用于以用户 user 身份连接到位于 host URL 上的 dbname 数据库。postgresql:// 指定了用于连接该数据库的驱动程序。

['db "pgsql"']
  url = "postgresql://user@host/dbname

名称(例如 pgsql)可用于在诸如 import-db 等命令中指定要连接的数据库。

设置实验配置的默认值。

  • exp.auto_push - 在执行 dvc exp rundvc exp save 后自动推送实验。可接受值为 truefalse(默认)。
  • exp.git_remote - 用于推送实验并将实时指标和图表发送到 DVC Studio 的 Git 远程名称或 URL。默认为 origin

通过Hydra Composition设置实验配置的默认值。

  • hydra.enabled - 启用 Hydra 配置组合功能。
  • hydra.config_dir - 包含 Hydra 配置组的目录位置。默认为 conf
  • hydra.config_name - 包含 Hydra 默认列表的文件名(位于 hydra.config_dir 内)。默认为 config.yaml
  • hydra.plugins_path - hydra_plugins 所在父目录的位置,Hydra 将在此处自动发现插件。默认为 DVC 仓库的根目录。
  • parsing.bool - 控制在字典解包中使用布尔值时的模板语法。

    有效值为 "store_true"(默认)和 "boolean_optional",名称来源于Python argparse 动作

    给定以下 params.yaml

    dict:
      bool-true: true
      bool-false: false

    以及对应的 dvc.yaml

    stages:
      foo:
        cmd: python foo.py ${dict}

    当使用 store_true 时,cmd 将为:

    python foo.py --bool-true

    当使用 boolean_optional 时,cmd 将为:

    python foo.py --bool-true --no-bool-false
  • parsing.list - 控制在字典解包中使用列表值时的模板语法。

    有效值为 "nargs"(默认)和 "append",名称来源于Python argparse 动作

    给定以下 params.yaml

    dict:
      list: [1, 2, 'foo']

    以及对应的 dvc.yaml

    stages:
      foo:
        cmd: python foo.py ${dict}

    当使用 nargs 时,cmd 将为:

    python foo.py --list 1 2 'foo'

    而当使用 append 时,cmd 将为:

    python foo.py --list 1 --list 2 --list 'foo'

自 DVC 2.48.0 起,此部分已废弃。修改这些配置选项将无效。

  • state.row_limit - 状态数据库中的最大条目数。这会影响状态文件的物理大小以及某些 DVC 操作的性能。默认为 10,000,000 行。限制越大,DVC 可保留的文件哈希历史越长,例如。

  • state.row_cleanup_quota - 当状态数据库达到 state.row_limit 时,将删除数据库的百分比。默认配额为 50%。DVC 会删除最旧的条目(例如在使用 dvc status 时创建的条目)。

  • state.dir - 指定状态数据库(links/md5/ 目录)的自定义位置,默认位于 .dvc/tmp。在 NFS 或其他挂载卷上使用 DVC 且 SQLite 遇到文件权限错误时,可能需要此设置。

  • studio.token - 要使用的 DVC Studio 访问令牌。设置后,DVC 将使用该令牌共享实时实验并通知 Studio 关于推送的实验。出于安全考虑,建议将令牌设置为本地或全局配置。也可通过 DVC_STUDIO_TOKEN 环境变量指定,其值将覆盖 studio.token 中的任何设置。

    获取令牌 或查看 如何创建访问令牌的指南

  • studio.offline - 即使设置了 studio.token 或通过 DVC_STUDIO_TOKEN 指定了令牌,也会禁用共享实时实验。离线模式也可通过 DVC_STUDIO_OFFLINE 环境变量指定,其值将覆盖 studio.offline 中的任何设置。接受值 truefalse

  • studio.url - 要使用的 Studio 的 URL(适用于自托管的 DVC Studio 实例)。也可通过 DVC_STUDIO_URL 环境变量指定,其值将覆盖 studio.url 中的任何设置。若未设置,则使用 https://studio.datachain.ai

自 DVC 2.48.0 起,此部分已废弃。修改这些配置选项将无效。

  • index.dir - 指定远程索引文件存储目录的自定义位置,默认位于 .dvc/tmp/index。在 NFS 或其他挂载卷上使用 DVC 时可能需要此设置。
内容

🐛 发现问题?告诉我们!或者修复它:

在 GitHub 上编辑

有疑问?加入我们的聊天,我们会为您提供帮助:

Discord 聊天