AIUnlimited
🌳

AI基础

🌱
AI 种子

从零开始

🌿
AI 萌芽

打好基础

🌳
AI 枝干

付诸实践

🏕️
AI 树冠

深入探索

🌲
AI 森林

精通AI

🔨

AI精通

✏️
AI 草图

从零开始

🪨
AI 雕刻

打好基础

⚒️
AI 匠心

付诸实践

💎
AI 打磨

深入探索

🏆
AI 杰作

精通AI

📘

AI实战

📖
理解开源模型

开源模型的基础知识和资源

🎯
问题到模型任务

将业务问题转化为模型任务

⚡
跑通第一个模型

30分钟快速看到第一个结果

🔧
微调与评测

微调模型并评估性能

🚀
应用系统

构建实际AI应用系统

🎨
生成式AI

探索AIGC的开源模型

🤖
Agent智能体

学习Agent框架和MCP工具

📐
基础补充

LLM基础知识和评测

🎓

Claude 学院

🤖
Claude 101 入门

用 Claude 学习 AI 基础知识

💻
Claude Code 101 入门

让 Claude 成为你的结对编程伙伴

🤝
Claude Cowork 入门

与 Claude 协作完成复杂项目

⚙️
Claude 平台 101

使用 Claude API 构建应用

实验室

已加载 7 个实验
🧬神经网络沙盒🤖AI 还是人类?🥋提示工程道场🏁算法竞速🧠AI 知识挑战🏗️系统设计画布
🎯模拟面试进入实验室→
🚀

职业发展

🚀
面试发射台

开启你的旅程

🌟
行为面试精通

掌握软技能

💻
技术面试

通过编程轮次

🤖
AI与ML面试

ML面试精通

🏆
Offer与未来

拿下最好的Offer

立即开始
AIUnlimited

AI 教育平台

沪ICP备18025655号-11

学习

  • AI基础
  • AI实战
  • Claude学院
  • 实验室
  • 职业发展

社区

  • 关于
  • 常见问题

支持

  • 服务条款
  • 隐私政策
  • 联系我们
AI & 工程学习计划›📖 理解开源模型›课程›数据,是你要做开源模型微调的基石
📊
理解开源模型 • 入门⏱️ 12 分钟阅读

数据,是你要做开源模型微调的基石

数据,是你要做开源模型微调的基石

你是否遇到过这种情况,一个模型可以在写代码、做数学题表现的十分优秀,但你问一个日常的问题,却给你瞎回答。

我们都知道模型在训练的过程中,想要那个部分的能力提高,就针对性的找那类的数据,

但很多数据,你直接互联网检索,很难找到,有一个数据的统一下载入口,对于模型训练者来说,会节省很大的精力。

比如,我们当时开源的中文基于满血DeepSeek-R1蒸馏数据集,其中很多原始数据都是从魔搭上直接下载的,

正文配图

我们模型的微调,可以从一份现成的开源数据集开始,这样可以快速跑通整个流程。

找数据,也要先知道自己准备做什么

魔搭整合了超过4万个开源数据集,平台支持数据集搜索和预览,提供字段说明及数据集版本。

魔搭支持根据关键词标签及任务类别搜索数据集,如,检索语言中文的二分类文本分类数据,

正文配图

下载之前,先翻几条数据看看

筛选出数据集后,选择感兴趣的数据集,点击“数据预览”可以在线查看样本内容与字段说明,辅助数据选型决策,如simpleai/HC3-Chinese。

正文配图

问题放在哪一列,答案放在哪一列,有没有标签,一条数据里是一段文字还是一组对话,这些都可以先看清楚。后面写处理代码时,就不用对着字段名猜了。

以问答数据为例,人类回答和模型回答可能分别保存在不同字段里,准备拿它做什么任务,就要决定读取哪些字段、怎样整理,不能只看到问答两个字就直接开始训练。

再到数据集文件里看看文件和版本,同一份数据集会更新,训练样本、字段或者划分也可能变化。做实验时记下用的是哪个版本,后面才容易复现。

正文配图

数据集的说明和许可证也值得一起看。能下载的数据,用于研究、训练或者商业产品时,可能有不同要求。

先把数据读进来,再决定用哪一部分

魔搭提供了MsDataset.load接口,可以在Python里加载数据集。安装ModelScope后,就可以按数据集页面的使用说明操作。

先加载一份完整的数据

以DAMO_NLP/jd为例,可以这样读取默认配置下的数据,

from modelscope.msdatasets import MsDataset

ds = MsDataset.load(
    'DAMO_NLP/jd',
    trust_remote_code=True,
)
print(ds)
正文配图

只需要其中一个子集,就把名字写清楚

有些数据集会把不同来源、领域或用途的数据分开保存。如果只关心其中一部分,就用subset_name指定子集。

例如,读取HC3-Chinese里的baike子集。

from modelscope.msdatasets import MsDataset

ds = MsDataset.load(
    'simpleai/HC3-Chinese',
    subset_name='baike',
    trust_remote_code=True,
)
print(ds)
正文配图

换一份数据集时,要先查它有哪些子集。baike是这里的具体名称,不能原样套到其他数据集上。

训练集和测试集,也可以分开取

子集选的是哪一类数据,split选的是数据的哪一个划分。常见的有训练集、验证集和测试集。

第 3 课,共 4 课已完成 0%
←开源模型还没用上,先卡在下载这一步?

讨论

登录 参与讨论

train
validation
test

只读取baike子集里的训练集,可以再加一个参数。

from modelscope.msdatasets import MsDataset

ds = MsDataset.load(
    'simpleai/HC3-Chinese',
    subset_name='baike',
    split='train',
    trust_remote_code=True,
)
print(ds[0])
正文配图

并不是每份数据都同时提供这三种划分,具体名称要看数据集说明。拿到训练集后,先打印一条样本,确认字段和内容都符合预期,再接后面的处理代码。

想复现实验,记得把版本一起记下来

数据更新以后,同一段代码可能读取到不同内容。以HC3-Chinese的v1版本为例,可以通过version明确指定。

from modelscope.msdatasets import MsDataset

ds = MsDataset.load(
    'simpleai/HC3-Chinese',
    subset_name='baike',
    version='v1',
    trust_remote_code=True,
)
print(ds)
正文配图

实际操作时,到数据集页面确认可用版本。如果某个版本会持续更新,还要保留当时使用的数据文件或校验信息,方便之后对照。

数据下载好了,先别急着全交给模型

先抽几条样本看看有没有空值、乱码或者明显错误,再确认字段是不是符合训练代码要求。同一批问题的答案格式,如果前后差别很大,也需要先整理。

训练数据和测试数据还要分开。准备用来检查模型效果的样本,别提前混进训练集,否则分数看着不错,却很难判断模型遇到新问题时怎么样。