ARTICLE DETAIL

资讯详情

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

data-juicer generate_qa_from_examples_mapper:基于种子示例与 LLM 批量生成高质量 QA 对

data-juicer generate_qa_from_examples_mapper:基于种子示例与 LLM 批量生成高质量 QA 对 人工智能大模型数据工程数据清洗数据增强数据质检【免费下载链接】data-juicerData processing for and with foundation models! ➡️ ➡️ 项目地址https://gitcode.com/gh_mirrors/da/data-juicer点击查看免费下载本文围绕>DEFAULT_SYSTEM_PROMPT ( 请你仔细观察多个示例数据的输入和输出按照你的理解总结出相应规矩然后写出一个新的【问题】和【回答】。 注意新生成的【问题】和【回答】需要满足如下要求\n 1. 生成的【问题】和【回答】不能与输入的【问题】和【回答】一致但是需要保持格式相同。\n 2. 生成的【问题】不一定要局限于输入【问题】的话题或领域生成的【回答】需要正确回答生成的【问题】。\n 3. 提供的【问题】和【回答】可能是多轮对话生成的【问题】和【回答】也可以是多轮但是需要保持格式相同。\n 4. 生成的【问题】和【回答】必须成对出现而且【问题】需要在【回答】之前。\n ) DEFAULT_INPUT_TEMPLATE {} DEFAULT_EXAMPLE_TEMPLATE \n如下是一条示例数据\n{} DEFAULT_QA_PAIR_TEMPLATE 【问题】\n{}\n【回答】\n{}\n DEFAULT_OUTPUT_PATTERN r【问题】(.*?)【回答】(.*?)(?【问题】|$)input_template只有一个{}占位默认就是原样输出example_template用“如下是一条示例数据”包装每条示例qa_pair_template用【问题】/【回答】标记格式约束模型输出output_pattern是与上述格式配套的正则使用非贪婪匹配与(?【问题】|$)前瞻可一次性抽取多轮 QA 对且parse_output会对抽取结果做strip()清洗generate_qa_from_examples_mapper.py。定制建议只要保持qa_pair_template与output_pattern的标记符号一致就可以把【问题】/【回答】换成任意自定义标记但三个 template 的占位符个数必须严格遵守input/example 各 1 个、qa_pair 2 个否则.format()会因占位符不匹配而报错。种子文件格式与示例种子文件要求为chatml 格式即每行一个 JSON 对象、包含messages数组角色取值为system/user/assistant。解析逻辑_parse_chatml_str按顺序把user消息与紧随其后的assistant消息配对成(问题, 回答)system消息会被跳过generate_qa_from_examples_mapper.py。仓库自带示例种子文件 demos/data/demo-dataset-chatml.jsonl前两条内容如下{messages: [{role: system, content: You are a helpful assistant}, {role: user, content: 谁在文艺复兴时期绘制人体?}, {role: assistant, content: 文艺复兴时期是一个关于艺术、文化和学术的复兴运动在这个时期许多艺术家都绘制了人体。},{role: user, content: 那雕塑方面如何呢}, {role: assistant, content: 文艺复兴时期的雕塑也非常有名几位世界级的雕塑大师都出自于这个时期。}]} {messages:[{content:You are a helpful assistant,role:system},{content:什么时期的音乐家开始广泛使用交响乐团,role:user},{content:浪漫主义时期音乐家们开始广泛使用和扩展交响乐团创作出规模宏大、情感丰富的交响乐作品。,role:assistant}]}第一条即典型的多轮对话种子两条 user/assistant 配对会被解析成两个(问题, 回答)元组生成结果可继承为多轮history。种子文件行数越多、主题越多样random.sample抽样的多样性就越好生成样本的雷同率也会随之降低。完整 YAML 配置示例结合算子参数与># 生成 QA 样本配合空数据集使用 process: - generate_qa_from_examples_mapper: hf_model: Qwen/Qwen2.5-7B-Instruct seed_file: ./demos/data/demo-dataset-chatml.jsonl # chatml 格式种子文件必填 example_num: 3 # 每次随机抽取的种子示例数须 0 similarity_threshold: 0.7 # ROUGE-L 相似度阈值0~1低于等于则保留 enable_vllm: false # 是否启用 vLLM 加速 sampling_params: temperature: 0.9 # 采样温度越高越多样 top_p: 0.95 max_new_tokens: 512 # HF 模式长度上限vLLM 模式下对应 max_tokens # 以下模板可不填使用内置默认值自定义时需注意占位符个数 # system_prompt: ... # qa_pair_template: 【问题】\n{}\n【回答】\n{}\n # output_pattern: 【问题】(.*?)【回答】(.*?)(?【问题】|$)配套的空数据集该算子生成数量由“空数据集长度”决定这一机制由 data_juicer/format/empty_formatter.py 中的EmptyFormatter提供——它接受length与feature_keys构造出一个指定行数、指定字段名、值为None的空NestedDataset。因此在编排流程时需要先以empty_formatter声明你希望生成的样本条数如length: 3再在其后接入本算子进行填充。相似度过滤的底层实现过滤环节使用的指标是ROUGE-L 的 F1 分数。_max_rouge_l_score的实现要点如下generate_qa_from_examples_mapper.py新生成的 QA 对与本次随机抽中的每条种子示例分别计算 ROUGE-L F1取最大值作为该样本的相似度得分计算前先经_sample_to_str将多轮 QA 对拼成多行文本再比较similarity_type目前固定为rouge_l其他取值会直接抛出NotImplementedError风格的ValueError见process_single中else分支。含义是只要新样本与任意一条种子示例足够像超过similarity_threshold就会被判定为“翻新失败”而过滤只有当新样本对所有种子示例都足够“陌生”时才保留。这一步从机制上保证了生成数据的多样性与增量价值。推理后端Hugging Face 与 vLLMHugging Face 后端默认初始化时prepare_model(model_typehuggingface, ..., return_pipeTrue)加载为 text-generation pipeline推理时model(messages, return_full_textFalse, **self.sampling_params)从generated_text取新生成文本不返回 prompt 原文。vLLM 后端enable_vllm: trueprepare_model(model_typevllm, ...)加载 vLLM 模型使用vllm.SamplingParams(**sampling_params)通过model.chat(messages, self.sampling_params)调用并取outputs[0].text。Ray 模式限制开启 vLLM 且不在 Ray 模式下时源码强制self.num_proc 1generate_qa_from_examples_mapper.py因为多进程无法在不同 GPU 上分别初始化 vLLM 副本如果要在 Ray 集群上分布式执行需配合>赞分享人工智能大模型数据工程数据清洗数据增强数据质检【免费下载链接】data-juicerData processing for and with foundation models! ➡️ ➡️ 项目地址https://gitcode.com/gh_mirrors/da/data-juicer点击查看免费下载相关推荐Data-Juicer word_repetition_filter 算子详解基于词级 n-gram 重复率的文本质量过滤Data Juicer word_repetition_filter 算子详解基于词级 n gram 重复率的文本质量过滤 导读 word_repetitio人工智能大模型数据工程数据清洗数据增强数据质检Data-Juicer 音频质量过滤实战AudioNMFSNRFilter 与基于 NMF 的信噪比SNR筛选Data Juicer 音频质量过滤实战AudioNMFSNRFilter 与基于 NMF 的信噪比SNR筛选 导读 在构建语音识别ASR、文本转语音人工智能大模型数据工程数据清洗数据增强数据质检>data juicer快速上手指南30分钟构建高质量LLM训练数据集 为什么需要数据清洗LLM训练的隐藏痛点 你是否遇到过这些问题训练的大语言模型Lar人工智能大模型数据工程数据清洗数据增强数据质检上一篇如何高效使用CodeQL提升代码安全性的专业静态分析工具指南下一篇ggshield安装全攻略从新手到专家的完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表