BLCL的博客小馆

标签 · 算法📢📢📢 阿里云双十一,2核2G3M的服务器,99元一年,新老用户续费同享!!

首页

关于

归档

算法

RLHF-DQN

前言下面记录下DQN算法以及一些细节,注意哦,本博客更多目的在于当下记录,并非完整严谨的哦,也或许有理解错误。 关于DQN,看了下网上的介绍以及从Q-Learning到DQN解决state和action无法枚举完的情况。另外也强烈推荐下面链接: 知乎网友实现DQN:可直接按照这个跑通体验下效果。 PaddlePaddle/PARL:这个是paddle出的RLHF库,并提供了相应的examples帮助入门和深入,并且环境也帮忙解决好了,如果debug能力比较强的话,建议直接看这个哦。 PyTorch DQN实现:这个是pytorch官方实现的DQN算法。 一些特别的点1. 俺是value based的,所以不需要softmax看下面这个DQN网络,你觉得有问题么? 12345678910111213cl..

更多
算法

RLHF-policy_gradient

前言这个是RLHF系列中的策略梯度部分,在看了Hands-on-RL和parl两者实现后,感觉整体难度并不是很高,但是当自己从零实现时还是会莫名其妙多一些问题,相比深度学习来讲,还是有蛮多小细节是需要额外注意的。 注意点1. log平滑这里是指learn阶段中的获取最大期望阶段,如下代码所示: 12output = self.model(obs_bs)output = torch.log(output.gather(-1, action_bs.reshape(-1, 1))) 在最开始自己实现时,我没有加log进行平滑,发现模型没法收敛(CarPole-v0 reward最大得分为200),一直是8,9徘徊。后来我看了上述实现,发现这里多了个log,这里让我觉得很困惑,因为我觉得这一步是不必要的,原因有..

更多
算法

RHLF-DQN

前言下面记录下DQN算法以及一些细节,注意哦,本博客更多目的在于当下记录,并非完整严谨的哦,也或许有理解错误。 关于DQN,看了下网上的介绍以及从Q-Learning到DQN解决state和action无法枚举完的情况。另外也强烈推荐下面链接: 知乎网友实现DQN:可直接按照这个跑通体验下效果。 PaddlePaddle/PARL:这个是paddle出的RHLF库,并提供了相应的examples帮助入门和深入,并且环境也帮忙解决好了,如果debug能力比较强的话,建议直接看这个哦。 PyTorch DQN实现:这个是pytorch官方实现的DQN算法。 一些特别的点1. 俺是value based的,所以不需要softmax看下面这个DQN网络,你觉得有问题么? 12345678910111213cl..

更多
loading..
算法

LLM-RHLF工作原理一

