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
- 配置文件中描述 远程存储 的部分cache
- 影响项目 缓存 的选项db
- 配置文件中描述 数据库连接 的部分exp
- [实验] 配置相关的选项hydra
- 实验配置中关于 Hydra 组合 的选项parsing
- 关于 字典解包 解析的选项plots
- 配置dvc plots
的选项state
- 参见 内部目录和文件 了解状态数据库的更多信息studio
- 配置 DVC Studio 令牌的选项index
- 参见 内部目录和文件 了解远程索引文件的更多信息
-
core.remote
- 默认远程存储的名称 -
core.interactive
- 在执行dvc repro
时,是否始终在每个 阶段 再现前请求确认。(通常,此行为需要使用该命令的-i
选项。)可接受值:true
和false
。 -
core.analytics
- 用于关闭匿名使用统计信息。可接受值为true
(默认)和false
。 -
core.checksum_jobs
- 计算文件哈希值的线程数。接受正整数。默认值为max(1, min(4, cpu_count() // 2))
。 -
core.hardlink_lock
- 使用硬链接文件锁,代替基于flock
的默认文件锁(即项目锁文件.dvc/lock
)。可接受值为true
和false
(默认)。当 DVC 项目位于不完全支持文件锁定的文件系统上时(例如 NFS v3 及更早版本),此选项非常有用。 -
core.no_scm
- 告诉 DVC 不要期望或集成 Git(即使项目初始化在 Git 仓库中)。可接受值为true
和false
(默认)。可通过dvc init
命令的--no-scm
选项设置(更多详情)。 -
core.check_update
- 禁用/启用 DVC 的自动更新检查功能,该功能会在有新版本可用时通知用户。可接受值为true
(默认)和false
。 -
core.autostage
- 启用后,DVC 将自动暂存(git add
)由 DVC 命令创建或修改的DVC 文件。这些文件不会被提交。可接受值为true
和false
(默认)。 -
core.site_cache_dir
- 指定其他临时文件的自定义位置。点击 此处了解更多信息。
-
cache.dir
- 设置/取消设置缓存目录的位置。正确值应为绝对路径,或相对于配置文件位置的路径。默认值为cache
,对应于.dvc/cache
(相对于项目配置文件位置)。也可使用辅助命令
dvc cache dir
直观地设置此配置项,该命令会将相对于当前工作目录的路径正确转换为相对于配置文件位置的路径。 -
cache.type
- DVC 应用于从缓存链接数据文件到工作区的链接类型。可能的值包括:reflink
、symlink
、hardlink
、copy
,或以逗号分隔的有序组合,例如:reflink,hardlink,copy
。默认值:reflink,copy
不同的链接类型各有优缺点。请参阅 文件链接类型 获取每种类型的完整说明。
如果将
cache.type
设置为hardlink
或symlink
,手动修改工作区中被跟踪的数据文件将会破坏缓存。为防止此问题,DVC 会自动保护此类链接(使其变为只读)。请使用dvc unprotect
来安全地修改这些文件。要将此配置更改应用到工作区,请使用
dvc checkout --relink
从缓存中恢复所有文件链接/副本。 -
cache.slow_link_warning
- 用于关闭关于缓存链接类型较慢的警告。当链接文件耗时较长时,dvc pull
和dvc checkout
会抛出此类警告,提醒用户存在比默认值(reflink,copy
— 参见cache.type
)更快的缓存链接类型。可接受的值为true
和false
。当手动设置
cache.type
时,这些警告将自动关闭。 -
cache.shared
- 新创建或下载的缓存文件和目录的权限。目前唯一接受的值是group
,它会使 DVC 对文件使用444
(r—r—r—),对目录使用775
(rwxrwxr-x)。这在项目之间共享缓存时非常有用。缓存文件的默认权限取决于系统。例如,在 Linux 和 macOS 上,它们由os.umask
决定。
类似于 remote
,配置文件可以包含多个 'db'
。每个都必须具有唯一的 "name"
和一个 url
值,该值是连接数据库所需的连接字符串。它们还可以指定 username
和 password
选项,这些选项将与提供的 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 run
和dvc exp save
后自动推送实验。可接受值为true
和false
(默认)。exp.git_remote
- 用于推送实验并将实时指标和图表发送到 DVC Studio 的 Git 远程名称或 URL。默认为origin
。
通过Hydra Composition设置实验配置的默认值。
-
parsing.bool
- 控制在字典解包中使用布尔值时的模板语法。有效值为
"store_true"
(默认)和"boolean_optional"
,名称来源于Pythonargparse
动作。给定以下
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"
,名称来源于Pythonargparse
动作。给定以下
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'
-
plots.auto_open
- 若为true
,DVC 将在浏览器中自动打开由dvc plots
命令生成的 HTML 文件。默认为false
-
plots.html_template
- 为dvc plots
设置自定义 HTML 模板。接受相对于.dvc/
文件夹的路径。 -
plots.out_dir
- 更改dvc plots show --out
和dvc plots diff --out
的默认值。原始默认值为dvc_plots
。
自 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
中的任何设置。接受值true
和false
。 -
studio.url
- 要使用的 Studio 的 URL(适用于自托管的 DVC Studio 实例)。也可通过DVC_STUDIO_URL
环境变量指定,其值将覆盖studio.url
中的任何设置。若未设置,则使用https://studio.datachain.ai
。