大语言模型中一个调皮的EOS token

news/2024/11/17 22:26:31/

背景
最近需要做一个微调的培训,所以不可避免地需要上手一下相关的微调,而受限于机器资源,暂时没法做全参数微调,所以就尝试了目前比较火的两种高效微调方式,分别是PTuning和LoRA。模型选择得自然是现在中文做的比较好的ChatGLM2-6B。

微调的代码分别用的是

PTuning
LoRA
在分别尝试了两个结果后,发现LoRA微调出来的结果有点抽风,喜欢疯狂输出,而它就是咱们今天的主角:ChatGLM2-6B的Tokenizer所使用的EOS(end-of-sequence) token。

EOS token 介绍
其实从名字就可以看出来,EOS的作用就是标记一个序列的结束,这样模型就可以知道这个序列已经结束了,不需要再继续输出了。 如果以为例,一般模型在推理的时候,觉得可以结束一句话了,就会输出,但是模型的脑子里肯定没有的概念呀,它只能输出数字,所以我们需要把转换成数字,这个数字就是EOS token ID。在ChatGLM2-6B的Tokenizer中,EOS token ID是2,而模型输出的时候,输出的也是2,而不是

分析BUG
既然模型会输出文字版的,那是不是模型的输入中,给它喂进去了不合适的语料呢?

进一步查找发现所使用的LoRA库中是这么添加EOS的:

medicalGPT

尝试一下直接用喂给tokenizer,看看tokenizer会怎么处理。

tokenize_s

看到这原因的就很明显了,因为这个EOS添加的是字符,而不是token_id,所以tokenizer有时候会把当成了分开的token,比如</和s和>,模型就把这3它当成了三个token,而不是一个token,所以在推理的时候,遇到结尾,有时候就会输出</+s+>。而transformers的库在推理看一个句子是否以EOS结尾,看的是token_id而不是token。就会认为生成还没有结束,就继续生成了,直到某一次推理,模型想起来预训练时的记忆,在遇到结尾的时候输出了2的token id(也就是),transformers库才会认为生成结束,停止生成。

transformers

既然知道了问题的原因,那么就需要解决这个问题,解决的方法也很简单,就是把EOS token_id添加到输入中,而不是字符。具体代码就是按照PTuning的方式,把EOS token_id添加到输入中。

refactor

改完之后重新train一遍LoRA,模型不再疯狂输出了。

尾声
要改这个bug,其实需要挺多tokenization的知识的,最近没有时间好好研究,之后有时间再来补充一下。


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

相关文章

基于FPGA的一维卷积神经网络算法实现(1D-CNN、BNN的FPGA加速实现)

文章目录 概要网络结构一维卷积介绍&#xff08;科普性质&#xff09;FPGA架构FPGA端口定义操作步骤结果演示总结 概要 本文介绍一种基于FPGA的1维卷积神经网络算法加速实现的方案&#xff0c;其中为了进一步提升运算速度&#xff0c;除了第一层卷积采用的是普通卷积运算&…

BBC纪录片:《王朝(Dynasties)》百度云免费完整无删减资源

链接: https://pan.baidu.com/s/14Y3iHQG2L-xQwuDHYUiM7w 提取码: wrkk **原因&#xff1a;**我之所以在这个CSDN分享无关IT的信息&#xff0c;是因为看网上很多人找这个资源&#xff0c;但都需要添加别人创建的微信公众号&#xff0c;但又不给资源&#xff0c;只给你网址&…

腾讯云 标准型S5 S5.SMALL2 体验

1核 2G内存&#xff0c;处理器型号 Intel Xeon Cascade Lake(2.5 GHz)&#xff0c; 一年 550。 S4 系列的同配置 1核 2G&#xff0c; 处理器型号 Intel Xeon Skylake 6148(2.4 GHz)&#xff0c; 一年是 1050。 S5 系列的比S4 系列的便宜不少。 编译安装 lnmp&#xff0c;C…

性能测评:腾讯云标准型S5 CVM云服务器

标准型S5云服务器&#xff0c;可选2核2G、2核4G和4核8G配置这次五年时长的优惠服务器提供的是标准型S5云服务器&#xff0c;采用Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器&#xff0c;主频2.5GHz&#xff0c;睿频3.1GHz&#xff0c;配有全新的Intel Advanced V…

腾讯云服务器标准型S5和标准型S3两者的不同之处?

腾讯云标准型S5和标准型S3服务器有什么钱别?标准型S5和标准型S3性能区别大吗?显然标准型S5云服务器配置更新性能更高,那么标准型S3实例和标准型S5性能差别大吗?腾讯云百科从腾讯云服务器标准型S3和标准型S5实例CPU处理器型号、网络收发包PPS及队列数方面来对比下标准型S5和…

腾讯云CVM云服务器测评:标准型 S5、S6 云服务器

​​腾讯云服务器CVM标准型S5是次新一代云服务器规格&#xff0c;标准型S6是最新一代的云服务器&#xff0c;S6实例的CPU处理器主频性能要高于S5实例&#xff0c;同CPU内存配置下的标准型S6实例要比S5实例性能更好一些&#xff0c;但是目前标准型S5实例优惠活动较多&#xff0c…

2023年腾讯云618 CVM云服务器测评:S5、S6

一、腾讯云CVM云服务器评测&#xff1a;S5、S6 腾讯云服务器CVM标准型S5是次新一代云服务器规格&#xff0c;标准型S6是最新一代的云服务器&#xff0c;S6实例的CPU处理器主频性能要高于S5实例&#xff0c;同CPU内存配置下的标准型S6实例要比S5实例性能更好一些&#xff0c;但…

测评:腾讯云5年服务器、标准型S5云服务器

标准型S5云服务器&#xff0c;可选2核2G、2核4G和4核8G配置这次五年时长的优惠服务器提供的是标准型S5云服务器&#xff0c;采用Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器&#xff0c;主频2.5GHz&#xff0c;睿频3.1GHz&#xff0c;配有全新的Intel Advanced V…