前言大模型最近很是火啊,媒体铺天盖地的宣传,候选者简历中写到LLM微调等等。本文希望介绍下RHLF在整个训练工作中的位置以及起到的作用,方便理解与后续应用。 代码分析本文以huggingface trl/RHLF notebooks讲到的几个例子作为入口。在这个文件夹下,一共有三个例子: gpt2-sentiment.ipynb gpt2-sentiment-control.ipynb best_of_n.ipynb 同时也按照上述这三个文件顺序进行分析。 一、gpt2-sentiment.ipynb 目的:这个文件实现的是如何利用RHLF学会生成正向评论。 1. Load IMDB dataset数据集默认有两个字段,text 和label,即用户对一部电影的评论和这条评论的情感倾向(正向、..

更多
loading..
算法

qwen1.8B试玩

介绍阿里出了个qwen1.8B,对于资源有所要求的场景或者需要支持长文本的场景,应该是目前国内在这个量级内最优的选择了吧。接下来以此来打通微调、部署各个流程,算是一次记录。 微调首先按照要求和快速使用来跑起来,安装flash-attn,先跑下推理,正常,接下来就进入微调阶段。 按照微调流程,这里采用LoRA进行微调,但是需要注意的是,虽然官方给出了显存占用及训练速度,但是我在1080Ti上得到的显存占用还是要更高一些,大家可以将这个指标理解成为运行起来至少需要的显存,在进行训练时,还是会有一些增高。 训练的话采用finetune_lora_single_gpu.sh默认配置,幸亏我没有采用train,而是使用了dev数据集,7500条数据,8个多小时,,不过整个loss还是蛮正常的,没有出现issue里出..

更多
算法

ChatGLM微调记录

介绍以ChatGLM-6B ptuning提供的微调代码来进行测试,整体代码在此。 训练和推理训练就直接使用官方代码啦,推理也是滴,整体流程跑通都很顺畅,整体是采用quantization_bit=4,所以单卡(5~6G显存)就能跑的起来。 记录几个有意思的点。 1. p-tuning这个是众多Parameter Efficient fine-tune实现方式之一,其发展历程简单理解有两个阶段,一是人工构造template,二是机器自己学习一个template。 比如一开始做分类,例如“这个沙发怎么样”,那就在这句话前面(当然也可以放到后面)加上一个template,比如情感分析,这个沙发怎么样,你觉得这句话是正向还是负向:这个沙发怎么样,那训练时只对这个template进行微调,因为微调seq_len很..

更多
算法

lora原理与实现

介绍Lora,是微软出的一种在低资源场景下进行微调大模型的实现方式,在transformers里有peft这个包进行调用,它通过固定预训练模型权重并只训练新增lora层来实现微调,目前其在比如Baichuan2、ChatGLM上都有相关资料,更多介绍可自行搜索了解。 简单理解其简单理解实现方式为,比如qkv的linear为768*768(更大模型可能会更大),那lora通过新增两个linear(lora_A和lora_B),引入一个超参r来降低训练参数量,其伪代码如下: 1234567891011in_feature, out_feature = 768, 768# oldself.q = nn.Linear(in_feature, out_feature)# Loraself.lora_A = nn.L..

更多
loading..
算法

document-QA-layoutLMv2

介绍书接上文,layoutLM微调FUNSD数据集介绍了layoutlm和layoutxlm如何做named entity recognition,以及多模态-CLIP和多模态-字幕生成介绍多模态是如何融合的,本文继续基于layoutLM系列,基于huggingface document_question_answering来进行debug是如何实现的。 更新:针对layoutxlm在docvqa_zh上的训练代码已经放到document-qa啦。 原始数据在这之前,都是在介绍如何处理数据,也即如下代码: 123456789101112131415161718#from datasets import load_datasetdataset = load_dataset("nielsr/docvqa_12..

更多
loading..
算法

多模态-CLIP

问题多模态如何做融合,本文是对CLIP模型理解做个记录。 前提目前业界有中文开源版本的,例如Chinese-CLIP以及IDEA/Fengshenbang-LM太乙系列,本文采用Chinese-CLIP来梳理其流程。 数据集采用wukong-dataset,预训练模型使用chinese-clip-vit-base-patch16来进行实验。 流程1. 文本处理1234567891011121314import pandas as pdimport torchfrom PIL import Imagefrom datasets import Datasetfrom transformers import ChineseCLIPProcessor, ChineseCLIPModel, Trainer, Tra..

更多
算法

生成式模型相关记录

最近在做生成式模型的一些工作,至今算是能有些总结的了,趁着还有些能记住的地方,赶紧记录下来,后面想到了再补充。 前期调研1. 相关工作目前我们在做的算是业界独创的,搜了一圈,没有相关的工作,所以我把PaddleNLP中generation相关的任务给看了一遍,比如question_generation,用T5预训练模型或unimo-text项目,machine_translation中的transformer部分,对于大致的实现思路以及各自在解码时采用的策略都作了些了解,所以整理实现起来并不复杂。 2. 预训练模型选择这里反而是比较头疼和纠结的地方,从类型选择上有两大类:decoder和encoder-decoder。对于这部分在huggingface course上是怎么解释或者区分的呢,如果你用于文本..

更多
12345