AgileBoot是笔者在业余时间基于ruoyi改造优化的前后端全栈项目。
学习一个项目首先的第一步就是把项目给run起来。 为了便于大家把项目Run起来~ 写个启动说明
请确保您的机子上安装好了JDK,Docker,npm。 什么?? 你还没有安装? 没事下面有几个安装小教程。
手把手 Mysql Docker 安装
比如你想把docker内的Mysql数据,存在你的宿主机的话,需要在你宿主机创建一个目录。
假设你的工作目录是 D:/workspace 那就创建一个 D:/workspace/mysql/data 目录。
注意上面的 D:/workspace/mysql/data 将作为启动docker的命名参数。
docker pull mysql:版本号
docker pull mysql:8
docker run -d -v D:/workspace/mysql/data:/var/lib/mysql -it --name mysql8 -p 33067:3306 -e MYSQL_ROOT_PASSWORD=12345 mysql:8 --default-authentication-plugin=mysql_native_password
注意 以上
docker exec -it mysql8 /bin/bash
mysql -uroot- p
填入我们刚才的初始密码 12345
由于Mysql8出于安全考虑 默认不允许外部连接直接访问。所以需要打开权限。
use mysql
alter 'root'@'%' identified with mysql_native_password by '12345';
flush privileges;
drop database if exists agileboot
;
create database agileboot
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
navicat直接导入 后端项目中sql文件夹下的数据库脚本 agileboot_xxxxxx.sql文件
或者mysql命令打开agileboot库,复制脚本文件内容直接执行即可。
手把手 Redis Docker 安装
docker pull redis:版本号
docker pull redis:7-alpine
如果版本号过期的话,可以置空,会拉取最新的镜像,下面的启动命令可以去除掉 : 7-alpine
注意 以上
git clone https://github.com/valarchie/AgileBoot-Back-End
找到 AgileBooAdminApplication 直接点击run
注意:AgileBoo ApiApplication 是开放API使用的启动类,如果不需要开放API给客户端调用,不需要启动该类。
出现以下字样即启动成功。
____ _ _ __ _ _
/ ___| | |_ __ _ _ __ | |_ _ _ _ __ ___ _ _ ___ ___ ___ ___ ___ / _| _ _ | || |
\___ \ | __|/ _` || '__|| __| | | | || '_ \ / __|| | | | / __|/ __|/ _ \/ __|/ __|| |_ | | | || || |
___) || |_| (_| || | | |_ | |_| || |_) | \__ \| |_| || (__| (__| __/\__ \\__ \| _|| |_| || ||_|
|____/ \__|\__,_||_| \__| \__,_|| .__/ |___/ \__,_| \___|\___|\___||___/|___/|_| \__,_||_|(_)
|_|
git clone https://github.com/valarchie/AgileBoot-Front-End
安装依赖
npm install
启动项目
npm run dev
出现以下字样即启动成功
vite v2.6.14 dev server running at:
> Local: http://127.0.0.1:80/
ready in 7167ms.
如果遇到什么启动问题的话,请大家留言评论。
交流群:1398880
Original: https://www.cnblogs.com/valarchie/p/16787097.html
Author: CoderV的进阶笔记
Title: AgileBoot – 手把手一步一步带你Run起全栈项目(SpringBoot+Vue3)
相关阅读
Title: ChatGPT:探索RLHF与GPT的完美结合
前言
ChatGPT已经发布一周了热度依旧不减,ChatGPT也各种大显神通,为各大网友”出谋划策”,有写周报的,有写绩效的甚至还有写论文的,作为一个NLP从业者,除了好好体验下其中的乐趣,其背后的原理当然也要有所了解,本文就从其技术细节为大家一一揭开奥秘。
ChatGPT的前世
ChatGPT出来之前,相信大家体验过很多智能问答机器人,大部分的评价都是”人工智障”,而ChatGPT则给人一种忽如一夜春风来,千树万树梨花开的感觉,怎么AI突然变得如此智能!实际上,ChatGPT的成功源自于2年前的GPT3+后期的RLHF优化,所以说

接下来我们就先简单回顾下GPT3,GPT3是一个基于transformer decoder的生成模型,其参数规模达到了 1750亿,并且使用45TB数据进行训练,其预训练任务就是”句子接龙”,给定前文持续预测下一个字,因此只要有干净的文本数据就能作为模型的训练数据。虽然任务简单,但由于模型规模大数据量大,训练成本达到了数千万美元,在模型训练过程中还有一个小插曲,研究人员发现了代码中有一个小bug,但因为训练成本昂贵并未修复这个bug。
GPT3首次把模型的规模带到了千亿级别,开辟了大模型赛道,其次也为NLP带来了一种新的范式prompt,prompt为GPT3带来了0样本、小样本的学习能力,也为BERT base级别的模型带来了一些新的玩法。

GPT3在AI圈内掀起了很大的浪花,但是并未出圈,其关键原因在于其存在严重的弱点
- 可能会产生偏见,因为它是基于现有数据训练的,如果有任何偏见存在于训练数据中,那么它的结果也会受到影响。
- 模型的训练和使用过程中存在安全漏洞,因为它会存储用户数据,而且它的使用还可能导致机器不可控。

这些问题被统一称为misalignment,随着语言模型的规模越来越大,模型的输出很难满足用户的需求,并且对于生成模型来说,如果要生成不同的答案就涉及到采样算法,那这对于生成的内容来说就更难控制了,那么怎么解决这个问题呢?接下来我们就来看看ChatGPT是怎么做到的。
; 管得住嘴的ChatGPT
在ChatGPT面世前OpenAI还出过一篇paper:Training language models to follow instructions with human feedback,一看这标题就能感觉到肯定少不了人工打标,这篇paper提出了对于GPT3的改进称为InstructGPT,InstructGPT的目标就是要解决GPT3″管不住嘴”的问题,其解决方案叫做RLHF,其包含3个步骤

1、Collect demonstration data, and train a supervised policy
GPT3面世后,OpenAI提供了api,付费后即可集成到自己的项目中,用户使用的时候直接采用 prompt的方法做0样本或小样本的预测,这个过程让OpenAI收集到了大量的prompt数据,研究人员从这些prompt中采样一部分,人工对这些prompt做回答,得到的结果称为demonstration即有标签数据,再用这些demonstration继续fine-tuning GPT3,这个过程称为supervised fine-tuning (SFT)。GPT3的预训练阶段使用的是网上海量的数据,这些数据的质量鱼龙混杂,监督学习的目的就是让模型能生成更多符合人类预期的答案,从而尽可能避免生成一些有害的信息。
2、Collect comparison data, and train a reward model
但是监督学习毕竟需要标注大量数据,OpenAI在怎么有钱也不能这么造呀,于是乎OpenAI想了个办法,搞个模型来判断GPT3输出的有没有问题。于是在有了SFT模型后,继续采样prompt,让SFT模型输出多个不同的output,人工对output做排序,把这个结果拿去训练一个RM(reward model),这个模型和SFT结果一样,只是size小一些,paper中提到6B级别的模型比175B级别的模型更加稳定。注意这里的output是一个zero mean的,这样RM模型只要输出一个大于0的值那么就认为GPT3生成的内容是OK的。

最后看下loss function,其中 r θ r_{\theta}r θ表示的是RM,x x x表示的是用户输入的内容,y y y表示不同的答案,注意这里有一个组合数( K 2 ) \binom{K}{2}(2 K ) 训练的时候要把同一个组合数中的内容放到一个batch内,不然会出现过拟合的情况,K通常取4到9之间的一个值,可以看到这其实就是一个pairwise模型。
; 3、Optimize a policy against the reward model using PPO
有了RM,下一步我们就可以用RM的输出结果来反哺SFT模型了,其思路是采用RM的输出值作为reward,基于 RL的思路进行优化,
- policy:给GPT输入文本后输出结果的过程
- action:词典
-
observation:输出文本
-
objective function:一共包含三项,其中r θ r_{\theta}r θ是RM的输出分数,第二项是KL惩罚项,目的是为了让 RL模型的输出结果和SFT模型的输出结果差距不要太大,第三项则是为了保证RL模型能保留好语言模型的能力,整个模型称为PPO-ptx。有了这样的一个模型框架后 ,有新的prompt模型就能做到持续的自迭代。
有多少人工才有多少智能
在RLHF的优化过程中其实存在很多的标注任务,OpenAI把标注这个过程看的其实非常的重,他们组建了一个40人的外包标注团队,并且基于以下标准 对标注人员做了一个严格的筛选:
- 确保标注人员对信息敏感,OpenAI首先准备了一份自己标注的数据,这些数据包含一些敏感信息,需要标注人员的标注结果和OpenAI认为的敏感信息是尽可能一致的。
- 排序阶段的标注需要和OpenAI研究人员标注的排序尽可能一致
- OpenAI构建了一些敏感prompt,让标注人员编写demonstration,研究人员对每个demonstration给一个1-7分的Likert scale(李克特量表),并针对标注人员计算平均分数。
- 询问标注人员对于哪些话题或者文化群体更能识别出敏感话题
基于以上4个标准OpenAI筛选出了个标注团队,可见只有高质量的数据才能给模型带来质的提升。
最后看看整体的效果,基于PPO-ptx的模型效果提升明显,特别是6B规模的模型效果出色。

; 思考
ChatGPT火了之后,大家都在讨论能否把ChatGPT应用到自己的业务中或者能否把RL应用到业务中减少些人力标注成本,这里也说说我自己对这两个问题的想法。
- ChatGPT规模比较大,想直接落地难度还是很高的,仅仅算力就已经挡住了大部分人,但是从上文的效果图中也能看到,6B规模的模型在RLHF的思路下效果也是不错的,所以如果真的想朝着这个方向去落地,可以考虑下6B规模的模型,目前抱抱脸也有很多同规模大小的开源语言模型可以尝试下,不过RLHF的标注成本也不低能否承受也需要提前考虑清楚。
- RL真的适合应用在NLP应用中码?我觉得还是要看场景,在ChatGPT中RL其实解决的是misalignment问题,GPT3本身已经具备了较强的生成能力,只是说容易”胡言乱语”,RL的任务只是纠正GPT3的这个缺点,并且RM的上限决定了GPT3能把这个缺点改进多少。所以说RL也不是万能的,在我看来ChatGPT使用RL更多是为了尽可能节约人工标注成本。
ChatGPT应该只是OpenAI的压轴戏,让我们一起期待23年初的GPT4能带给我们带来怎样的惊喜。
Original: https://blog.csdn.net/u012526436/article/details/128319103
Author: 爱编程真是太好了
Title: ChatGPT:探索RLHF与GPT的完美结合
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/363622/
转载文章受原作者版权保护。转载请注明原作者出处!