在 GitHub 上编辑

Hugging Face

DVC 原生支持从 Hugging Face Hub 导入和下载数据。DVC 项目中的数据也可以通过 DVC Python API 使用 Hugging Face Datasets 库加载。

Hugging Face Transformers 的日志记录功能在 DVCLive 中受支持。

Hugging Face Hub

DVC 支持从任意 Git 仓库导入或下载数据,包括使用 Git-LFS 的仓库(例如托管在 Hugging Face Hub 上的仓库)。HTTPS(https://huggingface.co/<MODEL>)和 SSH(git@hf.co:<MODEL>)格式的仓库 URL 均被支持。

DVC 已内置只读的 Git-LFS 支持,因此使用 DVC 从 Hugging Face Hub 导入和下载数据时,无需安装 Git LFS 或 Hugging Face CLI。

当通过 SSH 协议访问 Hugging Face Hub(即使用 git@hf.co:<MODEL> 格式的 URL)时,无论仓库是公开还是私有,都必须拥有已注册 SSH 密钥的 Hugging Face 账户。通过 HTTPS 访问公开仓库则不需要 Hugging Face 账户。更多信息请参考 Hugging Face 的 文档

此限制同时适用于 dvc getdvc import

设置

$ pip install dvc

下载数据

dvc get 提供了一种无需克隆 Hugging Face Hub 仓库、也无需额外依赖项(如 Git-LFS)即可从 Hugging Face Hub 下载数据的方法。支持下载单个文件和整个目录。

Stable Diffusion XL 1.0 下载 sd_xl_base_1.0 模型:

$ dvc get https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0 sd_xl_base_1.0.safetensors

导入数据

dvc import 提供了一种在 DVC 项目中使用 Hugging Face Hub 数据的方式。支持导入单个文件和目录。

sd_xl_base_1.0 模型从 Stable Diffusion XL 1.0 导入到一个 DVC 项目中:

$ dvc import https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0 sd_xl_base_1.0.safetensors

Hugging Face Datasets

Hugging Face Datasets 是一个用于访问和共享数据集的 Python 库。DVC Python API 提供了 DVCFileSystem,这是一个与 fsspec 兼容的文件系统,可与 Hugging Face Datasets 配合使用以从 DVC 项目加载数据。有关在 Hugging Face Datasets 中使用 fsspec 文件系统的详细信息,请参阅 Hugging Face 的 文档

设置

$ pip install datasets dvc

加载 DVC 数据

当 DVC 与 Hugging Face Datasets 安装在同一 Python 环境中时,若提供 dvc:// 文件系统 URL,将自动使用 DVCFileSystem。

请注意,dvc:// URL 包含的是你希望加载的文件相对于 DVC 项目根目录的路径,不应包含 Git 仓库的 URL。

Git 仓库 URL 及其他任何 DVCFileSystem 参数需通过 storage_options 字典单独提供。

从示例 dataset-registry 仓库中使用 Hugging Face Datasets 加载数据集 (workshop/satellite-data/jan_train.csv):

>>> from datasets import load_dataset
>>> load_dataset(
...     "csv",
...     data_files="dvc://workshop/satellite-data/jan_train.csv",
...     storage_options={"repo": "https://github.com/iterative/dataset-registry.git"}
... )
Downloading data: 100%|███████████████████████████████| 132M/132M [00:30<00:00, 4.32MB/s]
Downloading data files: 100%|██████████████████████████████| 1/1 [00:32<00:00, 32.17s/it]
Extracting data files: 100%|██████████████████████████████| 1/1 [00:00<00:00, 443.84it/s]
Generating train split: 503227 examples [00:00, 514266.75 examples/s]
DatasetDict({
    train: Dataset({
        features: ['id', 'epoch', 'sat_id', 'x', 'y', 'z', 'Vx', 'Vy', 'Vz', 'x_sim', 'y_sim', 'z_sim', 'Vx_sim', 'Vy_sim', 'Vz_sim'],
        num_rows: 503227
    })
})
内容

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

在 GitHub 上编辑

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

Discord 聊天