郭震 AI公众号:郭震AI

7 大模型 LLM 微调教程系列:数据集准备之数据收集与清洗

发布日期:

最近更新:

分类: 大模型微调

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点10 个
图文要点6 张
正文规模1.7k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 10 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文索引

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

6 张图 · 可跳转
数据收集清洗决定上限流程图查看大图
数据收集清洗决定上限流程图

微调不是把所有文本塞进训练集。数据来源、授权范围、重复比例、敏感信息、标签口径都会直接影响模型行为和上线风险。

数据收集清洗决定上限核对图查看大图
数据收集清洗决定上限核对图

清洗时保留一张问题样本表:重复、乱码、越权、敏感、标签冲突。每类都留例子,后面复盘才有证据。

在本篇教程中,我们将聚焦于数据集准备的重要环节——数据收集与清洗。这一阶段的工作直接影响微调效果,因此需要认真对待。在前一篇中,我们讨论了相关库与工具的准备工作。现在,让我们深入探讨如何有效收集和清洗数据,以确保我们的 LLM 微调工作顺利开展。

数据收集

1. 确定数据来源

微调数据收集清洗判断卡查看大图
微调数据收集清洗判断卡

准备微调数据集时,先确认数据来源、样本格式、重复内容、标签质量、训练验证拆分和隐私风险。

在进行数据收集之前,首先要明确数据的需求。这意味着:

  • 任务定义:明确你希望 LLm 执行的具体任务是什么,例如文本生成、分类、问答等。
  • 数据形式:根据任务确定所需数据的形式,可能是文本、对话、图像描述等。

示例

假设我们要微调一个语言模型,使其更好地生成诗歌。我们可能需要从以下来源收集数据:

  • 公共数据集:如 Kaggle、UCI Machine Learning Repository 等提供的现成数据集。
  • 网络抓取:通过爬虫技术抓取相关网站的内容。
  • 社交媒体:从 Twitter、Reddit 等平台收集用户生成的内容。

2. 数据抓取工具

在获取数据时,有几种常见的工具可以使用:

  • Beautiful Soup 和 Requests:用于抓取网页内容。
  • Scrapy:一个强大的抓取框架,适合大规模数据收集。
  • API 接口:许多网站(如 Twitter)提供 API 供用户获取数据。

代码示例

以下是一个使用 Beautiful Soup 抓取诗歌网站数据的简单例子:

import requests
from bs4 import BeautifulSoup

url = 'https://example.com/poems'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

poems = soup.find_all(class_='poem-content')
poem_list = [poem.get_text() for poem in poems]

3. 数据存储

在抓取数据后,需要考虑如何存储。常见的数据存储方式包括:

  • CSV 文件:适于小规模数据,便于读取和写入。
  • 数据库:如 MySQL、MongoDB,用于处理大规模数据。
  • JSON 文件:适用于结构化数据,易于分享和存储。

数据清洗

数据清洗是确保数据质量的关键步骤。原始数据可能包含很多噪声信息,我们需要对其进行处理。

大模型微调阅读地图卡查看大图
大模型微调阅读地图卡

学《大模型 LLM 微调教程系列:数据集准备之数据收集与清洗》时,可以先找一个自己能复现的小场景,再看相关概念和练习步骤,读完后用自己的例子复述一遍。

1. 去除冗余

  • 重复数据:检查数据集中是否存在重复的条目。
  • 无效数据:删除无法解析或显然无意义的内容。

数据去重代码示例

以下代码示例展示了如何使用 Pandas 去除重复数据:

import pandas as pd

# 假设数据已经存储在 CSV 文件中
data = pd.read_csv('poems.csv')
cleaned_data = data.drop_duplicates()

2. 数据规范化

规范化是指将数据转换为一致的格式。常见的处理方式有:

  • 文本清理:去除多余的空格、特殊字符,转换为统一的格式(如小写)。
  • 长度过滤:根据业务需求过滤掉过短或过长的样本。
def clean_text(text):
    text = text.strip()  # 去除前后的空格
    text = text.lower()  # 转为小写
    return text

cleaned_poem_list = [clean_text(poem) for poem in poem_list if 10 < len(poem) < 300]

3. 标注与分类

在某些情况下,你可能需要对数据进行标注或分类,以便于后续使用。例如,情感分类任务需要将文本标注为“积极”、“消极”或“中性”。

4. 数据抽样与分割

为了验证模型的效果,通常需要将数据集分为训练集、验证集和测试集。常规的分割比例为 80/10/10 或 70/15/15。

from sklearn.model_selection import train_test_split

train_data, test_data = train_test_split(cleaned_poem_list, test_size=0.2, random_state=42)
大模型 LLM 微调教程系列:数据集准备之数据收集与清洗应用复盘卡查看大图
大模型 LLM 微调教程系列:数据集准备之数据收集与清洗应用复盘卡

如果《大模型 LLM 微调教程系列:数据集准备之数据收集与清洗》还没完全消化,可以从这张卡片的四个动作重新走一遍。

大模型 LLM 微调教程系列:数据集准备之数据收集与清洗应用检查卡查看大图
大模型 LLM 微调教程系列:数据集准备之数据收集与清洗应用检查卡

回看《大模型 LLM 微调教程系列:数据集准备之数据收集与清洗》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。

小结

在本篇中,我们详细介绍了数据收集与清洗的过程,从确定数据来源到选择合适的工具,再到数据的规范化和标注。数据的质量直接决定你微调后的模型性能,因此请在这一阶段投入足够的精力。

在下一篇教程中,我们将讨论如何对收集到的数据进行格式化,以便于 LLM 的微调过程。在此之前,请确保你已经完成了数据收集与清洗的所有步骤。

继续阅读

顺着这个系列继续看

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...