ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Agent Platform 微调 Hugging Face 数据集参考指南:加载、选列与列映射实践

Agent Platform 微调 Hugging Face 数据集参考指南:加载、选列与列映射实践 Agent Platform 微调 Hugging Face 数据集参考指南加载、选列与列映射实践【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills导读在 Agent Platform 模型微调Model Tuning流程中训练数据是最关键的输入之一。本指南以 hf_datasets.md 为骨架系统讲解如何从 Hugging Face 加载数据集、确认数据集与 split、进行源列到微调目标格式prompt/completion或messages的映射并结合本仓库的prepare_dataset.py、tune_open_model.py、calculate_cost.py等脚本给出从数据集发现、清洗转换到 JSONL 上传 GCS 的完整实战路径。读完本文你将掌握面向不同任务数学推理、指令跟随、多语言、编程、工具调用挑选数据集、正确映射列并顺利提交微调任务的完整能力。一、为什么微调前要先分析 Hugging Face 数据集Agent Platform 微调服务要求训练数据为JSONL 格式并存放于 Google Cloud StorageGCS而 Hugging Face 上绝大多数数据集都以原始列结构如problem、solution、answer存在无法直接用于微调。因此在使用某个数据集之前必须理解数据集结构明确数据集包含哪些列、每个 split 的样本量、内容是否贴合用户的任务确认 split 与样本向用户展示可用的 splits 并让其确认同时预览若干样本完成列映射将源列映射到微调入口所需的目标格式——prompt用户消息与completion助手回复或messages格式。该流程与 SKILL.md 中 Phase 1.0 Dataset Discovery Confirmation 的要求一一对应Agent 在准备数据集前必须向用户展示可用列、推荐列映射并取得确认未确认前不得进行数据准备或上传。数据准备的详细格式规范见 Data Preparation Guide。二、数据集加载与分片操作2.1 加载整个数据集使用 Hugging Face 的datasets库一条命令即可拉取完整数据集from datasets import load_dataset dataset load_dataset(username/dataset_name)2.2 加载指定 split如需指定某个 split如default、train、test传入split参数from datasets import load_dataset dataset load_dataset(username/dataset_name, splitsplit_name)2.3 大数据集的分片子集策略对于体量很大的数据集例如HuggingFaceTB/smoltalk2这类覆盖极广的数据集建议优先使用 Hugging Face 页面中已定义好的 splits如default或主动为用户划分数据子集只保留任务所需的部分在继续之前务必让用户看到数据集的部分示例避免盲目全量处理。从本仓库的 prepare_dataset.py 源码可以看到转换脚本内部也是通过datasets.load_dataset(csv/json/parquet, data_files..., splittrain)加载本地文件再用dataset.filter()过滤空值、dataset.map()重排字段、train_test_split(seed42, test_sizevalidation_split)划分验证集最后以to_json(..., linesTrue)写出 JSONL。也就是说Hugging Face 数据集最终也要落成本地 CSV/JSON/Parquet 或 JSONL 后才能被微调脚本消费。三、强制确认流程split 确认与列选择[!IMPORTANT]关键先确认再继续。在执行数据集准备或上传之前必须先完成以下两步并获得用户确认数据集与 Split 确认向用户展示数据集及其可用的 splits请其确认使用哪个同时展示少量样本供预览。列选择Column Selection微调入口要求将源列映射到目标格式prompt/completion或messages。你必须列出所选 split 中所有可用列推荐哪些列应映射为prompt或 user 消息、哪些映射为completion或 assistant 响应必要时提供多个合理选项请用户确认列映射或由其指定要使用的列。该确认机制在源码层面同样得到强化prepare_dataset.py 在转换前会校验--prompt_col与--completion_col是否真实存在于数据集中若列名错误会打印可用列列表并直接退出sys.exit(1)。因此列名必须来自真实数据不能臆造。四、数据集清单与任务选型下文各数据集按任务类型分组每个数据集都附有类型说明与使用提示。提示并非唯一用法而是基于数据集本身特征给出的建议同时应仔细阅读提示中关于数据内容的重要信息因为它们可能与用户需求直接相关。4.1 通用与推理类任务数学推理Mathematical Reasoning名称描述样本数Split使用提示open-r1/OpenR1-Math-220k数学问题与解答数据集93,700default- 220,000full主要列为problem和solution其他有用的列包括answer、problem_type、question_type和messagesAI-MO/NuminaMath-TIR提升模型在复杂逻辑与计算上的表现N/A数学推理的上佳选择数学推理类任务在模型选型上可参考 models.md 的指引Qwen 系列最擅长代码生成与复杂数学任务因此qwen/qwen3qwen3-8b、qwen/qwen3-14b等模型是这类数据集的理想搭配模型资源名必须以{publisher}/{model_id}{version_id}格式原样复制例如qwen/qwen3-14b对应资源名qwen/qwen3qwen3-14b。指令跟随Instruction Following名称描述样本数Split使用提示argilla/ifeval-like-data涉及指令跟随能力的数据集550,000default56,000filtered数据集中包含多种语言当用户对语言有特定要求时向用户推荐该数据集并按需过滤HuggingFaceTB/smoltalk2增强广泛的指令跟随能力N/A需要子集化处理因为初始数据集非常大且覆盖任务范围广多语言支持Multilingual Support名称描述样本数Split使用提示CohereForAI/aya_dataset扩展跨语言的模型能力N/A包含多语言指令跟随数据从 models.md 的选型指引可知Gemma 系列针对聊天交互、创意写作与多语言任务做了优化因此多语言数据集的推荐模型可优先考虑 Gemma 家族如google/gemma3gemma-3-4b-it。4.2 专业与技术类任务编程与代码Programming Coding名称描述样本数Split使用提示ise-uiuc/Magicoder-Evol-Instruct-110K代码生成数据集110,000适合提升编程能力open-r1/datasets专业化编程与推理数据N/A开放推理技术数据的通用来源工具使用与集成Tool Use Integration名称描述样本数Split使用提示gorilla-llm/Berkeley-Function-Calling-Leaderboard遵循约束并使用外部系统N/A高质量工具使用与函数调用数据Bingguang/HardGen评估复杂工具与约束的处理N/A已验证适用于工具使用集成任务编程与深度推理类任务按 models.md 的复杂度启发式应选择 8B-70B 规模模型工具使用等复杂多轮任务则建议 27B-70B 模型例如meta/llama3-3llama-3.3-70b-instruct或qwen/qwen3qwen3-32b。五、从 Hugging Face 数据集到可微调 JSONL 的完整链路5.1 转换CSV/JSON/Parquet → JSONL选定数据集与列映射后使用 prepare_dataset.py 将数据转换为微调所需格式python3 scripts/prepare_dataset.py \ --input my_data.csv \ --output tuning_dataset.jsonl \ --format messages \ --prompt_col problem \ --completion_col solution \ --validation_split 0.1参数说明与脚本argparse定义一一对应见 prepare_dataset.py参数必填说明--input是转换模式输入 CSV、JSON、Parquet 或 JSONL 文件--output否输出 JSONL 文件默认tuning_dataset.jsonl--format否目标格式messages默认或prompt开放模型用messagesGemini 模型用messages_gemini--prompt_col是转换模式源数据中 prompt/user 消息所在的列名--completion_col是转换模式源数据中 completion/assistant 响应所在的列名--validation_split否验证集划分比例默认0.1不要超过 0.1原因见下文--validate_only否仅校验既有 JSONL 文件不做转换两种目标格式的结构详见 data_prep.mdConversationalmessages格式——推荐用于聊天类模型{ messages: [ {role: system, content: You are a helpful assistant.}, {role: user, content: What is the capital of France?}, {role: assistant, content: The capital of France is Paris.} ] }Instructionprompt/completion格式——适合基座模型或简单补全任务{ prompt: Summarize the following text: [TEXT], completion: [SUMMARY] }源码中 _format_row 正是把prompt_col/completion_col两列组装为上述两种结构messages模式生成user/assistant两条消息prompt模式直接输出prompt/completion键值对。5.2 数据清洗的源码级实现转换过程中脚本会自动执行以下清洗见 prepare_dataset.py删除 prompt 或 completion 为空的记录删除值为nan或none的记录大小写不敏感、去除首尾空白后比较清洗前后会打印丢弃行数便于追踪数据质量。5.3 验证 split 的字节上限约束微调服务对验证集有严格限制验证文件不得超过训练文件大小按字节计的 25%且不超过 5000 行。由于上限按字节而非行数衡量80/20 划分恰好压线只要留出的验证行略长于平均就会超限实测超限区间为 25.03%-26.45%因此 data_prep.md 与脚本明确要求使用--validation_split 0.1此时验证文件约占训练文件的 11%。prepare_dataset.py 中的validation_ratio_error()会在上传前实测两个输出文件的字节数并提前拦截让超限问题在提交微调任务之前就被发现避免任务被服务端拒绝造成浪费。5.4 上传到 GCS格式验证通过后将 JSONL 上传到用户确认的 GCS bucket建议使用带时间戳的唯一目录避免不同运行相互覆盖ARTIFACTSgs://YOUR_BUCKET/tuning_agent_job_datetime/dataset.jsonl gcloud storage cp dataset.jsonl $ARTIFACTS注意绝不臆造 bucket 名称也绝不在未经确认的情况下创建 bucket。若用户未指定 bucket必须停下询问新建 bucket 建议使用多区域位置US若数据必须留在欧洲则用EU因为开放模型默认在global位置微调服务可能落在任意具备 GPU 容量的区域。5.5 基于数据集规模的微调参数建议选定数据集后可依据 tuning_guide.md 的数据集规模启发式调整超参数数据集规模推荐微调模式学习率调整推荐 Epochs 100 条PEFT_ADAPTERRank 8低于基线1-2100 - 1000 条PEFT_ADAPTERRank 16/32基线3 1000 条FULL 或 PEFT_ADAPTERRank 32高于基线3-5各模型的基线超参数tuning mode、learning rate、epochs、adapter size与--base_model资源名详见 models.md。注意FULL模式更新全部参数需要更多 GPU 显存与更大数据集PEFT_ADAPTER只训练少量 adapter 权重更快、更省显存且小数据集下不易过拟合。5.6 成本估算提交任务前可先用 calculate_cost.py 估算开放模型微调成本python3 scripts/calculate_cost.py \ --input tuning_dataset.jsonl \ --model qwen/qwen3qwen3-8b \ --tuning_mode Full \ --epochs 3--model接受显示名如Qwen 3 8B或与--base_model相同的资源名如qwen/qwen3qwen3-8b脚本内部通过_build_aliases()建立别名映射后统一解析见 calculate_cost.py。成本估算公式为预估成本 数据集字符数 × tokens_per_character × epochs ÷ 1,000,000 × cost_per_1m_tokens其中tokens_per_character是按微调模式实测的经验比率PEFT 与 Full 使用不同训练容器同一数据集在不同模式下的计费 token 数不同cost_per_1m_tokens对应公开的 Model Tuning 价格表。需要注意的是qwen/qwen3-5qwen3.5-9b等条目已收录于目录但尚无公开定价脚本会明确报错说明。估算结果仅为预估值实际账单可能不同。5.7 提交微调任务开放模型微调任务通过 tune_open_model.py 提交python3 scripts/tune_open_model.py \ --project YOUR_PROJECT \ --location global \ --base_model qwen/qwen3qwen3-8b \ --train_dataset gs://YOUR_BUCKET/tuning_agent_job_datetime/dataset.jsonl \ --output_uri gs://YOUR_BUCKET/tuning_agent_job_datetime/output \ --epochs 3 \ --learning_rate 5e-5 \ --tuning_mode Full提交前注意--base_model必须使用{publisher}/{model_id}{version_id}资源名可从 models.md 基线超参表 Resource name 列原样复制{version_id}后缀必不可少——省略后缀是最常见的INVALID_ARGUMENT: Invalid open source publisher model resource name报错原因--output_uri对开放模型是必填的。虽然 Python SDK 将其声明为Optional[str] None但后端会以INVALID_ARGUMENT: The output_uri field is required for this model.拒绝缺省任务脚本中也将其设为requiredTrue见 tune_open_model.py提交前建议先运行scripts/list_models.py --project YOUR_PROJECT --filter gemini从输出中挑选真实的模型 ID不要臆造 ID 或版本号任务提交与后续部署均属 Tier M 变更操作必须先向用户展示完整命令字符串并取得确认。六、结语Hugging Face 数据集是 Agent Platform 微调流程中最常见的训练数据来源但其原始列结构无法直接被微调服务消费。本指南基于 hf_datasets.md 梳理了从数据集加载、split 确认、列映射到 JSONL 转换、GCS 上传、成本估算与任务提交的完整链路并给出了数学推理、指令跟随、多语言、编程、工具调用五类任务的精选数据集清单。读者可继续结合 Data Preparation Guide、Models Catalog 与 Tuning Guide以及仓库中的prepare_dataset.py、calculate_cost.py、tune_open_model.py、list_models.py、monitor_tuning_job.py脚本完成一次从数据到微调模型的端到端实践。【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表