GLM4是清华智谱团队最近开源的大语言模型。
以GLM4作为基座大模型,通过指令微调的方式做高精度文本分类,是学习LLM微调的入门任务。

使用的9B模型,显存要求相对较高,需要40GB左右。
在本文中,我们会使用 GLM4-9b-Chat 模型在 复旦中文新闻 数据集上做指令微调训练,同时使用SwanLab监控训练过程、评估模型效果。
- 代码:完整代码直接看本文第5节 或 Github、Jupyter Notebook
- 实验日志过程:GLM4-Fintune - SwanLab
- 模型:Modelscope
- 数据集:zh_cls_fudan_news
- SwanLab:https://swanlab.cn
相关文章:Qwen2指令微调
大模型指令微调(Instruction Tuning)是一种针对大型预训练语言模型的微调技术,其核心目的是增强模型理解和执行特定指令的能力,使模型能够根据用户提供的自然语言指令准确、恰当地生成相应的输出或执行相关任务。
指令微调特别关注于提升模型在遵循指令方面的一致性和准确性,从而拓宽模型在各种应用场景中的泛化能力和实用性。
在实际应用中,我的理解是,指令微调更多把LLM看作一个更智能、更强大的传统NLP模型(比如Bert),来实现更高精度的文本预测任务。所以这类任务的应用场景覆盖了以往NLP模型的场景,甚至很多团队拿它来标注互联网数据。
下面是实战正片:
本案例基于,请在您的计算机上安装好Python,并且有一张英伟达显卡(显存要求并不高,大概10GB左右就可以跑)。
我们需要安装以下这几个Python库,在这之前,请确保你的环境内已安装了pytorch以及CUDA:
一键安装命令:
本案例测试于modelscope1.14.0、transformers4.41.2、datasets2.18.0、peft0.11.1、accelerate0.30.1、swanlab0.3.10、tiktokn==0.7.0,更多环境细节可以查看这里
本案例使用的是zh_cls_fudan-news数据集,该数据集主要被用于训练文本分类模型。
zh_cls_fudan-news由几千条数据,每条数据包含text、category、output三列:
- text 是训练语料,内容是书籍或新闻的文本内容
- category 是text的多个备选类型组成的列表
- output 则是text唯一真实的类型

数据集例子如下:
我们的训练任务,便是希望微调后的大模型能够根据Text和Category组成的提示词,预测出正确的Output。
我们将数据集下载到本地目录下。下载方式是前往zh_cls_fudan-news - 魔搭社区 ,将和下载到本地根目录下即可:

这里我们使用modelscope下载GLM4-9b-Chat模型(modelscope在国内,所以下载不用担心速度和稳定性问题),然后把它加载到Transformers中进行训练:
我们使用SwanLab来监控整个训练过程,并评估最终的模型效果。
这里直接使用SwanLab和Transformers的集成来实现:
如果你是第一次使用SwanLab,那么还需要去https://swanlab.cn上注册一个账号,在用户设置页面复制你的API Key,然后在训练开始时粘贴进去即可:

开始训练时的目录结构:
train.py:
看到下面的进度条即代表训练开始,这些loss、grad_norm等信息会到一定的step时打印出来:

在SwanLab上查看最终的训练结果:
可以看到在2个epoch之后,微调后的glm4的loss降低到了不错的水平——当然对于大模型来说,真正的效果评估还得看主观效果。

可以看到在一些测试样例上,微调后的glm4能够给出准确的文本类型:

至此,你已经完成了glm4指令微调的训练!
- 代码:完整代码直接看本文第5节
- 实验日志过程:GLM4-Fintune - SwanLab
- 模型:Modelscope
- 数据集:zh_cls_fudan_news
- SwanLab:https://swanlab.cn
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/222114.html