一些RLHF的平替汇总
卷友们好,我是rumor。
众所周知,RLHF十分玄学且令人望而却步。我听过有的小道消息说提升很大,也有小道消息说效果不明显,究其根本还是系统链路太长自由度太高,不像SFT一样可以通过数据配比、prompt、有限的超参数来可控地调整效果。
但也正是因为它的自由度、以目标为导向的学习范式和性价比更高的标注成本,业内往往认为它会有更高的效果天花板。同时我最近看OpenAI的SuperAlignment计划感受颇深,非常坚定地认为scalable的RLHF(不局限于PPO)就是下一步的大突破所在。
所以我秉着不抛弃不放弃的决心,带大家梳理一下最近的RLHF平替工作,探索如何更稳定地拿到效果。
RLHF链路可以分为两个模块,RM和RL,这两个模块各有各的问题:
RM:对准确率和泛化性的要求都很高,不然很容易就被hack到(比如输出某个pattern就给高分)。但业内普遍标注数据的一致率只有70%左右,数据决定效果天花板,如何让RM代表大部分人的判断、且能区分出模型结果的细微差异,难难难。这也是RLHF方法没法规模化起来的主要瓶颈
RL:奖励太稀疏(最后一步才拿到句子分数,不像SFT一样有真实的token-level监督信号)、PPO超参数非常多,导致效果很不稳定
针对上述两个模块的问题,学术界大佬们各显神通,大概有以下几种解决方案:
没得商量,不做RL了,选择性保留RM:比如RRHF、DPO,这类方法可以直接在RM数据上优化语言模型,但如果想提升效果,需要用自身模型采样,得再引入一个RM,比如RSO、SCiL、PRO等。又或者直接用RM采样的数据做精调,比如RAFT、Llama2等
用其他RL算法:比如ReMax、Decision Transformer
下面我们就逐一盘盘这些方法以及他们给出的有用结论。
不做RL了
RRHF
RRHF: Rank Responses to Align Language Models with Human Feedback without tears
RRHF是阿里在今年年初(2023.04)发布的工作,它的做法是直接在RM数据山优化LM,让chosen回答的概率大于rejected回答的概率。
在具体实现上,就是计算句子的条件概率后加一个ranking loss:
但在实践中,作者发现只用ranking loss会把模型训崩溃,所以又加了SFT loss。从消融实验可以看到加了rank loss确实对模型效果有一些提升:
最终在HH数据集上,作者提出的RRHF平均得分略好于PPO(-1.02 vs -1.03),效果差距不是太大,但该方法主打一个便捷稳定。
同时作者也在实验中尝试了不同的数据采样策略:
直接用开源RM的数据
用自己的模型生成response,用开源RM进行排序,做出新的RM数据
循环执行2,类似强化的思维不断靠自身采样到更好的答案
最后的结论也比较符合直接,是3>2>1。
Preference Ranking Optimization for Human Alignment
后续阿里(非同作者)在2023.06又提出了一个PRO方法,核心思想跟RRHF接近,但有两个不同:
选用了更多负例,不止停留在pair-wise
给不同负例不同的惩罚项(比如分数差的多就拉大一些)
同时也加上了SFT loss,最终效果比RLHF和RRHF都有些提升。
DPO
Direct Preference Optimization:Your Language Model is Secretly a Reward Model
DPO是斯坦福在2023.05底提出的工作,主打一个硬核,直接从PPO公式推出了一个平替方案,虽然最终loss呈现的思想跟RRHF接近(chosen句子概率>rejected句子概率),但同时带有一个SFT模型的约束,可以保证在不加SFT loss的情况下训练不崩溃(个人猜测)。
作者在公开的几个RM数据集上都做了实验,可以发现DPO对超参数的敏感度更低,效果更稳定,且奖励得分优于RLHF。
同时,微软在2023.10月的一篇工作[1]上也对DPO做了进一步的探索。考虑到排序数据成本,他们直接默认GPT4 > ChatGPT > InstructGPT,实验后得到以下结论:
用DPO在 GPT4 vs InstructGPT 上训练的效果 > 直接在GPT-4数据精调的效果
先在简单的pair上训练后,再在困难的pair上训练会有更好的效果
RSO
Statistical rejection sampling improves preference optimization
上面介绍了两种ranking思想的loss,具体哪种更好一些呢?DeepMind在2023.09月份的一篇RSO[2]工作中进行了更系统的对比,得到了以下结论:
DPO(sigmoid-norm) loss效果略好,但更重要的是增加SFT约束,可以看表中没加约束的hinge loss效果很差,但加了约束后则能接近DPO
另外重要的还有采样策略,比如要优化模型A,最好用模型A生产的结果,去做pair标注,再训练A,比用模型B生产的数据训练A更好。这跟RRHF的结论也比较一致,更接近「强化」的思想
同时作者提出了另外一种RSO(Rejection Sampling Optimization)的采样方法,实验发现有2个点左右的提升。
Rejection Sampling + SFT
拒绝采样是一种针对复杂问题的采样策略[3],可以更高效地采样到合适的样本,进行复杂分布的估计。最近也有很多方法,利用RM进行拒绝采样,直接用采样出的数据对模型做SFT。
Llama 2: Open Foundation and Fine-Tuned Chat Models
LLama2就很好地使用了拒绝采样,先问问地训RM,再用RM筛选出当前模型最好的结果进行SFT。论文发出时他们一共把llama2-chat迭代了5轮,前4轮都是用的拒绝采样,只有最后一轮用了PPO,可以看到相比ChatGPT的胜率一直在提升:
不过从RLHF v5(no PPO)和RLHF v5(with PPO)来看,RL还是能有很大的效果收益。
这种方法还有很多变体可以探索,比如港大在2023.04提出的RAFT[4],就是选取多个样本进行后续精调。同时采样策略也可以进行一些优化,比如上面提到的RSO。
用其他RL算法
ReMax
ReMax: A Simple, Effective, and Efficient Reinforcement Learning Method for Aligning Large Language Models
ReMax是港中文在2023.10提出的工作,核心是对RLHF中RL阶段的PPO算法进行了简化。
强化的难点是怎么把多步之后的最终目标转化成模型loss,针对这个问题有不同解决方案,目前OpenAI所使用的RL策略叫PPO[5],是他们自己在2017年提出的一个经典RL算法(OpenAI早期真的做了很多强化的工作)。
但ReMax的作者认为,PPO并不适用于语言模型的场景:
可以快速拿到句子奖励:传统RL的长期奖励获取可能会比较昂贵,比如必须玩完一局游戏、拿起一个杯子,而RLHF在有了RM后可以快速拿到奖励
确定性的环境:传统RL中,环境也是变化的,同一个场景+动作可能拿到不同奖励,而在语言模型中,给定上下文和当前结果,下一步的状态也是确定的,RM打分也是确定的
上面两点在传统RL中会造成学习不稳定的问题,因此PPO使用了Actor-Critic网络,即引入一个「助教」来给模型的每一步打分,而作者认为在语言模型上可以省去。
因此,作者提出用强化中的REINFORCE算法来代替PPO,去掉了Critic模型,但作者在实验中同样发现了梯度方差较大优化不稳定的问题,于是增加了一项bias来降低方差,命名为ReMax算法。
由于资源受限,作者没跑通7B的PPO实验,只对比了1.3B的ReMax和PPO,效果显示ReMax更好一些:
除了效果提升之外,由于去掉了一个要训练的模型,在显存占用和训练速度上都有提升。
Offline RL: Decision Transformer
上面我们说的PPO、REINFORCE都是Online RL,需要一个虚拟环境,通过互动拿到奖励,再进行学习。相对的,Offline RL是指直接拿之前和环境互动的数据来学习。
Aligning Language Models with Offline Reinforcement Learning from Human Feedback
这篇是英伟达在2023.08提出的工作,探索了MLE、用reward做回归、DT(Decision Transformer)三种离线强化算法,最终发现DT的效果更好。
Decision Transformer是一个2021 RL Transformer的开山之作,但NLPer一看就懂:
它的核心思想是把奖励、状态作为输入,让模型预测动作,从而建模三者之间的关系。比如模型训练时见过1分的答案,也见过5分的,那预测时直接输入<reward>5.0
让它给出最好的结果。
这样训下来效果居然还不错,也超过了PPO:
SteerLM: Attribute Conditioned SFT as an (User-Steerable) Alternative to RLHF
没想到的是,英伟达不同团队在2023.10月又推出了一篇SteerLM的工作,与DT的思想类似,但会把奖励分为不同维度,比如质量、帮助性等等。
具体做法:
通过人工标注的各个维度打分,训练一个打分模型
用打分模型对更多数据打分
精调一个SFT模型,可以做到输入prompt、目标分数,输出符合分数的结果
用第三步的模型生产更多答案,再打分,如此循环
最终的效果也是好于RLHF(PPO哭晕在厕所):
总结
以上就是我最近关注的RLHF平替方法,虽然可走的路很多,但很难有一个可靠且全面的效果对比,毕竟RLHF本身就难训不稳定,几百条数据下波动几个点很正常,而且无论是自动测评还是人工测评都会带有bias。
但对于资源有限的团队来说,平替方案不失为一种选择。
参考资料
[1]
Contrastive Post-training Large Language Models on Data Curriculum: https://arxiv.org/abs/2310.02263
[2]Statistical rejection sampling improves preference optimization: https://arxiv.org/pdf/2309.06657.pdf
[3]理解Rejection Sampling: https://gaolei786.github.io/statistics/reject.html
[4]RAFT: Reward rAnked FineTuning for Generative Foundation Model Alignment: https://arxiv.org/abs/2304.06767
[5]PPO: https://arxiv.org/pdf/1707.06347.pdf
我是朋克又极客的AI算法小姐姐rumor
北航本硕,NLP算法工程师,谷歌开发者专家
欢迎关注我,带你学习带你肝
一起在人工智能时代旋转跳跃眨巴眼
「彩蛋:你能找到几个同厂不同组的相近工作」
相关文章:
一些RLHF的平替汇总
卷友们好,我是rumor。 众所周知,RLHF十分玄学且令人望而却步。我听过有的小道消息说提升很大,也有小道消息说效果不明显,究其根本还是系统链路太长自由度太高,不像SFT一样可以通过数据配比、prompt、有限的超参数来可控…...
7.docker部署前端vue项目,实现反向代理配置
介绍: 构建镜像:通过docker构建以nginx为基础的镜像,将vue项目生成的dist包拷贝至nginx目录下,.conf文件做反向代理配置;部署服务:docker stack启动部署服务; 通过执行两个脚本既可以实现构建…...
字符串函数详解
一.字母大小写转换函数. 1.1.tolower 结合cppreference.com 有以下结论: 1.头文件为#include <ctype.h> 2.使用规则为 #include <stdio.h> #include <ctype.h> int main() {char ch A;printf("%c\n",tolower(ch));//大写转换为小…...
Mybatis学习笔记-映射文件,标签,插件
目录 概述 mybatis做了什么 原生JDBC存在什么问题 MyBatis组成部分 Mybatis工作原理 mybatis和hibernate区别 使用mybatis(springboot) mybatis核心-sql映射文件 基础标签说明 1.namespace,命名空间 2.select,insert&a…...
【C++】模板初阶 【 深入浅出理解 模板 】
模板初阶 前言:泛型编程一、函数模板(一)函数模板概念(二)函数模板格式(三)函数模板的原理(四)函数模板的实例化(五)模板参数的匹配原则 三、类模…...
无需API开发,伯俊科技实现电商与客服系统的无缝集成
伯俊科技的无代码开发实现系统连接 自1999年成立以来,伯俊科技一直致力于为企业提供全渠道一盘货的服务。凭借其24年的深耕零售行业的经验,伯俊科技推出了一种无需API开发的方法,实现电商系统和客服系统的连接与集成。这种无代码开发的方式不…...
Python | 机器学习之逻辑回归
🌈个人主页:Sarapines Programmer🔥 系列专栏:《人工智能奇遇记》🔖少年有梦不应止于心动,更要付诸行动。 目录结构 1. 机器学习之逻辑回归概念 1.1 机器学习 1.2 逻辑回归 2. 逻辑回归 2.1 实验目的…...
手机,蓝牙开发板,TTL/USB模块,电脑四者之间的通讯
一,意图 通过手机蓝牙连接WeMosD1R32开发板,开发板又通过TTL转USB与电脑连接.手机通过蓝牙控制开发板上的LED灯的开,关,闪等动作,在电脑上打开串口监视工具观察其状态.也可以通过电脑上的串口监视工具来控制开发板上LED灯的动作,而在手机蓝牙监测工具中显示灯的状态. 二,原料…...
Springboot更新用户头像
人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端,做完整更新。但仔细想想,这种做法感觉有点二,而且浪费带宽。 于是patch诞生,只传一个userName到指定资源去,表示该请求是一个局部更新&#…...
Express.js 与 Nest.js对比
Express.js 与 Nest.js对比 自从 Node.js 发布以来,Javascript 在后端领域的使用有所增加。由于 Node.js 的使用越来越多,每天都会有新的框架和工具发布。Express 和 Nest 是使用 Node.js 创建后端应用程序的最著名的框架之一,在本文中&…...
总结 CNN 模型:将焦点转移到基于注意力的架构
一、说明 在计算机视觉时代,卷积神经网络(CNN)几十年来一直是主导范式。直到 2021 年 Vision Transformers (ViTs) 出现,这个领域才开始发生变化。现在,是时候采用受 Transformer 架构启发的基于注意力的模型了&#x…...
2023.11.16 hivesql高阶函数之开窗函数
目录 1.开窗函数的定义 2.数据准备 3.开窗函数之排序 需求:用三种排序方法查询学生的语文成绩排名,并降序显示 4.开窗函数分组 需求:按照科目来分类,使用三种排序方式来排序学生的成绩 5.聚合函数与分组配合使用 6.聚合函数同时和分组以及排序关键字配合使用 --需求1&…...
QTableWidget常用信号的功能
2023年11月18日,周六上午 itemPressed(QTableWidgetItem *item):当某个项目被按下时发出信号。itemClicked(QTableWidgetItem *item):当某个项目被单击时发出信号。itemDoubleClicked(QTableWidgetItem *item):当某个项目被双击时…...
Vue理解01
项目建立流程 项目文件夹终端vue ui可视化新建项目(需要一些时间)vscode打开项目npm run serve运行 架构理解: 首先打开的页面默认是index.htmlindex.html默认引用main.jsmain.js引用需要的页面,默认App.vue。Vue示例挂载可以在…...
4、FFmpeg命令行操作8
生成测试文件 找三个不同的视频每个视频截取10秒内容 ffmpeg -i 沙海02.mp4 -ss 00:05:00 -t 10 -codec copy 1.mp4 ffmpeg -i 复仇者联盟3.mp4 -ss 00:05:00 -t 10 -codec copy 2.mp4 ffmpeg -i 红海行动.mp4 -ss 00:05:00 -t 10 -codec copy 3.mp4 如果音视…...
【MySQL】索引与事务
作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&a…...
切换为root用户后,conda:未找到命令
问题:切换为root用户后,conda:未找到命令 结论详细用户切换配置路径 结论 问题:切换为root用户后,conda:未找到命令 (anaconda) 解决:在~/.bashrc配置里增加conda的路径 详细 用户切换 1 切…...
Qt退出界面
void Dialog::on_pushButton_clicked() {if(ui->lineEdit->text() "admin" && ui->lineEdit_2->text() "123"){accept();//退出} }...
【数据标注】Label Studio用于机器学习标注
原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、使用 Label Studio标注数据1.版本控制 二、Label Studio绑定机器学习后端三、重写机器学习后端四、通过api执行Label Studio动作 前言…...
py字符串转字符串数组
在Python中,你可以使用列表(list)来存储多个字符串。如果你有一个字符串,并且想要将其转换为字符串数组,你可以使用列表推导式(list comprehension)。这是一个简单的例子: # 原始字…...
强化学习各种符号含义解释
:状态 : 动作 : 奖励 : 奖励函数 : 非终结状态 : 全部状态,包括终结状态 : 动作集合 ℛ : 奖励集合 : 转移矩阵 : 离散时间步 : 回合内最终时间步 : 时间t的状态 : 时间t动作 : 时间t的奖励,通常为随机量,且由和决定 : 回报 : n步…...
Axure基础详解二十:中继器随机抽奖效果
效果演示 组件 一、中继器 建立一个“中继器”内部插入一个“正方形”,给“正方形”添加一个【样式效果】>>【选中状态】填充背景为红色,字体白色。在中继器表格中插入两列数据函数:【xuhao】(序号列,按12345……填写&…...
企业信息化与电子商务>供应链信息流
1.供应链信息流概念 供应链信息流是指整个供应链上信息的流动。它是一种虚拟形态,包括了供应链上的供需信息和管理信息,它伴随着物流的运作而不断产生。因此有效的供应链管理作为信息流的管理主要作用在于及时在供应链中传递需求和供给信息,…...
【Proteus仿真】【STM32单片机】防火防盗GSM智能家居设计
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用声光报警模块、LCD1602显示模块、DS18B20温度、烟雾传感器模块、按键模块、PCF8591 ADC模块、红外检测模块等。 主要功能: 系统运行…...
快速入门ESP32——开发环境配置PlatformIO IDE
相关文章 快速入门ESP32——开发环境配置Arduino IDE 快速入门ESP32——开发环境配置PlatformIO IDE 一、下载安装二、验证 一、下载安装 下载安装 vscode 安装PlatformIO插件 创建工程 二、验证 写一个简单的函数来验证一下功能 void setup() {// put your setup cod…...
Oxygen XML Editor 26版新功能
▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 2023年10月26日,罗马尼亚SyncRO Soft公司发布Oxygen XML Editor、Oxygen Web Author和Oxygen Publish Engine 26版本。 1. Oxygen XML Editor 26新功能简介 AI助手 帮助写作者通过执行重复任务、审查语法、生成结构…...
Pikachu漏洞练习平台之SSRF(服务器端请求伪造)
注意区分CSRF和SSRF: CSRF:跨站请求伪造攻击,由客户端发起; SSRF:是服务器端请求伪造,由服务器发起。 SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标…...
WPF异步编程
在WPF应用程序中进行异步编程是非常重要的,因为这有助于保持用户界面的响应性,特别是当执行长时间运行的操作时,例如访问网络资源、进行大量的数据处理或调用耗时的I/O操作。 WPF的异步编程通常围绕以下几个关键概念: Dispatcher…...
同态加密定义,四大发展阶段总结,FHE系统正式定义-全同态加密
目录 同态加密定义 为什么采用电路模型? 四大发展阶段 总结 FHE系统正式定义...
网上的搜索
Internet中蕴含的信息资源非常丰富,但如何在这浩瀚如海的信息空间内快速找到自己所需要的资源呢?我们需要借助于搜索引擎。在网络上,提供搜索功能的网站非常多,如百度、谷歌、搜狗等,另外有一些门户网站也提供了搜索功能…...
【算法-哈希表2】快乐数 和 两数之和
今天,带来哈希表相关算法的讲解。文中不足错漏之处望请斧正! 理论基础点这里 1. 快乐数 分析题意 出题者已经把题意明确告诉我们了: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&am…...
MR外包团队:MR、XR混合现实技术应用于游戏、培训,心理咨询、教育成为一种创新的各行业MR、XR形式!
随着VR、AR、XR、MR混合现实等技术逐渐应用于游戏开发、心理咨询、培训、教育各个领域,为教育、培训、心理咨询等行业带来了全新的可能性。MR、XR游戏开发、心理咨询是利用虚拟现实技术模拟真实场景,让学生身临其境地参与学习和体验,从而提高…...
【P1008 [NOIP1998 普及组] 三连击】
[NOIP1998 普及组] 三连击 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。 题目描述 将 1 , 2 , … , 9 1, 2, \ldots , 9 1,2,…,9 共 9 9 9 个数分成 3 3 3 组ÿ…...
机器学习算法——集成学习
目录 1. Bagging 1. Bagging Bagging(bootstrap aggregating:自举汇聚法)也叫装袋法,其思想是通过将许多相互独立的学习器的结果进行结合,从而提高整体学习器的泛化能力,是一种并行集成学习方法。 工作流…...
java springboot在当前测试类中添加临时属性 不影响application和其他范围
目前 我们的属性基本都写在 application.yml 里面了 但是 如果 我们只是想做一下临时变量的测试 有没有办法实现呢? 显然是有的 这里 我们还是先在application.yml中去写一个 test属性 下面加个prop 然后 我们尝试在测试类中 获取一下这个属性 直接用 Value 读取…...
原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!由于工作量大,准备整8个系列完事,-----系列5
文章目录 前言一、原始程序---计算原型,开始训练,计算损失二、每一行代码的详细解释2.1 粗略分析2.2 每一行代码详细分析 前言 承接系列4,此部分属于原型类中的计算原型,开始训练,计算损失函数。 一、原始程序—计算原…...
milvus数据库的数据管理-插入数据
一、插入数据 1.准备数据 数据必须与数据库中定义的字段元数据一致,与集合的模式匹配 import random data [[i for i in range(2000)],[str(i) for i in range(2000)],[i for i in range(10000, 12000)],[[random.random() for _ in range(2)] for _ in range(2…...
系列一、请谈谈你对JVM的理解?Java8的虚拟机有什么更新?
一、请谈谈你对JVM的理解?Java8的虚拟机有什么更新? JVM是Java虚拟机的意思。它是建立在操作系统之上的,由类加载器子系统、本地方法栈、Java栈、程序计数器、方法区、堆、本地方法库、本地方法接口、执行引擎组成。 (1࿰…...
恕我直言,大模型对齐可能无法解决安全问题,我们都被表象误导了
是否听说过“伪对齐”这一概念? 在大型语言模型(LLM)的评估中,研究者发现了一个引人注目的现象:当面对多项选择题和开放式问题时,模型的表现存在显著差异。这一差异根源在于模型对复杂概念的理解不够全面&…...
Apache Airflow (九) :Airflow Operators及案例之BashOperator及调度Shell命令及脚本
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…...
IJ中配置TortoiseSVN插件:
文章目录 一、报错情况:二、配置TortoiseSVN插件: 一、报错情况: 由于公司电脑加密,TortoiseSVN菜单没有提交和更新按钮,所以需要使用IJ的SVN进行代码相关操作 二、配置TortoiseSVN插件: 需要设置一个svn.…...
个人实现在线支付,一种另类的在线支付解决方案
Hi, I’m Shendi 个人实现在线支付,一种另类的在线支付解决方案 个人实现在线支付的方式 对于在线支付,最多的是接入微信与支付宝。但都需要营业执照,不适用于个人。 当然,可以去办理一个个体工商户,但对我这种小额收…...
浅谈智能安全配电装置应用在银行配电系统中
【摘要】银行是国家重点安全保护部分,关系到社会资金的稳定,也是消防重点单位。消防安全是银行工作的重要组成部分。在银行配电系统中应用智能安全配电装置,可以提高银行的智能控制水平,有效预防电气火灾。 【关键词】银行&#…...
macOS下如何使用Flask进行开发
👨🏻💻 热爱摄影的程序员 👨🏻🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻🏫 一位高冷无情的编码爱好者 大家好,我是全栈工…...
记一次服务器配置文件获取OSS
一、漏洞原因 由于网站登录口未做双因子校验,导致可以通过暴力破解获取管理员账号,成功进入系统;未对上传的格式和内容进行校验,可以任意文件上传获取服务器权限;由于服务器上配置信息,可以进一步获取数据库权限和OSS管理权限。二、漏洞成果 弱口令获取网站的管理员权限通…...
合众汽车选用风河Wind River Linux系统
导读合众新能源汽车股份有限公司近日选择了Wind River Linux 用于开发合众智能安全汽车平台。 合众智能安全汽车平台(Hozon Automo-tive Intelligent Security Vehicle Plat-form)是一个面向高性能服务网关及车辆控制调度的硬件与软件框架,将于2024年中开始投入量产…...
PTA平台-2023年软件设计综合实践_5(指针及引用)
第一题 6-1 调和平均 - C/C 指针及引用 函数hmean()用于计算整数x和y的调和平均数,结果应保存在指针r所指向的浮点数对象中。当xy等于0时,函数返回0表示无法计算,否则返回1。数学上,两个数x和y的调和平均数 z 2xy/(xy) 。 直接…...
智慧卫生间
智慧卫生间 获取ApiKey/SecretKey获取Access_token获取卫生间实时数据返回说明 获取ApiKey/SecretKey ApiKey/SecretKey采用 线下获取的方式,手动分配。 获取Access_token 向授权服务地址http://xxxxxx:12345/token(示意)发送post请求,并在data中带上…...
Cadence virtuoso drc lvs pex 无法输入
问题描述:在PEX中的PEX options中 Ground node name 无法输入内容。 在save runset的时候也出现无法输入名称的情况 解决办法: copy一个.bashrc文件到自己的工作目录下 打开.bashrc文件 在.bashrc中加一行代码:unset XMODIFIERS 在终端sour…...
反序列化漏洞(2), 分析调用链, 编写POC
反序列化漏洞(2), 反序列化调用链分析 一, 编写php漏洞脚本 http://192.168.112.200/security/unserial/ustest.php <?php class Tiger{public $string;protected $var;public function __toString(){return $this->string;}public function boss($value){eval($valu…...