导入和导出数据集和记录¶
本指南概述了如何将您的数据集或其记录导入和导出到 Python、本地磁盘或 Hugging Face Hub。
在 Argilla 中,您可以导入/导出数据集的两个主要组成部分
- 数据集的完整配置在
rg.Settings
中定义。如果您想分享您的反馈任务或稍后在 Argilla 中恢复它,这将非常有用。 - 存储在数据集中的记录,包括
Metadata
、Vectors
、Suggestions
和Responses
。如果您想在 Argilla 之外使用数据集的记录,这将非常有用。
查看 Dataset - Python 参考 以详细了解导出 Dataset
类的属性、参数和方法。
主要类
查看 Dataset - Python 参考 以详细了解导出
Dataset
类的属性、参数和方法。查看 Record - Python 参考 以详细了解
Record
类的属性、参数和方法。
导入和导出数据集¶
首先,我们将介绍从 Argilla 导出完整数据集的过程。这包括数据集的设置和记录。所有这些方法都使用 rg.Dataset.from_*
和 rg.Dataset.to_*
方法。
Hugging Face Hub¶
导出到 Hub¶
您可以将数据集从 Argilla 推送到 Hugging Face Hub。如果您想与社区分享数据集或进行版本控制,这将非常有用。您可以使用 rg.Dataset.to_hub
方法将数据集推送到 Hugging Face Hub。
import argilla as rg
client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
dataset = client.datasets(name="my_dataset")
dataset.to_hub(repo_id="<my_org>/<my_dataset>")
包含或不包含记录
上面的示例会将数据集的 Settings
和记录推送到 Hub。如果您只想推送数据集的配置,可以将 with_records
参数设置为 False
。如果您只对特定的数据集模板感兴趣,或者想更改数据集设置和/或记录,这将非常有用。
从 Hub 导入¶
您可以将数据集从 Hugging Face Hub 拉取到 Argilla。如果您想恢复数据集及其配置,这将非常有用。您可以使用 rg.Dataset.from_hub
方法从 Hugging Face Hub 拉取数据集。
import argilla as rg
client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
rg.Dataset.from_hub(repo_id="<my_org>/<my_dataset>")
默认情况下,Dataset.from_hub
方法将返回数据集配置页面的 URL。此页面允许您在 Argilla 中创建数据集之前预览数据集的配置和记录。
您可以通过将 settings
参数配置为 "auto"
来自动推断数据集的设置。这将根据 datasets.Features
中数据集的特征来推断数据集的设置。
import argilla as rg
client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
dataset = rg.Dataset.from_hub(repo_id="<my_org>/<my_dataset>", settings="auto")
rg.Dataset.from_hub
方法从数据集仓库加载配置和记录。如果您只想加载记录,可以将 datasets.Dataset
对象传递给 rg.Dataset.log
方法。这使您可以配置自己的数据集并重用现有的 Hub 数据集。有关更多信息,请参阅关于记录的指南。
包含或不包含记录
上面的示例将从 Hub 拉取数据集的 Settings
和记录。如果您只想拉取数据集的配置,可以将 with_records
参数设置为 False
。如果您只对特定的数据集模板感兴趣,或者想更改记录,这将非常有用。
然后,您可以使用 datasets
包的 load_dataset
方法记录数据集的记录,并将数据集传递给 rg.Dataset.log
方法。
- 您还可以使用
mapping
参数将记录字段名称映射到 argilla 字段和问题名称。
从 Hub 导入设置¶
从 Hub 导入数据集时,Argilla 将通过三种方式从 Hub 加载设置
- 如果数据集是由 Argilla 推送到 Hub 的,则设置将通过配置文件从 Hub 加载。
- 如果数据集是由其他来源加载的,则 Argilla 将根据
datasets.Features
中数据集的特征定义设置。例如,为文本特征创建TextField
或为标签类创建LabelQuestion
。 - 您可以通过
settings
参数将自定义rg.Settings
对象传递给rg.Dataset.from_hub
方法。这将覆盖从 Hub 加载的设置。
settings = rg.Settings(
fields=[rg.TextField(name="text")],
questions=[rg.TextQuestion(name="answer")]
) # (1)
dataset = rg.Dataset.from_hub(repo_id="<my_org>/<my_dataset>", settings=settings)
- 您传递给
rg.Dataset.from_hub
方法的设置将覆盖从 Hub 加载的设置,并且需要与正在加载的数据集对齐。
本地磁盘¶
导出到磁盘¶
您可以将数据集从 Argilla 保存到本地磁盘。如果您想备份数据集,这将非常有用。您可以使用 rg.Dataset.to_disk
方法。我们建议您使用空目录。
import argilla as rg
client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
dataset = client.datasets(name="my_dataset")
dataset.to_disk(path="<path-empty-directory>")
这会将数据集的配置和记录保存到指定的路径。如果您只想保存数据集的配置,可以将 with_records
参数设置为 False
。
从磁盘导入¶
您可以将数据集从本地磁盘加载到 Argilla。如果您想恢复数据集的配置,这将非常有用。您可以使用 rg.Dataset.from_disk
方法。
将数据集定向到名称和工作区
您还可以在从磁盘加载数据集时指定数据集的名称和工作区。
导入和导出记录¶
仅记录可以从 Argilla 的数据集中导出。如果您想在 Python 中处理记录、将其导出到不同的平台或在模型训练中使用它们,这将非常有用。所有这些方法都使用 rg.Dataset.records
属性。
导出记录¶
记录可以导出为字典、字典列表或 datasets
包的 Dataset
。
包含图像
如果您的数据集包含图像,则导出记录的推荐方法是使用 to_datasets
方法,该方法将图像导出为重新缩放的 PIL 对象。使用其他方法,图像将使用数据 URI 模式导出。
记录可以从 Dataset.records
导出为字典。to_dict
方法可用于将记录导出为字典。您可以指定字典输出的方向。您还可以决定是否展平字典。
import argilla as rg
client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
dataset = client.datasets(name="my_dataset")
# Export records as a dictionary
exported_records = dataset.records.to_dict()
# {'fields': [{'text': 'Hello'},{'text': 'World'}], suggestions': [{'label': {'value': 'positive'}}, {'label': {'value': 'negative'}}]
# Export records as a dictionary with orient=index
exported_records = dataset.records.to_dict(orient="index")
# {"uuid": {'fields': {'text': 'Hello'}, 'suggestions': {'label': {'value': 'positive'}}}, {"uuid": {'fields': {'text': 'World'}, 'suggestions': {'label': {'value': 'negative'}}},
# Export records as a dictionary with flatten=True
exported_records = dataset.records.to_dict(flatten=True)
# {"text": ["Hello", "World"], "label.suggestion": ["greeting", "greeting"]}
记录可以从 Dataset.records
导出为字典列表。to_list
方法可用于将记录导出为字典列表。您可以决定是否展平它。
import argilla as rg
client = rg.Argilla(api_url="<api_url>", api_key="<api_key>")
workspace = client.workspaces("my_workspace")
dataset = client.datasets(name="my_dataset", workspace=workspace)
# Export records as a list of dictionaries
exported_records = dataset.records.to_list()
# [{'fields': {'text': 'Hello'}, 'suggestion': {'label': {value: 'greeting'}}}, {'fields': {'text': 'World'}, 'suggestion': {'label': {value: 'greeting'}}}]
# Export records as a list of dictionaries with flatten=True
exported_records = dataset.records.to_list(flatten=True)
# [{"text": "Hello", "label": "greeting"}, {"text": "World", "label": "greeting"}]
记录可以从 Dataset.records
导出到 datasets
包。to_dataset
方法可用于将记录导出到 datasets
包。您可以指定数据集的名称和拆分以导出记录。
导入记录¶
要将记录导入数据集,请使用 rg.Datasets.records.log
方法。有关如何执行此操作的指南,请参阅 操作指南 - 记录,或者您可以查看 Record - Python 参考。