GitHub_Trending/ll/llm-action:LLM微调数据准备指南

GitHub_Trending/ll/llm-action:LLM微调数据准备指南

【免费下载链接】llm-action 本项目旨在分享大模型相关技术原理以及实战经验。 【免费下载链接】llm-action 项目地址: https://gitcode.com/GitHub_Trending/ll/llm-action

大语言模型(LLM)微调是提升模型特定任务表现的关键步骤,而高质量的数据准备直接决定微调效果。本文将从数据来源、格式规范、处理工具三个维度,结合项目实战资源,提供一套完整的LLM微调数据准备方案。

数据来源:从原始语料到任务数据

预训练语料参考

业界主流大模型的训练数据规模与构成对微调数据准备具有重要参考价值:

微调数据获取

项目中提供了多语言和领域数据集参考:

数据格式规范:模型适配指南

不同模型架构要求特定的数据格式,以下是主流模型的格式规范及示例:

Alpaca格式(单轮对话)

适用于基础模型的指令微调,包含instructioninputoutput三要素:

{
  "instruction": "Give three tips for staying healthy.",
  "input": "",
  "output": "1. Eat a balanced diet..."
}

llm-data-engineering/sft-dataset/数据集格式.md

ChatGLM3格式(多轮对话+工具调用)

支持系统提示、多轮交互及工具调用能力,格式示例:

{
  "conversations": [
    {"role": "system", "content": "You are ChatGLM3..."},
    {"role": "user", "content": "Hello"},
    {"role": "assistant", "content": "Hello, I'm ChatGLM3..."}
  ]
}

工具调用扩展格式:

{
  "tools": [...],
  "conversations": [
    {"role": "user", "content": "Extract info..."},
    {"role": "assistant", "content": "<|startofthink|>...<|endofthink|>"}
  ]
}

llm-data-engineering/sft-dataset/数据集格式.md

Baichuan2格式(多轮对话)

使用conversations数组,通过from字段区分角色:

{
  "id": "77771",
  "conversations": [
    {"from": "human", "value": "写一篇关于气候变化的文章"},
    {"from": "gpt", "value": "好的,以下是你要求的文章..."}
  ]
}

llm-data-engineering/sft-dataset/数据集格式.md

Qwen1.5格式(ChatML标准)

采用标准化对话模板,支持系统提示和多轮交互:

{
  "type": "chatml",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Tell me about LLMs"},
    {"role": "assistant", "content": "Large language models are..."}
  ]
}

llm-data-engineering/sft-dataset/数据集格式.md

数据处理工具:从模板到代码实现

Jinja2模板引擎

项目提供Jinja2模板工具,用于批量转换数据格式:

模板渲染示例:

from jinja2 import Template

chat_template = """{% for m in messages %}
<|im_start|>{{m.role}}
{{m.content}}<|im_end|>
{% endfor %}"""

template = Template(chat_template)
rendered = template.render(messages=chat_history)

llm-data-engineering/sft-dataset/jinja-llm.py

模型专用处理脚本

针对特定模型的数据预处理代码:

预处理核心逻辑示例(Baichuan2):

def preprocessing(example):
    input_ids = []
    labels = []
    for message in example["conversations"]:
        if message["from"] == "human":
            input_ids += user_tokens + value_ids
            labels += [eos_token_id] + [ignore_index] * len(value_ids)
        else:
            input_ids += assistant_tokens + value_ids
            labels += [ignore_index] + value_ids
    return {"input_ids": input_ids, "labels": labels}

llm-data-engineering/sft-dataset/数据集格式.md

质量控制:数据清洗与优化建议

  1. 去重处理:使用哈希算法去除重复样本,推荐保留最新版本
  2. 长度过滤:单轮对话控制在512-2048 token,避免上下文溢出
  3. 格式校验:使用项目中的验证脚本检查JSON结构和字段完整性
  4. 领域适配:针对垂直领域,参考llm-data-engineering/sft-dataset/数据格式设计.md进行定制化设计

总结与工具链参考

微调数据准备流程:

  1. 确定模型架构 → 2. 选择对应格式 → 3. 采集/生成数据 → 4. 应用模板转换 → 5. 质量校验

项目中相关资源汇总:

通过本文档提供的规范和工具,可高效完成从原始数据到模型可用微调数据的全流程处理,为后续模型训练奠定基础。

【免费下载链接】llm-action 本项目旨在分享大模型相关技术原理以及实战经验。 【免费下载链接】llm-action 项目地址: https://gitcode.com/GitHub_Trending/ll/llm-action

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值