如何解决Huggingface Dataset元数据推送Hub后拉取为空的问题?
解决Hugging Face Dataset推送后元数据丢失的问题
问题场景
通过Dataset.from_dict创建带有DatasetInfo的训练、测试、验证数据集,组合成DatasetDict后本地可正常读取子集的info.description,但推送至Hugging Face Hub后拉取数据,子集的info.description返回空字符串。
原因解析
Hugging Face Hub的数据集元数据是基于DatasetDict的全局info生成dataset_info.json文件的。若仅给单个Dataset设置info而未给DatasetDict配置全局元数据,推送时Hub会忽略子集的元数据,生成默认空值。
解决方案
给组合后的DatasetDict设置全局info,再执行推送操作。修改后的代码如下:
from datasets import Dataset, DatasetDict, DatasetInfo info = DatasetInfo( description="my happy lil dataset", version="0.0.1", homepage="https://www.myhomepage.co.uk" ) # 创建各子集数据集(无需单独传入info) train_dataset = Dataset.from_dict(prepare_data(data["train"])) test_dataset = Dataset.from_dict(prepare_data(data["test"])) validation_dataset = Dataset.from_dict(prepare_data(data["validation"])) # 组合为DatasetDict dataset = DatasetDict({ "train": train_dataset, "test": test_dataset, "validation": validation_dataset }) # 为DatasetDict设置全局元数据 dataset.info = info # 推送至Hub dataset.push_to_hub(f"{organization}/{repo_name}", commit_message="Some commit message")
拉取数据后,无论是访问pulled_data.info.description还是pulled_data["train"].info.description,都能正确获取设置的描述信息。若已推送错误版本,重新运行上述代码即可覆盖Hub上的元数据。
内容的提问来源于stack exchange,提问作者MadDanWithABox
相关产品推荐
相关产品推荐

