只有2B参数,中文能力也能打架?手把手教你调教出更懂中文的“小钢炮”模型

举报
架构师李哲 发表于 2026/03/03 15:02:00 2026/03/03
【摘要】 本文在LlamaFactory Online平台微调Chinese Tiny LLM - 2B小模型,通过困惑度筛选高质量中文语料,并设计三组中英配比实验。结果显示:微调后模型BLEU-4从11.34跃升至30.44,ROUGE指标全面领先。证明小模型经精细数据喂养,中文能力可媲美大模型,为算力受限团队提供轻量化落地路径。

在中文大模型的世界里,一个尴尬的现状长期存在:绝大多数模型的训练以英语为核心,中文语料往往只是“配料”。这就好比请了一位精通西餐的大厨来做中餐——食材认识,火候也对,但做出来的味道总差那么点意思。

今天,我们要分享的是一次“反其道而行”的实践:在LlamaFactory Online平台上,仅用1小时,用Chinese Tiny LLM - 2B这个小模型,通过精挑细选的中文数据和巧妙的“喂养”方式,让它在中文学问上展现出远超体量的“大智慧”。它的参数量仅为20亿,但在自主构建的高质量中文语料加持下,其中文理解与生成能力甚至能与部分大模型一较高下。

这次实践的意义不仅在于效果提升,更在于揭示了一个朴素真理:模型的真正价值,不在于参数量的堆砌,而在于它所习得的知识密度与质量。

核心配置数据,不卷参数

Chinese Tiny LLM - 2B的定位很特别——它不卷参数规模,而是卷数据质量。研发团队自主构建和整理了大规模高品质中文语料,让这个小个子模型在中文理解、生成和复杂任务处理上有了扎实的底子。但它毕竟是2B模型,还有提升空间。我们的目标很简单:通过精准的指令微调,把它身上那个“隐藏的中文专家”彻底唤醒。在正式上手前,先看看我们的实验配置:

配置参数

配置项

是否预置

说明

模型

CT-LLM-Base

参数量约20亿 (2B),擅长中文理解、生成和复杂任务处理

数据集

COIG-CQIA中文

OL-CC中文

OpenHermesPreferences英文

高质量中文指令微调数据集

开源中文对话指令集

英文偏好排序数据集

GPU

H800A*1推荐

-

单卡即可完成训练

微调方法

LoRA

-

显著降低计算与存储成本,兼具高性能与部署灵活性

数据处理:清洗过滤,微调之本

模型强不强,全看数据香不香。我们首先要将开源的原始数据转换为 LLamaFactory Online 要求的格式。这个过程看似繁琐,实则是决定最终效果的“胜负手”。

第一步:环境准备基础配置

1.进入LlamaFactory Online平台“实例空间”开始进行微调由于数据处理后期需要使用Qwen模型计算困惑度,因此我们选择使用1张GPU卡

2.进入JupyterLab处理专属数据新建两个文件夹“Chinesedata”和“data_ppl_filtered”,分别用于存储:完成困惑度计算的数据集、完成过滤和切分的数据集(训练集和测试集)。


22 - 副本.png11 - 副本.png



3.创建并配置用于数据处理的python环境。 在JupyterLab中点击“Terminal”进入终端。

● 创建一个名为“ChineseTiny”的虚拟环境,python版本选择3.10。


conda create -n ChineseTiny python=3.10


● 激活环境。


conda activate ChineseTiny


● 安装依赖包。


pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ipykernel 
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple accelerate
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple transformers torch tqdm datasets


● 注册内核。


python -m ipykernel install --prefix=/usr/local --name ChineseTiny --display-name "python(ChineseTiny)"



💡提示

上述注册内核的命令中,“--name”后的名字要严格和环境名称一致。


第二步:数据清洗格式统一

在LlamaFactory Online平台上下载数据脚本进行数据处理,在数据处理过程中,我们首先统一了各个数据集的格式,使其符合LlamaFactory的格式要求。并且计算了数据集的困惑度,将困惑度写入数据集中。下面以OpenHermesPreferences数据集的一个样本为例,展示原始数据和统一格式后的数据。

原始数据格式-OpenHermesPreferences


