GLM4是清华智谱团队最近开源的大语言模型。
以GLM4作为基座大模型,通过指令微调 的方式做高精度的命名实体识别(NER),是学习入门LLM微调 、建立大模型认知的非常好的任务。

显存要求相对较高,需要40GB左右。
在本文中,我们会使用 GLM4-9b-Chat 模型在 中文NER 数据集上做指令微调训练,同时使用SwanLab监控训练过程、评估模型效果。
- 代码:完整代码直接看本文第6节 或 Github
- 实验日志过程:GLM4-NER-Fintune - SwanLab
- 模型:Modelscope
- 数据集:chinese_ner_sft
- SwanLab:swanlab.cn
知识点1:什么是指令微调?
大模型指令微调(Instruction Tuning)是一种针对大型预训练语言模型的微调技术,其核心目的是增强模型理解和执行特定指令的能力,使模型能够根据用户提供的自然语言指令准确、恰当地生成相应的输出或执行相关任务。
指令微调特别关注于提升模型在遵循指令 方面的一致性和准确性,从而拓宽模型在各种应用场景中的泛化能力和实用性。
在实际应用中,我的理解是,指令微调更多把LLM看作一个更智能、更强大的传统NLP模型(比如Bert) ,来实现更高精度的NLP任务。所以这类任务的应用场景覆盖了以往NLP模型的场景,甚至很多团队拿它来标注互联网数据 。
知识点2:什么是命名实体识别?
命名实体识别 (NER) 是一种NLP技术,主要用于识别和分类文本中提到的重要信息(关键词)。这些实体可以是人名、地名、机构名、日期、时间、货币值等等。 NER 的目标是将文本中的非结构化信息转换为结构化信息,以便计算机能够更容易地理解和处理。

NER 也是一项非常实用的技术,包括在互联网数据标注、搜索引擎、推荐系统、知识图谱、医疗保健等诸多领域有广泛应用。
1.环境安装
本案例基于Python>=3.8,请在您的计算机上安装好Python,并且有一张英伟达显卡(显存要求并不高,大概10GB左右就可以跑)。
我们需要安装以下这几个Python库,在这之前,请确保你的环境内已安装好了pytorch 以及CUDA :
swanlab
modelscope
transformers
datasets
peft
accelerate
pandas
tiktoken
一键安装命令:
pip install swanlab modelscope transformers datasets peft pandas accelerate tiktoken
本案例测试于modelscope1.14.0、transformers4.41.2、datasets2.18.0、peft0.11.1、accelerate0.30.1、swanlab0.3.11、tiktoken==0.7.0
2.准备数据集
本案例使用的是HuggingFace上的chinese_ner_sft数据集,该数据集主要被用于训练命名实体识别模型。

chinese_ner_sft由不同来源、不同类型的几十万条数据组成,应该是我见过收录最齐全的中文NER数据集。
这次训练我们不需要用到它的全部数据,只取其中的CCFBDCI数据集(中文命名实体识别算法鲁棒性评测数据集)进行训练,该数据集包含LOC(地点)、GPE(地理)、ORG(组织)和PER(人名)四种实体类型标注,每条数据的例子如下:
{
"text": "今天亚太经合组织第十二届部长级会议在这里开幕,中国外交部部长唐家璇、外经贸部部长石广生出席了会议。",
"entities": [
{
"start_idx": 23,
"end_idx": 25,
"entity_text": "中国",
"entity_label": "GPE",
"entity_names": ["地缘政治实体", "政治实体", "地理实体", "社会实体"]},
{
"start_idx": 25,
"end_idx": 28,
"entity_text": "外交部",
"entity_label": "ORG",
"entity_names": ["组织", "团体", "机构"]
},
{
"start_idx": 30,
"end_idx": 33,
"entity_text": "唐家璇",
"entity_label": "PER",
"entity_names": ["人名", "姓名"]
},
...
],
"data_source": "CCFBDCI"
}
其中text是输入的文本,entities是文本抽取出的实体。我们的目标是希望微调后的大模型能够根据由text组成的提示词,预测出一个json格式的实体信息:

最低0.47元/天 解锁文章
3633

被折叠的 条评论
为什么被折叠?



