WeClone数据目录组织:res_csv分区管理PT和SFT数据

WeClone数据目录组织:res_csv分区管理PT和SFT数据

【免费下载链接】WeClone 欢迎star⭐。使用微信聊天记录微调大语言模型,并绑定到微信机器人,实现自己的数字克隆。 数字克隆/数字分身/LLM/大语言模型/微信聊天机器人/LoRA 【免费下载链接】WeClone 项目地址: https://gitcode.com/GitHub_Trending/we/WeClone

痛点:大语言模型微调数据管理的复杂性

在大语言模型(LLM)微调过程中,数据管理往往是最容易被忽视但至关重要的环节。传统的数据组织方式常常导致:

  • 数据混淆:PT(Pre-training)和SFT(Supervised Fine-tuning)数据混杂,难以区分
  • 配置混乱:不同训练阶段需要不同的数据格式和字段映射
  • 维护困难:随着数据量增长,缺乏清晰的结构会增加维护成本
  • 复用性差:一次性数据处理难以支持多轮实验和迭代优化

WeClone项目通过res_csv目录的精巧设计,完美解决了这些痛点,为LLM微调提供了专业级的数据管理方案。

res_csv目录结构解析

WeClone的数据目录采用清晰的分层结构,专门针对PT和SFT两个关键训练阶段进行优化:

mermaid

PT(预训练)数据分区

PT阶段专注于语言模型的通用语言理解能力训练,数据格式相对简单:

文件结构:

data/res_csv/pt/
├── dataset_info.json    # 数据配置元数据
└── pt-my.json          # PT训练数据集

dataset_info.json配置详解:

{
    "wechat-pt": {
        "file_name": "./pt-my.json",
        "columns": {
            "prompt": "c"
        }
    }
}
配置项说明技术含义
wechat-pt数据集标识符在训练配置中引用的唯一名称
file_name数据文件路径相对于dataset_dir的相对路径
columns.prompt字段映射将数据中的'c'字段映射为'prompt'

SFT(监督微调)数据分区

SFT阶段专注于对话能力和指令遵循训练,支持多种数据格式:

文件结构:

data/res_csv/sft/
├── dataset_info.json           # 基础SFT配置
├── dataset_info-with-his.json  # 带历史记录的配置
└── sft-my.json                # SFT训练数据集

基础SFT配置(dataset_info.json):

{
    "wechat-sft": {
        "file_name": "./sft-my.json",
        "columns": {
            "prompt": "instruction",
            "response": "output"
        }
    }
}

带历史记录的SFT配置(dataset_info-with-his.json):

{
    "wechat-sft": {
        "file_name": "./sft-my.json",
        "columns": {
            "prompt": "instruction",
            "response": "output",
            "history": "history"
        }
    }
}

配置参数与数据目录的关联

settings.json中,训练配置与数据目录紧密关联:

{
    "train_pt_args": {
        "stage": "pt",
        "dataset": "wechat-pt",
        "dataset_dir": "./data/res_csv/pt"
    },
    "train_sft_args": {
        "stage": "sft", 
        "dataset": "wechat-sft",
        "dataset_dir": "./data/res_csv/sft"
    }
}

训练阶段与数据目录对应关系

训练阶段数据集标识数据目录主要用途
PTwechat-pt./data/res_csv/pt语言模型预训练
SFTwechat-sft./data/res_csv/sft指令微调训练

数据格式规范与最佳实践

PT数据格式要求

PT数据采用单文本字段格式,专注于语言建模:

{
    "c": "这是一段PT训练的文本内容,用于语言模型预训练..."
}

SFT数据格式要求

SFT数据支持多种格式,适应不同训练需求:

基础格式(指令-回复对):

{
    "instruction": "你好,请问今天天气怎么样?",
    "output": "今天天气晴朗,气温25度,适合外出活动。"
}

带历史记录的格式:

{
    "instruction": "继续刚才的话题",
    "output": "好的,我们刚才在讨论周末计划",
    "history": [
        ["你周末有什么计划?", "我打算去爬山"],
        ["爬山是个好主意,去哪里呢?", "去附近的香山"]
    ]
}

实战:自定义数据目录配置

1. 创建新的数据分区

如果需要添加新的数据集,可以按照以下步骤:

# 创建新的数据目录
mkdir -p data/res_csv/custom_dataset

# 创建配置文件
cat > data/res_csv/custom_dataset/dataset_info.json << 'EOF'
{
    "custom-dataset": {
        "file_name": "./custom-data.json",
        "columns": {
            "prompt": "question",
            "response": "answer",
            "history": "context"
        }
    }
}
EOF

2. 修改训练配置

settings.json中更新配置:

{
    "train_sft_args": {
        "dataset": "custom-dataset",
        "dataset_dir": "./data/res_csv/custom_dataset"
    }
}

数据管理的最佳实践

版本控制策略

mermaid

质量监控指标

指标类型PT数据SFT数据监控频率
数据量≥10K条≥5K条每次更新
平均长度50-500字符20-200字符每周
质量评分≥0.8≥0.9每月
重复率≤5%≤3%每次更新

常见问题与解决方案

Q1: 如何切换不同的数据集配置?

A: 只需修改settings.json中的datasetdataset_dir参数,系统会自动加载对应的数据配置。

Q2: 支持多数据集混合训练吗?

A: 当前版本支持单数据集训练,但可以通过创建合并的数据目录来实现多数据集训练。

Q3: 数据格式验证失败怎么办?

A: 检查dataset_info.json中的字段映射是否正确,确保数据文件中的字段名称与配置一致。

总结与展望

WeClone的res_csv数据目录设计体现了几大核心优势:

  1. 清晰的职责分离:PT和SFT数据严格分区,避免混淆
  2. 灵活的配置管理:通过dataset_info.json实现数据格式的抽象和映射
  3. 易于扩展:支持自定义数据集和配置,适应不同训练需求
  4. 版本友好:目录结构便于数据版本管理和实验追踪

这种数据管理方案不仅适用于微调,同样可以推广到其他领域的LLM微调项目中,为大规模语言模型训练提供可靠的数据基础设施支撑。

通过合理的数据目录组织和配置管理,WeClone让LLM微调的数据准备工作变得简单、规范且高效,大大降低了模型训练的技术门槛和维护成本。

【免费下载链接】WeClone 欢迎star⭐。使用微信聊天记录微调大语言模型,并绑定到微信机器人,实现自己的数字克隆。 数字克隆/数字分身/LLM/大语言模型/微信聊天机器人/LoRA 【免费下载链接】WeClone 项目地址: https://gitcode.com/GitHub_Trending/we/WeClone

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

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

抵扣说明:

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

余额充值