ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

RD-Agent LLM Finetune 场景的数据集管理模块:prepare 注册机制、下载后处理与 README 覆盖策略

RD-Agent LLM Finetune 场景的数据集管理模块:prepare 注册机制、下载后处理与 README 覆盖策略 RD-Agent LLM Finetune 场景的数据集管理模块prepare 注册机制、下载后处理与 README 覆盖策略【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent本篇围绕 RD-AgentRD-AgentLLM 微调Finetune场景中的datasets数据集管理模块展开讲解它如何通过prepare/prepare_all完成 HuggingFace 数据集仓库的完整下载、如何以DatasetConfig注册表驱动可选的下载后处理删除测试集、字段归一化、训练/测试切分以及本地 README 覆盖 HF 原版 README的文档机制。读完后你可以直接复用该模块管理微调训练数据也能按同样的规范为自己的微调数据集编写配套 README。一、模块定位与设计目标rdagent/scenarios/finetune/datasets是 LLM Finetune 场景的数据供给层。它负责把 HuggingFace 上的数据集仓库完整下载到本地工作区供后续的训练与评测流程使用。模块的设计目标只有两条见 rdagent/scenarios/finetune/datasets/README.md简洁性直接下载完整的 HF 仓库repo_typedataset的snapshot_download保留原始文件结构不做二次裁剪下载可扩展性支持可选的post_download_fn钩子在每个数据集下载完成后做自定义处理如删除测试集防止数据泄漏、字段格式归一化。从源码结构看该模块被两处调用场景初始化scenario.py 中的LLMFinetuneScen直接from rdagent.scenarios.finetune.datasets import prepare_all在场景构建时准备数据集并基于本地数据目录生成 LLaMA-Factory 使用的dataset_info.json见_prepare_dataset_config方法资源兜底检查utils.py 中的ensure_ft_assets_exist在check_datasetTrue且本地目录不存在时调用prepare_dataset(dataset)触发下载。二、快速上手prepare / prepare_all 与命令行用法官方文档给出的标准用法见 READMEfrom rdagent.scenarios.finetune.datasets import prepare, prepare_all, DATASETS # 1. 查看已注册的数据集 print(DATASETS.keys()) # 2. 准备单个数据集下载到本地 path prepare(chemcot) # 下载至: file_path/datasets/chemcot/ # 3. 准备所有数据集 prepare_all()与文档示例有两点补充均来自当前仓库源码 datasets/init.py下载根目录并非写死的datasets/而是FT_RD_SETTING.file_path/datasets/name。FT_RD_SETTING定义在 rdagent/app/finetune/llm/conf.py其file_path默认值为Path.cwd() / git_ignore_folder / finetune_files可通过环境变量FT_FILE_PATH覆盖模块支持直接以脚本方式运行__main__块接受一个可选的数据集名参数——不带参数时打印可用数据集列表带参数时执行prepare(name)并打印落盘路径即等价于python -m rdagent.scenarios.finetune.datasets chemcot三、DatasetConfig 与数据集注册表每个数据集通过一个极简的配置类注册datasets/init.pydataclass class DatasetConfig: repo_id: str # HuggingFace 仓库 ID post_download_fn: Optional[Callable[[str], None]] # 下载后处理函数可选入参为下载目录注册表DATASETS是dict[str, DatasetConfig]形式。原始文档中列出的 4 个数据集如下名称仓库描述chemcotOpenMol/ChemCoTDataset化学推理 CoTpanoramaLG-AI-Research/PANORAMA专利审查基准deepscaleragentica-org/DeepScaleR-Preview-Dataset数学推理financeiqDuxiaoman-DI/FinanceIQ金融问答结合当前仓库源码核对注册表实际已扩充到6 个数据集新增了tableinstructMultilingual-Multimodal-NLP/TableInstruct与bioprobenchbowenxian/BioProBench且每个数据集的post_download_fn配置为名称repo_idpost_download_fnchemcotOpenMol/ChemCoTDatasetnormalize_rcr字段归一化panoramaLG-AI-Research/PANORAMA_remove_eval_splits删除验证/测试集deepscaleragentica-org/DeepScaleR-Preview-Dataset无financeiqDuxiaoman-DI/FinanceIQsplit_financeiq_dataset(out_dir, splittrain)原地切分训练集tableinstructMultilingual-Multimodal-NLP/TableInstruct无bioprobenchbowenxian/BioProBench无要添加新数据集只需在DATASETS字典中追加一条配置DATASETS[my-dataset] DatasetConfig( repo_idorganization/dataset-name, post_download_fnmy_cleanup_function, # 可选 )prepare会对未注册的名字抛出ValueError并列出当前可用的全部数据集名这是注册表单一事实来源的体现。四、prepare() 的执行流程源码级拆解prepare(name, forceFalse)的完整流程datasets/init.py注册校验name not in DATASETS时抛ValueError确定落盘路径out_dir FT_RD_SETTING.file_path / datasets / name幂等跳过若out_dir已存在且forceFalse直接返回路径不重复下载下载调用 download/hf.py 中的download_dataset(repo_id, out_dir, force)后处理若配置了post_download_fn以str(out_dir)为入参执行README 覆盖检查源码树中datasets/{name}/README.md是否存在存在则用shutil.copy覆盖下载目录中的README.md返回本地目录路径。底层download_dataset的关键实现使用huggingface_hub.snapshot_download参数为repo_typedataset、local_dirstr(save_path)、local_dir_use_symlinksFalse直接落盘真实文件而非软链缓存支持revision指定版本token 解析优先级为显式参数 →HF_TOKEN→HUGGINGFACE_TOKEN→HUGGING_FACE_HUB_TOKEN环境变量私有数据集按此链取第一个非空值forceTrue时先shutil.rmtree删除整个已存在目录再重新下载实现强制刷新若环境缺少huggingface_hub会抛出带安装提示的ImportErrorpip install -U huggingface_hub[cli]。五、下载后处理防泄漏与格式归一化的三个真实例子post_download_fn是该模块可扩展性的核心。当前仓库内实现了三类典型处理都值得单独剖析5.1 chemcot字段归一化normalize_rcrchemcot/init.py 中的normalize_rcr对chemcotbench-cot/rxn/rcr.json做两处原地修复把顶层gtground truth字段移入meta字典内统一元信息都放 meta的格式约定将cot_result重命名为struct_cot并剥掉外层的json ... markdown 围栏避免把 markdown 包装误当作 CoT 内容参与训练。5.2 panorama删除验证/测试集防数据泄漏_remove_eval_splitsdatasets/init.py按*validation*、*test*两个 glob 模式递归遍历下载目录命中文件则删除、命中目录则shutil.rmtree。由于 RD-Agent 的微调闭环会用大模型对训练数据生成/打磨 CoT保留官方测试集会造成训练侧可触达评测答案的泄漏风险因此直接从本地数据中移除。5.3 financeiq原地训练/测试切分financeiq/split.py 实现了从数据尾部切测试集的策略切分规则test_count min(ceil(total × test_ratio), test_limit)函数默认参数为test_ratio0.5、test_limit100测试集取每个 CSV 的尾部样本训练集取头部剩余部分split_financeiq_dataset(data_dir, split)递归处理目录内全部 CSV原地重写文件只保留对应 split 的行保留表头一个针对 FinanceIQ 的特殊 HACK路径中包含dev目录的 CSV 是用于 few-shot 的小数据集splittrain时直接删除以防泄漏splittest时保留供评测使用。注册表中 financeiq 固定传入splittrain即数据集下载完成后本地只保留训练子集。六、README 覆盖机制与编写规范这是原文档着重强调的一点下载数据集时本地 README 会覆盖 HuggingFace 原始 README。其实现就在prepare()的最后一步custom_readme Path(__file__).parent / name / README.md if custom_readme.exists(): shutil.copy(custom_readme, out_dir / README.md)即数据集下载完成后检查源码树rdagent/scenarios/finetune/datasets/{name}/README.md是否存在若存在则覆盖下载目录中的README.md。这样每个数据集落盘后就带有一份项目内维护的定制化文档与上游 HF 的 README 解耦保证团队看到的字段说明、切分策略、质量评估始终一致。对应的目录结构rdagent/scenarios/finetune/datasets/ ├── __init__.py # 主模块: prepare(), prepare_all(), DATASETS ├── README.md # 模块文档 ├── chemcot/ │ ├── __init__.py # normalize_rcr 后处理实现 │ └── README.md # ChemCoT 数据集文档会覆盖 HF 原版 ├── financeiq/ │ ├── __init__.py │ ├── split.py # 训练/测试切分实现 │ └── README.md # FinanceIQ 数据集文档会覆盖 HF 原版 ├── deepscaler/ │ └── README.md # DeepScaleR 数据集文档会覆盖 HF 原版 ├── panorama/ │ └── README.md # PANORAMA 数据集文档会覆盖 HF 原版 ├── tableinstruct/ │ └── README.md └── bioprobench/ └── README.md数据集 README 编写规范按原文档约定为每个数据集编写 README 时建议包含以下六部分其中第 4 部分 CoT 质量评估被视为最重要基础信息必需数据集名称、简要描述与论文链接、**Repository**的 HF 链接、Overview规模、来源、用途数据集规模必需Dataset Scale表格按类别/子任务列出样本数并给出 Total 行数据字段说明必需Data Fields表格逐字段给出类型与含义CoT 质量评估关键直接告诉使用者数据是否可用、该如何处理。固定给出三维表格baseline_qualitylow/medium/high/N/A、task_type、polish_difficulty并在**Baseline**段落中说明若已有 CoT需注明来源、验证方式与质量问题若无 CoT必须显式标注 NO CoT 并说明训练前必须生成Baseline 性能推荐各子任务最优模型与分数表许可证必需License段落。仓库中现成的三份示例 README 恰好覆盖了三种典型情况可作为编写参照deepscaler/README.md标杆示例——82% solution 为空、18% 过短全部样本必须重新生成探索式 CoTbaseline_quality: low、polish_difficulty: highchemcot/README.md有 CoT 但需要精化的情况约 23,223 条16 个子任务CoT 由强推理模型蒸馏并经化学博士候选人校验panorama/README.md没有 CoT 的情况baseline_quality: N/A (no CoT)明确 You MUST generate CoT。七、与 Finetune 流水线的衔接数据集落盘之后LLMFinetuneScenscenario.py在_prepare_dataset_config中读取file_path/datasets目录复用已有的dataset_info.json仅保留本地仍有对应目录的条目再基于实际数据文件生成 LLaMA-Factory 兼容的dataset_info.json配置含文件路径、列映射、统计信息与数据样例作为微调工作区的单一事实来源。也就是说datasets模块只负责把数据以正确形态放到正确目录数据元信息的生成职责在场景层——这一分工使得替换、新增数据集时不需要触碰训练配置逻辑。八、注意事项Token私有数据集需要设置HF_TOKEN或HUGGINGFACE_TOKEN/HUGGING_FACE_HUB_TOKEN环境变量解析优先级见 download/hf.py缓存HuggingFace hub 会自动缓存下载内容模块层面则通过目录已存在即跳过实现幂等强制刷新使用prepare(name, forceTrue)会先删除本地目录再重新下载README 优先级本地 README 始终覆盖 HuggingFace 原版修改数据集文档应改源码树中datasets/{name}/README.md改下载目录里的副本会在下次强制刷新后失效后处理是原地操作如 financeiq 的切分与 chemcot 的归一化都会直接改写下载目录中的文件重新下载即恢复原始形态。适用前提该模块属于 RD-Agent 的 LLM Finetune 场景rdagent/scenarios/finetune运行需安装huggingface_hub数据默认落在FT_FILE_PATH默认./git_ignore_folder/finetune_files下的datasets/子目录数据规模与字段说明请以各数据集子目录 README 及上游 HuggingFace 仓库为准。【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表