LLM-RLHF工作原理一
前言大模型最近很是火啊,媒体铺天盖地的宣传,候选者简历中写LLM微调等等。本文希望以huggingface trl/RLHF notebooks讲到的几个例子作为入口,介绍下RLHF在整个训练工作中的位置以及起到的作用,方便理解与后续应用。 代码分析在huggingface trl/RLHF notebooks这个文件夹下,一共有三个例子: gpt2-sentiment.ipynb gpt2-sentiment-control.ipynb best_of_n.ipynb 同时也按照上述这三个文件顺序进行分析。 一、gpt2-sentiment.ipynb 目的:这个文件实现的是如何利用RLHF学会生成正向评论。 1. Load IMDB dataset数据集默认有两个字段,text 和labe..
更多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..
更多一日一技:如何强迫LLama3用中文回复?
最近大家都在说LLama3如何如何强大,追赶Claude3,超过GPT 4。但如果大家真的使用过,就会发现它连基本的中文都回答不好。如下图所示:LLama3总是尽可能回复英文,并且还会加很多表情符号。今天网上出现了一个中文微调版的LLama3:shenzhi-wang/Llama3-8B-Chinese-Chat,我也下载下来使用了,发现确实回复都是中文了,但回复的都是车轱辘话,一句话反复说。如下图所示:那么有没有什么办法,能够让LLama3既能回复中文,又能回复得聪明一些呢?网上有一段“生气的老奶奶”Prompt,可以尽可能让LLama3满足要求:123456问题Rules:- Be precise, do not reply emoji.- Always response in Simplified ..
更多山特UPS控制群晖关机
Foreword 山特的UPS给ESXi用了,就一路串口,只能二选一,但是同时群晖NAS也需要对应关机,还好winpower里也给出来了网络关机接口 群晖开启SSH 默认群晖是未开启SSH,同时root是不允许ssh登录的 先使用默认账号登录进去 切换到root sudo -i 可能要输入密码,再次输入管理员密码即可 修改root密码 synouser --setpw root 新密码 修改ssh,允许root登录 vi /etc/ssh/sshd_config 然后重启一下ssh即可,面板上去掉勾应用,再勾上ssh就重启了,此时root就可以正常登录了 winpower winpower中使用SSH进行远程关机(shutdown -h now),输入ip和账..
更多Foreword 单个ChatGPT Plus 账号共享合租,各自会话独立分割,就好像一个人使用一样,方便给一个组织或者多人使用。 CWS 源于chatgpt-web-share项目,适用于个人、组织或团队的 ChatGPT 共享方案。共享一个 ChatGPT Plus 账号给多人使用,提供完善的管理和限制功能。 https://github.com/chatpire/chatgpt-web-share 部署 新建目录 cd ~ mkdir cws && cd cws mkdir -p data/config 配置初始密码 export MONGODB_PASSWORD=password # MongoDB 密码 export INITIAL_ADMIN_PA..
更多Spring Boot 启动流程分析
想来用了这么久的 Spring Boot,但一直没仔细了解它是怎么启动的。那既然想起来了,不如趁热打铁,从它的入口开始,深入看看 Spring Boot 在启动时都做了些什么。 启动入口入口这部分就没啥说的,跟个 Hello world 差不多,一个 main 方法执行 SpringApplication#run 来启动整个 Spring Boot 应用。 123456@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }} @Sprin..
更多一日一技:2秒抓取网页并转换为markdown
在《一日一技:自动提取任意信息的通用爬虫》这篇文章中,我提到可以通过大模型从网页内容里面提取结构化信息。为了节省Token,文章里面我直接提取了页面上的所有文本。这种方式需要自己写代码来过滤HTML中的垃圾标签。并且提取出来的文本可能会混在一起。虽然大模型在很大程度上不会受到标点符号的影响。但如果有办法把网页直接转换为Markdown的话,大模型在解析时就能更加准确。现在,你不需要写任何代码就可以实现这个目标!假设我们需要抓取我的这篇知乎专栏文章:小问题,大隐患:如何正确设置 Python 项目的入口文件?。我们知道知乎是有反爬虫的,直接抓取并不容易。怎么样在2秒内抓取这篇文章,并转换为Markdown呢?非常简单,你只需要在url前面加上https://r.jina.ai/并回车就可以了。完整的URL变..
更多多人游戏网络技术基础
前言很久不更新Blog了,是自己懈怠了很多,所以在思考了一下之后明白,我需要继续加强学习 加入ubisoft之后其实也没做什么值得称道的事儿 只是一个基础的开发人员,不过工作当中有一些可以被记录和梳理的地方 我也会更新到Blog当中 我会把学习捡起来的,我会的。 开发多人游戏需要了解的概念首先,开发多人游戏会涉及到非常多的网络概念和机制,所以这里会梳理所有相关的网络机制 梳理这些的原因,是将知识进一步拆分,免得掉入庞大的知识深渊,也可以帮助我们去定点学习 在梳理完这些知识之后,我会根据每个技术单独写Blog(虽然已经开了很多坑了) Server 和 Client这个其实比较简单,因为无论是游戏,还是普通的web开发,或者是基础的网络操作,都离不开server和client Server游戏的服务器,存储所..
更多