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

0 阅读1分钟

===

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

今天,我们要分享的是一次“反其道而行”的实践:在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”,分别用于存储:完成困惑度计算的数据集、完成过滤和切分的数据集(训练集和测试集)。

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 acceleratepip 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界面即可观察模型回答。(注意:切换不同实验的模型时,要先卸载当前模型,再更换检查点路径。)

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

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

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

原生模型对话

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

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

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

指标

原生模型

微调后模型(实验一)

微调后模型(实验二)

微调后模型(实验三)

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上,你可以轻松复现这场“数据实验”,亲手验证数据配比对模型能力的真实影响。让每一份算力,都花在最有价值的数据上。