{
"source": "airoboros2.2",
"category": "orca",
"prompt": "Every day, a tree drops 7 leaves. How many leaves would it drop in a month of February in a non-leap year? Include your logic.",
"candidates_completions": [" Here's the logic behind this ... 196 leaves\n\nSo, the tree would drop 196 leaves in February in a non-leap year.",
"Here's the logic behind this ... 196 leaves\n\nSo, the tree would drop 196 leaves in February in a non-leap year.",
"First ... On average, the tree drops 196 leaves in a month of February in a non-leap year."],
"candidate_policies": ["mistralai/Mixtral-8x7B-Instruct-v0.1",
"teknium/OpenHermes-2.5",
"NousResearch/Nous-Hermes-2-Yi-34B"],
"ranks": [1, 0, 2],
"rank_str": "teknium/OpenHermes-2.5 > mistralai/Mixtral-8x7B-Instruct-v0.1 > NousResearch/Nous-Hermes-2-Yi-34B",
"chosen_policy": "teknium/OpenHermes-2.5",
"chosen": [{"content": "Every day, a tree drops 7 leaves. How many leaves would it drop in a month of February in a non-leap year? Include your logic.",
"role": "user"},
{"content": "Here's the logic behind this ... 196 leaves\n\nSo, the tree would drop 196 leaves in February in a non-leap year.",
"role": "assistant"}],
"rejected_policy": "NousResearch/Nous-Hermes-2-Yi-34B",
"rejected": [{"content": "Every day, a tree drops 7 leaves. How many leaves would it drop in a month of February in a non-leap year? Include your logic.",
"role": "user"},
{"content": "First ... On average, the tree drops 196 leaves in a month of February in a non-leap year.",
"role": "assistant"}]}


统一格式后的数据-OpenHermesPreferences


{"id":3982,
"instruction":"What is the maximum value of the Z component for the Rössler system with parameters a=0.2, b=0.2 and c=5.7 when simulated for a time span of 100 seconds with a time step of 0.01?",
"input":"",
"output":" The Rössler system is a system ... Therefore, the maximum value of the Z component for the Rössler system with parameters a=0.2, b=0.2 and c=5.7 when simulated for a time span of 100 seconds with a time step of 0.01 is approximately 41.5805. Note that the exact value may depend on the numerical method and the time step used for the simulation.",
"perplexity":1.6777256012}


此数据集原本偏好数据集统一格式后,也可以构造规范的指令微调数据集,为后续训练铺平了道路。

第三步:用“困惑度”筛出精华

我们引入了一个有趣的指标:困惑度(Perplexity)。它是自然语言处理领域常用的语言模型评估指标。简单说,它衡量模型对一段文本的“意外程度”——困惑度越低,说明文本越“自然”、越符合语言规律。

我们对每个数据集计算了困惑度分布,并狠心过滤掉了困惑度高于前75%的样本。这意味着剔除了那些“写得别扭”或“不太像人话”的数据,只留下最精华、最自然的语料。


[
{'percent': 5, 'ppl': 1.7610674731193086},
{'percent': 10, 'ppl': 2.3774340539787198},
{'percent': 25, 'ppl': 4.183896373821549},
{'percent': 50, 'ppl': 8.10350818504899},
{'percent': 75, 'ppl': 13.909937685844394},# 高于此值的样本被过滤
{'percent': 90, 'ppl': 22.34595027351144},
{'percent': 95, 'ppl': 28.69867577413068}
]


这一步看似“浪费”,实则是提升模型质量的关键一招——让模型只学最好的表达,而不是在平庸的数据上浪费算力


💡提示

本实践提供了处理自定义数据集,并将数据用于模型训练的教程,可在LlamaFactory Online直接获得处理完毕的数据集,快速开始微调训练。


第四步:数据集检测及配比实验

将处理好的数据复制到user-data目录下,回到LlamaFactory Online页面,进入文件管理,在数据集Tab下找到复制的数据进行格式检测。当“数据集格式检测”状态变为“符合”时,数据集就可以正式投入训练了。

数据处理完成后,我们设计了三组不同中英配比的“实验”,想看看数据比例对模型表现的影响:

实验

中英语料比例

中文语料采样

英文语料采样

实验一

全中文(1:0)

6000条OL-CC + 1000条COIG-CQIA

0

实验二

中英混合2:1

6000条OL-CC + 1000条COIG-CQIA

3500条OpenHermes

实验三

中英混合4:1

6000条OL-CC + 1000条COIG-CQIA

