📥 导出数据集#
你的 Argilla 实例将始终保存并可访问你的所有数据集和注释。但是,如果你想将数据集本地保存或保存到 Hugging Face Hub 中,在本节中,你将找到一些有用的方法来做到这一点。
反馈数据集#
注意
本节涵盖的数据集类是 FeedbackDataset
。这个完全可配置的数据集将取代 Argilla 2.0 中的 DatasetForTextClassification
、DatasetForTokenClassification
和 DatasetForText2Text
。不确定使用哪个数据集?请查看我们关于选择数据集的部分。
从 Argilla 拉取#
第一步是使用 FeedbackDataset.from_argilla()
方法从 Argilla 拉取数据集。此方法将返回一个新的 FeedbackDataset
实例,该实例具有与 Argilla 中数据集相同的指南、字段、问题和记录(如果存在响应)。
注意
从 Argilla 1.14.0 开始,调用 from_argilla
将从 Argilla 拉取 FeedbackDataset
,但该实例将是远程的,这意味着记录的添加、更新和删除将在进行后立即推送到 Argilla。这与以前版本的 Argilla 不同,在以前的版本中,你必须再次调用 push_to_argilla
才能将更改推送到 Argilla。
remote_dataset = rg.FeedbackDataset.from_argilla("my-dataset", workspace="my-workspace")
local_dataset = remote_dataset.pull(max_records=100) # get first 100 records
如果你的数据集包含向量,默认情况下,为了提高性能,这些向量将不会与数据集的其余部分一起拉取。如果你想拉取记录中的向量,你需要像这样指定它
remote_dataset = rg.FeedbackDataset.from_argilla(
name="my-dataset",
workspace="my-workspace",
with_vectors="all"
)
remote_dataset = rg.FeedbackDataset.from_argilla(
name="my-dataset",
workspace="my-workspace",
with_vectors=["my_vectors"]
)
此时,你可以使用此数据集执行任何你可能需要的后处理,例如,来自多个注释者的统一响应。一旦你对结果感到满意,你可以决定以下一些选项来保存它。
推回 Argilla#
当使用通过 FeedbackDataset.from_argilla
从 Argilla 拉取的 FeedbackDataset
时,如果你想克隆数据集或在后处理后探索它,你可以随时将数据集推回 Argilla。
# This publishes the dataset with its records to Argilla and returns the dataset in Argilla
remote_dataset = dataset.push_to_argilla(name="my-dataset", workspace="my-workspace")
local_dataset = remote_dataset.pull(max_records=100) # get first 100 records
# This publishes the dataset with its records to Argilla and turns the dataset object into a dataset in Argilla
dataset.push_to_argilla(name="my-dataset", workspace="my-workspace")
此外,你仍然可以通过调用 push_to_argilla
来克隆既未推送也未从 Argilla 拉取的本地 FeedbackDataset
数据集。
dataset.push_to_argilla(name="my-dataset-clone", workspace="my-workspace")
推送到 Hugging Face Hub#
也可以将 FeedbackDataset
保存和加载到 Hugging Face Hub 中以进行持久化。push_to_huggingface
和 from_huggingface
方法允许你分别推送到或从 Hugging Face Hub 拉取。
当将 FeedbackDataset
推送到 HuggingFace Hub 时,可以提供参数 generate_card
以生成和推送 Dataset Card。generate_card
默认为 True
,因此除非指定 generate_card=False
,否则它将始终生成。
# Push to HuggingFace Hub
dataset.push_to_huggingface("argilla/my-dataset")
# Push to HuggingFace Hub as private
dataset.push_to_huggingface("argilla/my-dataset", private=True, token="...")
请注意,FeedbackDataset.push_to_huggingface()
方法不仅上传数据集记录,还上传一个名为 argilla.yaml
的配置文件,其中包含数据集配置,即字段、问题和指南(如果有)。这样,你可以使用 from_huggingface
方法将任何已推送到 Hub 的 FeedbackDataset
加载回 Argilla。查看 Hugging Face Hub 上的所有公共 Argilla 兼容数据集。
# Load a public dataset
dataset = rg.FeedbackDataset.from_huggingface("argilla/my-dataset")
# Load a private dataset
dataset = rg.FeedbackDataset.from_huggingface("argilla/my-dataset", use_auth_token=True)
保存到磁盘#
此外,由于与 🤗 Datasets 的集成,你还可以通过首先使用 format_as("datasets")
方法将 FeedbackDataset
转换为 datasets.Dataset
,以你喜欢的格式在本地导出 FeedbackDataset
的记录。然后,你可以将 datasets.Dataset
导出为 CSV、JSON、Parquet 等。查看 🤗Datasets 文档中的所有选项。
hf_dataset = dataset.format_as("datasets")
hf_dataset.save_to_disk("sharegpt-prompt-rating-mini") # Save as a `datasets.Dataset` in the local filesystem
hf_dataset.to_csv("sharegpt-prompt-rating-mini.csv") # Save as CSV
hf_dataset.to_json("sharegpt-prompt-rating-mini.json") # Save as JSON
hf_dataset.to_parquet() # Save as Parquet
注意
此解决方法只会将记录导出为所需的格式,而不会导出数据集配置。如果你想将记录加载回 Argilla,你将需要创建 FeedbackDataset并添加记录,如相应指南中所述。
其他数据集#
注意
本节涵盖的记录类对应于三个数据集:DatasetForTextClassification
、DatasetForTokenClassification
和 DatasetForText2Text
。这些将在 Argilla 2.0 中被弃用,并被完全可配置的 FeedbackDataset
类取代。不确定使用哪个数据集?请查看我们关于选择数据集的部分。
从 Argilla 拉取#
你可以使用 rg.load()
函数轻松地从 Argilla 加载数据集。
import argilla as rg
# load your annotated dataset from the Argilla web app
dataset_rg = rg.load("my_dataset")
为了方便和可管理性,Argilla 提供了到 Hugging Face Datasets 和 Pandas DataFrame 的转换。
# export your Argilla Dataset to a datasets Dataset
dataset_ds = dataset_rg.to_datasets()
# export to a pandas DataFrame
df = dataset_rg.to_pandas()
推回 Argilla#
当使用通过 rg.load
从 Argilla 拉取的其他数据集时,你可以随时将数据集推回 Argilla。这可以使用 rg.log()
函数完成,就像你第一次将记录推送到 Argilla 时一样。如果记录在数据集中尚不存在,则会将其添加到数据集中,否则,将更新现有记录。
import argilla as rg
dataset_rg = rg.load("my_dataset")
# loop through the records and change them
rg.log(dataset_rg, name="my_dataset")
推送到 Hugging Face Hub#
你可以以 Hugging Face Dataset 的形式直接将数据集推送到 hub。只需使用上一节中解释的 to_datasets()
转换并推送数据集
# push the dataset to the Hugging Face Hub
dataset_ds.push_to_hub("my_dataset")
保存到磁盘#
你的数据集将始终安全且可从 Argilla 访问,但如果你需要共享或将其保存到其他地方,以下是一些选项。
或者,你可以将数据集本地保存。为此,我们建议首先将数据集格式化为 Hugging Face Dataset 或 Pandas DataFrame,并使用这些库的原生方法导出为 CSV、JSON、Parquet 等。
# save locally using Hugging Face datasets
import argilla as rg
# load your annotated dataset from the Argilla web app
dataset_rg = rg.load("my_dataset")
# export your Argilla Dataset to a datasets Dataset
dataset_ds = dataset_rg.to_datasets()
dataset_ds.save_to_disk("my_dataset") # Save as a `datasets.Dataset` in the local filesystem
dataset_ds.to_csv("my_dataset.csv") # Save as CSV
dataset_ds.to_json("my_dataset.json") # Save as JSON
dataset_ds.to_parquet() # Save as Parquet
# save locally using Pandas DataFrame
import argilla as rg
# load your annotated dataset from the Argilla web app
dataset_rg = rg.load("my_dataset")
# export your Argilla Dataset to a Pandas DataFrame
df = dataset_rg.to_pandas()
df.to_csv("my_dataset.csv") # Save as CSV
df.to_json("my_dataset.json") # Save as JSON
df.to_parquet("my_dataset.parquet") # Save as Parquet