远程存储
DVC 远程(remotes) 提供对外部存储位置的访问,用于跟踪和共享您的数据及机器学习模型。通常,这些存储位置会在参与项目的不同设备或团队成员之间共享。例如,您可以直接下载同事创建的数据产物,而无需耗费时间和本地资源重新生成。另请参见 dvc push
和 dvc pull
。
DVC 远程类似于 Git 远程仓库(例如 GitHub 或 GitLab 托管服务),但用于存储缓存的数据而非代码。
DVC 不提供也不推荐特定的存储服务(与代码仓库不同)。您可以从多种 支持的存储类型 中选择自有的平台。
远程存储的主要用途:
- 同步由 DVC 跟踪的大文件和目录。
- 集中化或分布式存储数据,便于共享与协作。
- 备份不同版本的数据集和模型(节省本地空间)。
配置
您可以使用 dvc remote
命令设置一个或多个存储位置。这些命令会读取和写入项目配置文件(.dvc/config
)中的 remote
部分,您也可以手动编辑该文件。
例如,我们来定义一个位于 S3 存储桶上的远程存储位置:
$ dvc remote add myremote s3://mybucket
DVC 会读取您本地已存在的主流云服务商(AWS、Azure、GCP)的配置,因此很多时候只需运行 dvc remote add
即可!
您可能还需要使用 dvc remote modify
来自定义认证信息或其他配置:
$ dvc remote modify --local \
myremote credentialpath ~/.aws/alt
$ dvc remote modify myremote connect_timeout 300
需要使用 --local
标志将敏感用户信息写入被 Git 忽略的配置文件(.dvc/config.local
),以防止泄露机密信息(参见 dvc config
)。这意味着每个 DVC 仓库 的副本都需要重新配置这些值。
# .dvc/config
['remote "myremote"']
url = s3://my-bucket
connect_timeout = 300
# .dvc/config.local
['remote "myremote"']
credentialpath = ~/.aws/alt
# .gitignore
.dvc/config.local
最后,您可以使用 git commit
提交更改,以便与团队共享此远程存储位置。
支持的存储类型
云服务商
- Amazon S3(AWS)以及 S3 兼容 服务,例如 MinIO
- Microsoft Azure Blob Storage
- Google Cloud Storage(GCP)
- Google Drive
- 阿里云 OSS
自托管 / 本地部署
文件系统(本地远程)
与 dvc remote
和 dvc config
中的 --local
选项无关!
您还可以使用系统目录、挂载的磁盘、网络资源(如网络附加存储 NAS)以及其他外部设备作为存储。我们将所有这些称为“本地远程(local remotes)”。
这里的“本地”指的是存储的位置:通常是在同一文件系统中的另一个目录。而“远程”是我们对 DVC 项目 所用存储的统称。
使用绝对路径(推荐,因为它会按原样保存在 DVC 配置中):
$ dvc remote add -d myremote /tmp/dvcstore
# .dvc/config
['remote "myremote"']
url = /tmp/dvcstore
使用相对路径时,它将被保存为相对于配置文件位置的路径,但在解析时会基于当前工作目录进行解析。
$ dvc remote add -d myremote ../dvcstore
# .dvc/config
['remote "myremote"']
url = ../../dvcstore