1750条OpenHermes

带着这三组精心配比的“饲料”,我们在平台上启动了一键微调任务。

模型训练:一键开启,全程可视

借助LlamaFactory Online的在线 WebUI 微调配置界面,整个过程变得极其简单:

1.参数配置微调方法选择LoRA,设置学习率、Epoch(本实验为3次迭代)以及截断长度等,其余参数保持默认。

2.一键开启:参数配置完成后,点击“开始”启动微调任务。在日志窗口可实时监控微调进度及Loss变化曲线。

3.注意区分:因为实验较多,记得区分不同实验的输出目录,后续对话和评估时需要在检查点路径处使用对应目录。

训练完成后,选择各个实验的检查点路径,在Chat界面即可观察模型回答。注意:切换不同实验的模型时,要先卸载当前模型,再更换检查点路径。

微调后模型对话(实验一)


1.png


微调后模型对话(实验二)


2.png


微调后模型对话(实验三)


3.png


原生模型对话


4.png



观察各实验微调后的模型与原生模型的对话结果,你会发现微调后的模型对话更准确,全面在回答中文逻辑问题时告别了之前的“机翻感”,用词更加自然地道。其中实验二微调后的模型对话效果最佳,结构清晰,具有条理性。

成果验收数据说话效果见证

在微调后的评估环节,模型给出了令人惊喜的答卷

指标

原生模型

微调后模型(实验一)

微调后模型(实验二)

微调后模型(实验三)

BLEU-4

11.34

26.11

30.44

26.13

ROUGE-1

27.19

42.86

44.22

41.89

ROUGE-2

17.41

31.29

31.91

31.16

ROUGE-L

16.03

38.06

39.04

38.27

原生模型评估结果解读:各项指标较低,BLEU-4仅为11.34,说明生成文本与参考答案重合度较低,生成能力有限。ROUGE系列指标也反映出语义覆盖、短语匹配和句法连贯性均较差。

实验一(全中文)评估结果解读:BLEU-4提升至26.11,说明生成文本与参考答案的短语重合度较高,模型生成能力明显提升。ROUGE-1(42.86)、ROUGE-2(31.29)、ROUGE-L(38.06)显示模型在词汇覆盖、短语匹配和句法连贯性方面表现良好。

实验二(中英混合2:1)评估结果解读:BLEU-4达到30.44,短语重合度最高,生成内容与标准答案最接近,模型效果最佳。ROUGE-1(44.22)、ROUGE-2(31.91)、ROUGE-L(39.04)各项指标均为最高,语义覆盖和连贯性最优。推理速度与实验一相近,效率良好。

实验三(中英混合4:1)评估结果解读:BLEU-4为26.13,与实验一接近,生成质量明显优于基模型。各项指标略低于实验一、二,但仍远超原生模型。

数据印证了我们的观察:实验二的模型(中英均衡配比)效果最佳。这说明适当引入高质量英文数据,反而能提升模型对中文的理解和表达能力——语言的边界,有时真的可以相互滋养。

 

这次Chinese Tiny LLM的实战给我们上了生动一课:

第一,数据的质量远比数量重要。 通过困惑度过滤掉“平庸”样本,让模型专注学习最自然的表达,效果立竿见影。那些被筛掉的数据,虽然数量不少,但留下的才是真正的精华。

第二,数据配比是一门艺术。 三种配比实验的对比清晰表明,单纯的中文数据未必最好,适当的“跨语言营养”反而能激发模型潜力。实验二的表现印证了这一点——好的配方,能让小个子爆发出大能量。

第三,小模型也能有大作为。LlamaFactory Online平台的赋能下,仅用20亿参数的CT-LLM,通过精细的数据处理和科学的微调策略,就能在中文学问上交出漂亮的答卷。推理速度可观,效果接近甚至超越部分大模型。

对于那些苦于算力有限、又想打造中文AI应用的团队来说,这条路径值得认真考虑——与其仰望千亿参数的“巨兽”,不如用心喂养一个真正懂你的“小专家”。

如果您正受限于算力,或者想开发一款垂直领域的轻量级助手,不妨从这次实践开始。在LlamaFactory Online上,你可以轻松复现这场“数据实验”,亲手验证数据配比对模型能力的真实影响。让每一份算力,都花在最有价值的数据上。

 

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。