- 博客(30)
- 收藏
- 关注
原创 如何计算kv cache的缓存大小
首先,定义一些符号:( B ):批大小(Batch Size)( L ):序列长度(Sequence Length),在您的问题中,( L = 1 )( N ):Transformer 层数(Number of Transformer Layers)( H ):注意力头数(Number of Attention Heads)( D ):每个注意力头的维度(Dimension per Head),即 (DHDH。
2024-12-09 16:14:11
1951
原创 PPO(Proximal Policy Optimization)算法介绍
PPO通过引入剪辑损失函数,有效地限制了策略更新的幅度,兼顾了学习效率和更新稳定性。在RLHF中,PPO作为微调预训练语言模型的关键算法,发挥了重要作用,使得模型能够从人类反馈中高效学习,生成更符合人类期望的内容。
2024-11-06 17:50:23
1610
原创 RLHF流程中的奖励模型(Reward Model)一般怎么选
奖励模型(Reward Model,RM)被训练用于预测人类的偏好,为语言模型生成的输出分配一个标量奖励。在微调过程中,它指导语言模型生成更符合人类期望的输出。
2024-11-06 11:43:44
493
原创 RLHF阶段,一般需要多大的人类反馈数据集
在RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)阶段,所需的人类反馈数据量取决于多个因素,包括模型的规模、任务的复杂度、预期的性能水平以及可用资源等。
2024-11-05 15:44:06
512
原创 RLHF的流程介绍
RLHF通过将人类直接反馈纳入模型训练过程,使模型不仅能生成流畅的语言,还能更好地理解和满足人类的需求和偏好。这种方法在提升模型性能的同时,有助于控制模型输出的质量和安全性,在对话生成、内容推荐等领域具有广泛的应用前景。
2024-11-04 16:27:04
516
原创 RMSNorm(RMS归一化)介绍
RMSNorm通过简化归一化过程,降低计算复杂度,提供了一种有效的归一化方法。它在保持模型性能的同时,提高了计算效率,是LayerNorm的有力替代方案。对于需要高效归一化操作的深度学习模型,RMSNorm是一个值得考虑的选择。
2024-11-01 18:00:13
5119
原创 MHA(Multi-Head Attention) 与GQA(Grouped Query Attention)的区别
特点:每个头都有独立的查询、键和值投影矩阵,最大化模型的表达能力。优点:能够捕获输入序列中丰富的特征,适用于对性能要求高的场景。缺点:参数量大,计算复杂度高,对资源要求较高。
2024-10-31 20:26:40
950
原创 Transformer 如何计算时间复杂度
Transformer 模型的计算时间复杂度主要由自注意力机制的 O(n²·d) 决定。前馈网络的复杂度为 O(n·d²),在 n 远大于 d 的情况下,可以忽略不计。当处理长序列时,自注意力机制的二次时间复杂度导致计算量迅速增加。
2024-10-31 11:55:16
1075
原创 BERT预训练的MLM和NSP任务的损失函数都是什么?
BERT预训练过程中包括两个主要任务:Masked Language Modeling(MLM) 和 Next Sentence Prediction(NSP)。
2024-10-30 16:16:00
1579
原创 在大模型的预训练中,主要可以监控哪些指标
在大模型的预训练和微调过程中,除了监控loss之外,还可以监控以下的指标。通过这些指标,可以去判断模型当前学习的进展,以及发现潜在的问题。
2024-10-21 19:53:42
615
原创 如何评估大模型全参数微调需要的显存
模型的大小、批处理大小(Batch Size)、序列长度,以及是否采用了一些显存优化技术。模型的大小直接影响显存使用。例如,一个有110M参数的模型(如BERT-base)与一个有340M参数的模型(如BERT-large),在相同条件下,后者会消耗更多的显存。批处理大小增加意味着同时处理更多的数据,这会线性增加显存的需求。输入的序列长度越长,模型处理时占用的显存也就越多。这是因为模型必须处理并存储更多的中间状态数据。
2024-01-29 11:46:18
15057
5
原创 从零开始讲解LoRA——大语言模型的PEFT(Parameter-Efficient Fine-Tuning)系列
通过这种方式,可以使预训练模型在下游的微调任务当中,不用去学习全量的训练参数,因此大大降低了模型的训练参数量,同时降低了GPU内存的需求。LoRA的主要思想是在预训练模型的每一层中保持训练前权重不变,同时在每一层中注入可训练的秩分解矩阵,从而大大减少了针对下游任务的可训练参数数量。与模型质量相当或更好的表现:尽管LoRA具有较少的可训练参数、更高的训练吞吐量和与适配器不同的无额外推理延迟,但在RoBERTa、DeBERTa、GPT-2和GPT-3上的表现与完全微调相当或更好。的参数量为d*k个。
2024-01-17 19:40:52
1925
原创 为什么LLM都用的Decoder only结构?
现在的LLM的模型,都用的是 decoder的 架构,没有用encoder的,之前的google开发出了bert,后续出的T5的模型,都是很经典的模型,在NLU上的效果都很好,为什么现在的LLM都不用encoder结构了呢?
2024-01-13 17:36:19
903
1
原创 文档的画图配色方案
其中,折线图可以用图2的上面的方案来绘制,三色图配色:#EA8379 #7DAEE0 #B395BD。多色机制图配色:#43978F #9EC4BE #ABDOF1 #DCE9F4 #E56F5E #F19685 #F6C957 #FFB77F #FBE8D5。六色图配色方案1:#427AB2 #F09148 #FF9896 #DBDB8D #C59D94 #AFC7E8。六色图配色方案2:#EEA599 #FAC795 #FFE9BE #E3EDE0 #ABD3E1 #92B4C8。
2023-12-11 11:27:27
4295
原创 解决开发机上的csv传到mac上中文显示乱码的问题
最近在开发机上生成了一些csv的文件,传到mac后,打开csv文件时,发现中文显示乱码了。后面查了一下,发现是因为使用开发机的时候,生成的csv中文数据的编码是"utf-8"的格式,而在mac上,对应的中文数据的编码是"GBK",因为编码不一致导致的乱码。把对应的"utf-8"编码的input.csv 转化为"GBK"编码的output.csv。重新打开output.csv,中文乱码问题解决。只需要把当前的csv文件的编码由"utf-8"转到"GBK"即可。
2023-12-08 10:25:58
1904
原创 python 绘制饼图
在分析数据的时候,我们往往想直观的得到这个数据的具体比重,用饼图是一个很好的方式,能够给人直观的呈现结果。相关的参数以及参数说明,都放在了代码里面,就不再写一遍参数说明了。一张饼图就绘制完成了。
2023-11-21 18:01:52
973
原创 vim 的初始化配置
vim分为系统版本的vim以及当前用户版本下的vim。一般系统版本的vim的配置路径为:/etc/vimrc。用户版本下的vim的配置路径一般为:~/.vimrc,有些用户环境下是没有~/.vimrc 这个文件的,这时可以自己手动添加一个。最近在新的开发机下使用vim看一些文本数据,为了看到每条数据的行数,每次都需要 :set nu。还是比较麻烦的,因此后面就把开发机的vim做了下初始化的配置。vim的初始化配置很多,比如『语法高亮』、『显示行数』、『设置制表符长度』等等。"允许使用鼠标点击定位。
2023-11-06 15:13:45
368
1
原创 解决macos的.bash_profile配置环境变量每次都需要使用source 激活才能生效的问题
重新打开一个terminal后,试着使用ll命令,生效,问题解决。在新开一个terminal后,执行ll后,命令并没有生效。source ~/.zshrc,激活.zshrc 文件。使用vim 或者vi 打开 ~/.zshrc。:wq保存修改后的 ~/.zshrc文件。
2023-10-25 14:33:24
1644
1
原创 K近邻算法的介绍
k近邻算法,也称为KNN或者是k-NN,它是属于非参数、有监督的学习分类器。它常用于解决分类与回归问题。按照比较通俗的话来说,所谓的k近邻,就是每个样本可以用它最接近的k个相邻样本来表示。如果一个样本,它的k个相邻的样本的大多数都属于类别1,那么这个样本就也会归结到类别1当中。
2023-10-24 20:54:13
263
原创 如何使用seaborn绘制散点图
data的输入可以为pandas的DataFrame结构,可以为numpy的array,也可以是对应的mapping,或者是序列输入数据结构。在本次当中,我们使用的是pandas的数据结构。接下来,我们主要是采用seaborn来绘制它的散点图,可以看下seaborn绘制散点图的官方文档。seaborn的绘制散点图的官方api文档如下所示。最近在做一些文本聚类的工作,在看数据的可视化分布的时候,采用了seaborn来绘制散点图。因为是绘制二维的散点图,是对应的数据的x轴和y轴。
2023-10-17 11:13:38
1286
1
原创 分享一个超实用开发机互传文件的方法
上一篇文章讲到了如何在mac和开发机上互传文件,这一篇讲一下如何在linux开发机之间,或者在linux与macos之间互传文件。
2023-10-16 14:13:28
147
1
原创 分享一个超实用mac和开发机文件互传的方法
MAC发送:nc -w 1 [开发机的 hostname] [端口号] < file.tgz(到该文件的目录下执行)step2:mac发送: nc -w 1 [开发机的 hostname] 8888 < file.tar.gz。开发机搭服务器:python -m SimpleHTTPServer [端口号](到需下载文件的目录下执行)开发机监听:nc -l [端口号] > file.tgz(到需要下载文件的目录下执行)step1: 开发机监听:nc -l 8888 > file.tar.gz。
2023-10-16 10:07:41
352
1
原创 解决 -bash: *.sh: Permission denied 的问题
可以看到,之前的sh脚本是没有执行权限标识(x)的。可以看到,*.sh文件已经添加了可执行的权限。使用ll -rt命令,看下sh脚本的权限。
2023-10-13 14:45:27
8096
原创 NLP中关于embedding相加的思考
NLP模型中,包括了传统的NLP模型以及bert、LLM等,都可以认为是有着类似傅里叶变化的能力的,即识别出信号波是由什么原始的信号波叠加的。因此,在模型的训练过程中,相加后的embedding结果仍然可以被模型所解耦以及识别。",题主提的问题大概意思是这样:BERT的input有三个embedding:Token embedding,Segment embedding, Position Embedding,这三个向量相加后,明明大小和方向都发生了改变,语义应该变了,为什么还能作为input的表征?
2023-10-12 15:18:43
267
原创 解决sklearn中tsne算法降维结果不一致的问题
TSNE在运算的时候,会初始化一个随机的种子点,如果没有制定该参数的话,默认该参数为None,同时会默认使用mumpy.random随机生成一个数作为种子点。最近在做一个文本聚类的分析,在对文本数据embedding后,想着看下数据的分布,于是用sklearn的TSNE算法来降维我的数据结果。当我在多次执行后,竟发现TSNE的结果竟然变了,而且每次都不一样。之前只是在网上随便找了个做TSNE的博客,粘了这两行代码就跑结果了,出现了这个问题后,决定还是得好好看看sklearn中的官方文档。
2023-10-12 11:58:40
823
4
原创 解决pip安装出现Could not find a version that satisfies the requirement XXX (from versions: none) 问题
最近,在新的机器pip安装jieba包的时候,出现了下面的错误:"ERROR: Could not find a version that satisfies the requirement jieba (from versions: none) ERROR: No matching distribution found for jieba"。(本次更新了自己的pip,重试了依然没有解决。本人列举了相关的国内常用的镜像源,以及对应的优缺点,供大家自行选择使用。完全度和速度都很好,是一个优秀的pip镜像源。
2023-10-10 12:22:09
36844
14
NLP+embedding+m3e模型,用于做中文文本的NLU任务
2023-11-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人