- 博客(176)
- 收藏
- 关注
原创 【大模型】GLM
如果GPT是ChatGPT的基础模型,ChatGLM的基础模型是GLM。GLM的核心创新点是提出了自回归空白填充(Autoregressive Blank Infilling)的自监督训练方式,通过调整空白块的大小,GLM即可以像encoder-only的模型那样进行NLU任务(文本分类等),也可以像decoder-only模型那样进行NLG任务(文本生成等),还可以像seq-to-seq模型那样进行条件NLG任务(对话,机器翻译等)。可谓是通过一个预训练任务,便实现了预训练模型三个结构的统一。
2024-08-23 11:07:19
1082
原创 【深度学习】旋转位置编码
Transformer中提出得Sinusoidal位置编码是一种“想要成为相对位置编码的绝对位置编码”。一般来说,绝对位置编码具有实现简单、计算速度快等优点,而相对位置编码则直接地体现了相对位置信号,跟我们的直观理解吻合,实际性能往往也更好。由此可见,如果可以通过绝对位置编码的方式实现相对位置编码,那么就是“集各家之所长”、“鱼与熊掌兼得”了。Sinusoidal位置编码隐约做到了这一点,但并不够好。
2024-08-16 10:18:10
618
原创 【大模型】SFT和RLHF
方法优点缺点SFT1. 启动简单,仅需要问答对数据就可以进行训练;2. 训练简单,直接对LLM进行调参,大部分情况下,训练几个epoch就可达到预期;3. 显存资源相比于RLHF来说耗费低。1. 模型的效果非常依赖于SFT数据的质量,天花板取决于SFT数据标注的质量;2. 对标注要求高,对一条指令来说,要标注很高质的回答其实是一件非常困难的事情,既耗时又耗力。RLHF1. 直接利用人类偏好来进行指导大模型的训练,使大模型的输出更能满足人们的要求;
2024-08-14 20:40:55
1127
原创 【大模型】GLM4-9B本地化部署
部署GLM4-9B需要的文件:1.Dockerfile、2.open_ai_service.py、3.requirements.txt、
2024-07-23 17:24:36
150
原创 【大模型】大模型微调方法总结(四)
在实验中,我们发现不同的理解任务通常用不同的提示长度来实现其最佳性能,这与Prefix-Tuning中的发现一致,不同的文本生成任务可能有不同的最佳提示长度。2.缺少深度提示优化,在Prompt Tuning和P-tuning中,连续提示只被插入transformer第一层的输入embedding序列中,在接下来的transformer层中,插入连续提示的位置的embedding是由之前的transformer层计算出来的,这可能导致两个可能的优化挑战。大模型的Prompt构造方式严重影响下游任务的效果。
2024-06-28 14:00:59
861
原创 【大模型】大模型微调方法总结(三)
因为之前的人工构建的template是离散的,且针对不同的下游任务,需要构建不同的模版。手动尝试最优的提示无异于大海捞针,于是便有了自动离散提示搜索的方法,但提示是离散的,神经网络是连续的,所以寻找的最优提示可能是次优的。Prompt token 的长度在20左右时的表现已经不错(超过20之后,提升Prompt token长度,对模型的性能提升不明显了),同样的,这个gap也会随着模型参数规模的提升而减小(即对于超大规模模型而言,即使 Prompt token 长度很短,对性能也不会有太大的影响)。
2024-06-26 10:29:57
798
原创 【大模型】大模型微调方法总结(二)
对于 N 的不同的下游任务训练 N 个 Adapter 模块,使用 AdapterFusion 组合 N 个适配器中的知识,将预训练参数 Θ 和全部的 Adapter 参数 Φ 固定,引入新的参数 Ψ,使用 N 个下游任务的数据集训练,让 AdapterFusion 学习如何组合 N 个适配器解决特定任务。如果始终将维度限制在64,将导致平均准确率略微下降。),在不影响任务性能的情况下,对Adapter动态高效的移除,尽可能的减少模型的参数量,提高模型在反向传播(训练)和正向传播(推理)时的效率。
2024-06-26 10:29:26
767
原创 【大模型】大模型微调方法总结(一)
微调是指调整大型语言模型(LLM)的参数以适应特定任务的过程。这是通过在与任务相关的数据集上训练模型来完成的。所需的微调量取决于任务的复杂性和数据集的大小。在深度学习中,微调是一种重要的技术,用于改进预训练模型的性能。除了微调ChatGPT之外,还有许多其他预训练模型可以进行微调。
2024-06-26 10:28:54
524
原创 【工程实践】数据清洗
有个很著名的论断:一个数据科学家80%的时间花在了数据清洗,20%的时间花在算法模型上面。数据清洗很像一个筛沙子的过程,通过整合筛选,筛出金子般的数据洞察/模型预测。不然的话,建模分析就是garbage in, garbage out (垃圾进,垃圾出)
2024-06-12 14:29:46
315
原创 【工程实践】CatBoost进行多分类
CatBoost是俄罗斯的搜索巨头Y andex在2017年开源的机器学习库,和lightgbm、xgboost并成为gbdt三大主流神器库,它是一种基于对称决策树(oblivious trees)算法的参数少、支持类别型变量和高准确性的GBDT框架,主要说解决的痛点是高效合理地处理类别型特征,另外提出了新的方法来处理梯度偏差(Gradient bias)以及预测偏移(Prediction shift)问题,提高算法的准确性和泛化能力。
2024-06-12 14:24:20
1553
原创 【大模型】LangChain自定义 LLM 类
为便捷构建 LLM 应用,需要基于本地部署的LLM模型,自定义一个 LLM 类,将LLM接入到 LangChain 框架中。完成自定义 LLM 类之后,可以以完全一致的方式调用 LangChain 的接口,而无需考虑底层模型调用的不一致。
2024-05-23 15:20:24
754
原创 【工程实践】Triton Inference Server
Triton Inference Server是英伟达Nvidia开源的高性能推理,可以在CPU、GPU上加速模型推理的一个工具。Triton Inference Server是一个适用于深度学习与机器学习模型的推理服务引擎,支持将TensorRT、TensorFlow、PyTorch或ONNX等多种AI框架的模型部署为在线推理服务,并支持多模型管理、自定义backend等功能。将模型转成onnx之后,使用Triton Inference Server加载并提供服务,推理速度提升,内存占用减少。
2024-05-21 11:08:15
1241
原创 【深度学习】位置编码
位置编码(Positional Encoding)是在使用Transformer等自回归模型处理序列数据(如自然语言)时,为输入序列中的每个位置添加额外信息以体现其在序列中的相对或绝对位置的方法。:通过修改注意力机制本身来编码位置信息,例如通过在注意力得分计算中加入位置相关的项或使用特定的设计(如基于距离的注意力函数)来使模型在计算注意力权重时自动考虑词之间的相对或绝对位置。:与固定位置编码相反,可学习位置编码将位置信息编码为模型的可训练参数,每个位置对应一个单独的学习向量。:计算简单,无需额外训练;
2024-05-15 10:04:09
966
原创 【深度学习】pip 临时换源
例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch,这样就会从清华这边的镜像去安装torch库。可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple。
2024-03-21 11:04:59
294
原创 【大模型】Lora
Low-Rank Adaptation(低秩适应)是一种针对大型语言模型(如GPT-3等)在下游任务上进行的参数效率优化技术。这种方法的核心思想是,在模型适应下游任务的过程中,不是更新全部的模型参数,而是仅更新一部分参数,以此来减少需要训练的参数量,提高训练效率,并减少内存消耗。具体而言,低秩适应通过矩阵分解的技术,将大型语言模型中的权重矩阵分解为两个更小的矩阵的乘积,这两个小矩阵是可训练的。在训练过程中,只训练这两个小矩阵,而固定住原始预训练模型的权重。
2024-03-11 18:12:33
2611
1
原创 【深度学习】Qwen大模型量化
在微调Qwen大模型之后,需要对模型进行后量化。在Qwen预构建的Docker镜像基础上新作镜像作为量化的环境。镜像成为容器之后,将需要的文件使用docker cp命令复制到容器中。镜像制作过程可参考。
2024-03-11 17:39:22
406
原创 【大模型】微调ChatGlm3-6b
指令微调ChatGlm3-6b。微调教程在github地址中给出,微调环境是Qwen提供的docker镜像为环境。镜像获取方式:docker pull qwenllm/qwen:cu117。
2024-02-26 09:10:36
2554
4
原创 【大模型】微调Qwen1.8B
使用地址数据微调Qwen1.8B。Qwen提供了预构建的Docker镜像,在使用时获取镜像只需安装驱动、下载模型文件即可启动Demo、部署OpenAI API以及进行微调。获取方式:docker pull qwenllm/qwen:cu117。
2024-02-21 11:26:08
3137
1
原创 【工程实践】使用flask、fastaip开启服务与调用
工作中,模型训练好之后,需要部署在云端供下游调用。云端部署服务时,可以选择使用FastAPI,也可以使用Flask,搭建过程大同小异,此文记录服务搭建过程。
2023-12-19 15:07:13
789
1
原创 【大模型】Prompt
Prompt就是“提示”的意思,通俗解释可以参考你画我猜游戏。如下图所示:提示词就作为Prompt,指导对方说出正确答案。而自然语言处理任务中的Prompt也有同样的效果,指导模型输出正确的答案。 Prompt刚刚出现的时候,还没有被叫做Prompt,是研究者们为了下游任务设计出来的一种输入形式或模板,它能够帮助PLM“回忆”起自己在预训练时“学习”到的东西,因此后来慢慢地被叫做Prompt了。 Prompt Learning是指对输入文本信息按照特定模板进行处理,把任务重构成一
2023-12-19 15:06:08
2871
1
原创 【深度学习】对比学习的损失函数
损失(Contrastive Learning Loss)是一种用于自监督学习的损失函数。它侧重于学习一个特征空间,其中相似的样本被拉近,而不相似的样本被推远。在二分类任务中,对比学习损失可以用来学习区分正负样本的特征表示。损失函数有多种,其中比较常用的一种是InfoNCE loss。InfoNCE Loss损失函数是基于的一个损失函数,是由NCE Loss损失函数演变而来。
2023-12-19 15:04:45
18517
1
原创 【深度学习】Sentence Embedding-BERT-Whitening
flow模型本身很弱,BERT-flow里边使用的flow模型更弱,所以flow模型不大可能在BERT-flow中发挥至关重要的作用。反过来想,那就是也许我们可以找到更简单直接的方法达到BERT-flow的效果。BERT-whitening则认为,flow模型中涉及到的逆变换和雅可比行列式计算实际需要满足变换简单、易计算的特点。因此每一层的非线性变换能力就“很弱”,为了保证充分的拟合能力,模型就必须堆得非常深。但实际上BERT-flow所使用的模型计算量并大。
2023-12-19 15:02:34
1432
原创 【深度学习】Sentece Embedding - SImCES
句子向量表示一直作为很多自然语言处理任务的基石,一直是NLP领域的热门话题,BERT-Flow以及BERT-whitenning其实像是后处理,将bert的输出进行一定的处理来解决各向异性的问题。而《Simple Contrastive Learning of Sentence Embeddings》,即「简单的对比句向量表征框架」,通过一种简单的去做句子嵌入。而且在可以不要监督数据的情况下,生成质量较好的句子向量。文章被收录在EMNLP2021。
2023-12-19 15:01:24
1532
原创 【工程实践】使用modelscope下载大模型文件
Modelscope(魔搭社区)是阿里达摩院的一款开源模型平台,里面提供了很多的热门模型供使用体验,其中的模型文件可以通过git clone 快速下载。并且为模型提供了Notebook的快速开发体验,使用阿里云服务,不需要额外部署机器进行模型的运行调试,即可自动在阿里云进行实例创建。
2023-12-08 11:18:56
5253
原创 【深度学习】Sentence Embedding-BERT-Flow
BERT等语言模型在多数NLP任务中取得优异的表现,但如果直接取BERT输出的句向量作表征,取得的效果甚至还不如Glove词向量。Bert-flow论文中指出,产生该现象的原因是BERT模型的各向异性过高,Transformer模型的输出中,高频词汇分布集中,低频词汇分布分散,整个向量空间类似于锥形结构。
2023-10-24 08:44:44
532
原创 【深度学习】对比学习
对比学习有的paper中称之为自监督学习[1],有的paper称之为无监督学习[2],自监督学习是无监督学习的一种形式,现有的文献中没有正式的对两者进行区分定义,这两种称呼都可以用。其常见的主要思想是模型能够更加重新的学习到编码器的特征:尽可能的缩小相似样本的距离,拉大正负样本的距离,这里可以理解为让聚类的界限更加明显。自监督学习(Self-supervised learning)可以避免对数据集进行大量的标签标注。
2023-09-13 15:55:33
1170
原创 【大模型】ChatGPT
本文主要介绍GPT模型的训练方法,包括预训练、监督微调、奖励建模和强化学习这四个阶段。不同微调模型具备不同特点,基础模型更富创造力,而强化学习微调后可获得最高质量的回复。在使用GPT的使用,可以利用提示工程技巧,比如提供充足上下文、引导模型步步思考等。当前模型依然存在各种局限,人类应谨慎而有效地将其应用于低风险的协作场景中,不能轻视其潜在风险。总体而言,本文系统地介绍了GPT训练的全流程和具体应用中的各种关键技巧。
2023-09-01 17:21:16
2922
3
原创 【工程实践】使用git clone 批量下载huggingface模型文件
经常需要下载模型到服务器,使用git clone方法可以快速实现模型下载。
2023-08-31 16:10:04
4889
原创 【深度学习】NLP中的对抗训练
在NLP中,对抗训练往往都是针对嵌入层(包括词嵌入,位置嵌入,segment嵌入等等)开展的,思想很简单,即针对嵌入层添加干扰,从而提高模型的鲁棒性和泛化能力,下面结合具体代码讲解一些NLP中常见对抗训练算法。
2023-08-14 15:49:32
1911
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人