大模型入门(五)—— 基于peft微调ChatGLM模型

news/2025/2/12 10:40:29/

ChatGLM 是基于 General Language Model (GLM) 架构,针对中文问答和对话进行了优化。经过中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术,ChatGLM因为是中文大模型,在中文任务的表现要优于LLaMa,我在一些实体抽取的任务中微调ChatGLM-6B,都取得了很不错的效果。

GLM: General Language Model Pretraining with Autoregressive Blank Infilling

  在微调ChatGLM之前,先简单地了解下它的基础模型GLM,GLM也是基于transformer架构的,在训练任务上构造了自回归的空格填充任务,具体的训练流程如下图所示:

  a) 随机抽取句子中的一些片段。

  b) 将原句子和抽取的片段分离,并将原句子中被抽离的片段的位置用mask标记符替换。

  c) 将抽取的片段随机打乱拼接在原句子后面,句子和片段,片段和片段之间用起始符连接,使用自回归的训练方式去预测抽取的片段。

  d) 训练时原句子使用双向attention,如transformer encoder,图d中的蓝色部分,片段使用单向attention,如transformer decoder。

  从上面来看训练过程和之前的模型大同小异,不知道较现在大模型通用的decoder-only有没有什么优势。

ChatGLM微调

1、源代码准备

  ChatGLM目前的代码没有集成到transformers库中,作者将基于transformers实现的代码和模型文件放到了一起,模型文件和代码见THUDM/chatglm-6b at main,可以通过transformers中的Autoxxx类加载。也可以把代码直接拿出来调用,需要用到的代码有modeling_chatglm.py, tokenization_chatglm.py, configuration_chatglm.py。

2、数据和模型准备

使用的大模型:https://huggingface.co/THUDM/chatglm-6b

微调数据集:https://github.com/LC1332/Chinese-alpaca-lora/blob/main/data/trans_chinese_alpaca_data.json

微调的代码已上传到github:https://github.com/jiangxinyang227/LLM-tuning/tree/master/chatglm_tuning

3、训练方式

  训练方式参考大模型入门(四)—— 基于peft 微调 LLaMa模型

  值得注意的是,在使用deepspeed训练时,在加载chatglm模型时需要注意,chatglm模型加载默认是使用pytorch中的skip_init初始化,会将参数先加载到meta device上,这种情况就无法使用deepspeed。需要修改的代码是在加载模型时将empty_init设置为False即可。

model = ChatGLMForConditionalGeneration.from_pretrained(Config.base_model,empty_init=False,torch_dtype=torch.float16)

 


http://www.ppmy.cn/news/405496.html

相关文章

基于Java单位人事管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

使用wx原生方法扫描获取SN码

wxworkConfig.js: import { getAgentConfig } from ‘…/api/common’ export async function wxworkConfig(appCode, jsApiList [], openTagList []) { const url window.location.href // config const params { url: url, appCode } // 获取wx.config参数 const config…

不小心收到打不上驱动的矿卡588怎么办

个人真实经验,纯干货,2022年8月29日总结。 附图 **通过以上信息可知: 1.型号可能不是580 2.显卡bios可能是矿版 3.显卡官网已经没有了,很难找到原版本bios 4.显存为海力士D5MJR8G ** 赶时间可以直接看下方内容,以…

笔记本选购法则

一、确定购机需求与预算 ① 是先确定购买电脑的主要用途 下面是一些需求的例子: 1、上网、聊天、看看电视剧 2、Office办公、注重便携,美观 3、开发编程、跑虚拟机 4、设计师、主要使用PSPr3D MAX等软件 5、玩LOL、CF、吃鸡之类的游戏……等等 ② 购机预…

python 批量修改word文档中的段落格式

有时候我们需要编辑并修改一个文件夹内的大量 Word 文档中的内容,比如修改段落格式、批量替换部分文本等操作。手动一个一个地打开并修改 Word 文档非常费时费力,而 Python 提供了一些实用的库和工具,可以轻松地批量处理 Word 文档。本文将介…

Vulhub--CVE-2014-3120

复现vulhub上的ElasticSearch 命令执行漏洞(CVE-2014-3120) 1.先将环境启起来 2.访问页面 3.抓包 4.发送给repeater并修改后发送 5.修改执行命令

【漏洞复现】 ElasticSearch命令执行漏洞 (CVE-2014-3120)

漏洞介绍 Elasticsearch 是一个基于 Lucene 库的搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。Elasticsearch 是用 Java 开发的,其支持 MVEL、js、Java 等语言,其老版本默认语言为 MVEL。 MVEL -一个被众多 Java 项目使用的开源的表达式语言。 Elasticsearch 1.2之前…

CVE-2014-3120 ElasticSearch 命令执行漏洞

漏洞简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。 Elastic…