当前位置: 首页 > news >正文

DPO算法推导

DPO

  • 核心思想:直接使用偏好数据进行策略优化,省去 reward 模型策略优化。

  • 技术背景知识:

    首先给定prompt x,生成两个答案 ( y 1 , y 2 ) Π S F T ( y ∣ x ) (y_1,y_2)~\Pi^{SFT}(y|x) (y1,y2) ΠSFT(yx) ,并通过人工标注对比 y 1 , y 2 y_1,y_2 y1,y2 ,获得偏好结果(preference) y w ≻ y l ∣ x y_w\succ y_l|x ywylx,其中 w w w l l l表示winlose

    引入奖励模型 r r r , y 1 > y 2 y_1 > y_2 y1>y2 的概率可以表示为
    p ( y 1 > y 2 ) = r ∗ ( x , y 1 ) r ∗ ( x , y 1 ) + r ∗ ( x , y 2 ) p(y_1 > y_2) = \frac{r^*(x,y_1)}{r^*(x,y_1)+ r^*(x,y_2)} p(y1>y2)=r(x,y1)+r(x,y2)r(x,y1)
    为使得奖励函数均为正数,引入Bradley-Terry 模型。

    • Bradley-Terry
      p ∗ ( y w ≻ y l ∣ x ) = e x p ( r ∗ ( x , y 1 ) ) e x p ( r ∗ ( x , y 1 ) ) + e x p ( r ∗ ( x , y 2 ) ) p^{*}(y_w\succ y_l|x) = \frac{exp(r^*(x,y_1))}{exp(r^*(x,y_1))+ exp(r^*(x,y_2))} p(ywylx)=exp(r(x,y1))+exp(r(x,y2))exp(r(x,y1))
      交叉熵:

      a x = e x p ( r ∗ ( x , y 1 ) ) a_x = exp(r^*(x,y_1)) ax=exp(r(x,y1)), a y = e x p ( r ∗ ( x , y 2 ) ) a_y = exp(r^*(x,y_2)) ay=exp(r(x,y2))
      L o s s = − E ( a x , a y ) ∼ D [ l n a x a x + a y ] = − E ( x , y w , y l ) ∼ D [ l n e x p ( r ∗ ( x , y w ) ) e x p ( r ∗ ( x , y w ) ) + e x p ( r ∗ ( x , y l ) ) ] = − E ( x , y w , y l ) ∼ D [ l n 1 1 + e x p ( r ∗ ( x , y l ) − r ∗ ( x , y w ) ) ] = − E ( x , y w , y l ) ∼ D [ l n σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) ] Loss = -E_{(a_x,a_y)\sim D}[ln\frac{a_x}{a_x+a_y}] \\ = - E_{(x,y_w,y_l)\sim D}[ln\frac{exp(r^*(x,y_w))}{exp(r^*(x,y_w))+exp(r^*(x,y_l))}] \\ = - E_{(x,y_w,y_l)\sim D}[ln\frac{1}{1+exp(r^*(x,y_l)-r^*(x,y_w))}] \\ = - E_{(x,y_w,y_l)\sim D}[ln \sigma(r^*(x,y_w) -r^*(x,y_l))] \\ Loss=E(ax,ay)D[lnax+ayax]=E(x,yw,yl)D[lnexp(r(x,yw))+exp(r(x,yl))exp(r(x,yw))]=E(x,yw,yl)D[ln1+exp(r(x,yl)r(x,yw))1]=E(x,yw,yl)D[l(r(x,yw)r(x,yl))]

    • KL 散度:
      K L ( P ∣ ∣ Q ) = ∑ x ∈ X P ( X ) l o g ( P ( X ) Q ( X ) ) KL(P||Q) = \sum_{x\in X}P(X)log(\frac{P(X)}{Q(X)}) KL(P∣∣Q)=xXP(X)log(Q(X)P(X))
      P ( x ) , Q ( x ) P(x),Q(x) P(x),Q(x) 分别是数据真实分布和模型预测分布。

  • DPO 目标函数:获取更多的奖励,并尽可能保证与基准模型一致。
    m a x π E x ∈ X , y ∈ π [ r ( x , y ) ] − β ⋅ D K L [ π ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] = m a x π E x ∈ X , y ∈ π [ r ( x , y ) ] − E x ∈ X , y ∈ π [ β ⋅ l o g π ( y ∣ x ) π r e f ( y ∣ x ) ] = m a x π E x ∈ X , y ∈ π [ r ( x , y ) − β ⋅ l o g π ( y ∣ x ) π r e f ( y ∣ x ) ] = m a x π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π r e f ( y ∣ x ) − 1 β r ( x , y ) ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π r e f ( y ∣ x ) − l o g e x p ( 1 β r ( x , y ) ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) 1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) − l o g Z ( x ) ] \underset{\pi}{max} E_{x\in X, y \in \pi}[r(x,y)] - \beta·\mathbb{D}_{KL}[\pi(y|x) || \pi_{ref}(y|x)] \\ = \underset{\pi}{max} E_{x\in X, y \in \pi}[r(x,y)] - E_{x\in X, y \in \pi}[\beta·log \frac{\pi(y|x)}{\pi_{ref}(y|x)}] \\ = \underset{\pi}{max} E_{x\in X, y \in \pi}[r(x,y) - \beta·log \frac{\pi(y|x)}{\pi_{ref}(y|x)}] \\ = \underset{\pi}{max} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi_{ref}(y|x)}- \frac{1}{\beta}r(x,y))] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi_{ref}(y|x)}- log \ \ exp(\frac{1}{\beta}r(x,y))] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))} ] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))} - log \ \ Z(x) ] \\ πmaxExX,yπ[r(x,y)]βDKL[π(yx)∣∣πref(yx)]=πmaxExX,yπ[r(x,y)]ExX,yπ[βlogπref(yx)π(yx)]=πmaxExX,yπ[r(x,y)βlogπref(yx)π(yx)]=πmaxExX,yπ[logπref(yx)π(yx)β1r(x,y))]=πminExX,yπ[logπref(yx)π(yx)log  exp(β1r(x,y))]=πminExX,yπ[logπref(yx)exp(β1r(x,y))π(yx)]=πminExX,yπ[logZ(x)1πref(yx)exp(β1r(x,y))π(yx)log  Z(x)]
    Z ( x ) Z(x) Z(x) 表示如下:
    Z ( x ) = ∑ y π r e f ( y ∣ x ) e x p ( 1 β r ( x , y ) ) Z(x) = \underset{y}{\sum} \pi_{ref}(y|x) exp(\frac{1}{\beta}r(x,y) ) Z(x)=yπref(yx)exp(β1r(x,y))
    令:
    1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) = π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) ∑ y π r e f ( y ∣ x ) e x p ( 1 β r ( x , y ) ) = π ∗ ( y ∣ x ) \frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y)) = \frac{\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))}{\underset{y}{\sum} \pi_{ref}(y|x) exp(\frac{1}{\beta}r(x,y) )} \\ = \pi^*(y|x) Z(x)1πref(yx)exp(β1r(x,y))=yπref(yx)exp(β1r(x,y))πref(yx)exp(β1r(x,y))=π(yx)
    接下来继续对``dpo` 目标函数进行化简:
    m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) 1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) − l o g Z ( x ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π ∗ ( y ∣ x ) − l o g Z ( x ) ] \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))} - log \ \ Z(x) ] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi^*(y|x)} - log \ \ Z(x) ] \\ πminExX,yπ[logZ(x)1πref(yx)exp(β1r(x,y))π(yx)log  Z(x)]=πminExX,yπ[logπ(yx)π(yx)log  Z(x)]
    由于 Z ( x ) Z(x) Z(x) 表达式与 π \pi π 不相关,优化可以直接省去。
    m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π ∗ ( y ∣ x ) − l o g Z ( x ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π ∗ ( y ∣ x ) ] = m i n π E x ∼ D [ D K L ( π ( y ∣ x ) ∣ ∣ π ∗ ( y ∣ x ) ) ] \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi^*(y|x)} - log \ \ Z(x) ] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi^*(y|x)} ] \\ = \underset{\pi}{min} E_{x \sim D}[\mathbb{D}_{KL}(\pi(y|x) || \pi^*(y|x))] \\ πminExX,yπ[logπ(yx)π(yx)log  Z(x)]=πminExX,yπ[logπ(yx)π(yx)]=πminExD[DKL(π(yx)∣∣π(yx))]
    当 目标函数最小化,也就是 D K L \mathbb{D}_{KL} DKL 最小化,所满足的条件为:
    π ( y ∣ x ) = π ∗ ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) \pi(y|x) = \pi^*(y|x) = \frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y)) π(yx)=π(yx)=Z(x)1πref(yx)exp(β1r(x,y))
    反解奖励函数 r ( x , y ) r(x,y) r(x,y)
    r ( x , y ) = β π ( y ∣ x ) π r e f ( y ∣ x ) + β ⋅ l n Z ( x ) r(x,y) = \beta \frac{\pi(y|x)}{\pi_{ref}(y|x)} + \beta · ln \Z(x) r(x,y)=βπref(yx)π(yx)+βlnZ(x)

求解奖励函数隐式表达后,带入Bradley-Terry 交叉熵函数:
L o s s = − E ( x , y w , y l ) ∼ D [ l n σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) ] = − E ( x , y w , y l ) ∼ D [ l n σ ( β l o g π ( y w ∣ x ) π r e f ( y w ∣ x ) − β l o g π ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] Loss = - E_{(x,y_w,y_l)\sim D}[ln \sigma(r^*(x,y_w) -r^*(x,y_l))] \\ =- E_{(x,y_w,y_l)\sim D}[ln \sigma(\beta log\frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} - \beta log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)})] Loss=E(x,yw,yl)D[l(r(x,yw)r(x,yl))]=E(x,yw,yl)D[l(βlogπref(ywx)π(ywx)βlogπref(ylx)π(ylx))]
到此,整个数学部分已推导完毕,不得不说句牛逼plus。

  • 梯度表征:

    将上述损失进行梯度求导
    ∇ θ L o s s ( π θ ; π r e f ) = − E ( x , y w , y l ) ∼ D [ β σ ( β l o g π ( y w ∣ x ) π r e f ( y w ∣ x ) − β l o g π ( y l ∣ x ) π r e f ( y l ∣ x ) ) [ ∇ θ l o g π ( y w ∣ x ) − ∇ θ l o g π ( y l ∣ x ) ] ] \nabla_\theta Loss(\pi_{\theta};\pi_{ref}) = - E_{(x,y_w,y_l)\sim D}[\beta \sigma(\beta log\frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} - \beta log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)}) [\nabla_{\theta}log \pi(y_w|x) - \nabla_{\theta}log \pi(y_l|x) ]] θLoss(πθ;πref)=E(x,yw,yl)D[βσ(βlogπref(ywx)π(ywx)βlogπref(ylx)π(ylx))[θlogπ(ywx)θlogπ(ylx)]]
    再令:
    r ^ ( x , y ) = β π θ ( y ∣ x ) π r e f ( y ∣ x ) \hat{r}(x,y) = \beta \frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)} r^(x,y)=βπref(yx)πθ(yx)
    最终形式:
    ∇ θ L o s s ( π θ ; π r e f ) = − β E ( x , y w , y l ) ∼ D [ σ ( r ^ ∗ ( x , y w ) − r ^ ∗ ( x , y l ) ) ⏟ h i g h e r w e i g h t w h e n r e w a r d e s t i m a t e i s w r o n g [ ∇ θ l o g π ( y w ∣ x ) ⏟ i n c r e a s e l i k e l i h o o d o f y w − ∇ θ l o g π ( y l ∣ x ) ⏟ d e c r e a s e l i k e l i h o o d o f y l ] ] \nabla_\theta Loss(\pi_{\theta};\pi_{ref}) = -\beta E_{(x,y_w,y_l)\sim D}[\underbrace{\sigma(\hat{r}^*(x,y_w) -\hat{r}^*(x,y_l))}_{higher\ weight\ when\ reward\ estimate\ is\ wrong} [\underbrace{\nabla_{\theta}log \pi(y_w|x)}_{\ \ \ \ \ \ \ \ \ increase \ likelihood\ of\ y_w} - \underbrace{\nabla_{\theta}log \pi(y_l|x)}_{decrease \ likelihood \ of \ y_l} ]] θLoss(πθ;πref)=βE(x,yw,yl)D[higher weight when reward estimate is wrong σ(r^(x,yw)r^(x,yl))[         increase likelihood of yw θlogπ(ywx)decrease likelihood of yl θlogπ(ylx)]]

  • 改进方法ODPO

    dpo缺陷主要是:采用Bradley–Terry model只给出了一个response比另一个response好的概率,而没有告诉我们好的程度。

odpo 核心思想: 把这个好的程度的差距信息引入到偏好的建模里,应该能带来收益,及在dpo损失里添加margin , 这相当于要求偏好回应的评估分数要比非偏好回应的评估分数大,且要大offset值这么多。目的是:加大对靠得比较近的数据对的惩罚力度。
L o s s o d p o = − E ( x , y w , y l ) ∼ D [ l n σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) − δ r ] δ r = α l o g ( r ( y w ) − r ( y l ) ) Loss^{odpo}= - E_{(x,y_w,y_l)\sim D}[ln \sigma(r^*(x,y_w) -r^*(x,y_l)) - \delta_r] \\ \delta_r = \alpha \ log(r(y_w)- r(y_l)) Lossodpo=E(x,yw,yl)D[l(r(x,yw)r(x,yl))δr]δr=α log(r(yw)r(yl))

  • 相似改进方法:

    IPO KTO 都是不需要奖励模型的;

相关文章:

DPO算法推导

DPO 核心思想:直接使用偏好数据进行策略优化,省去 reward 模型策略优化。 技术背景知识: 首先给定prompt x,生成两个答案 ( y 1 , y 2 ) Π S F T ( y ∣ x ) (y_1,y_2)~\Pi^{SFT}(y|x) (y1​,y2​) ΠSFT(y∣x) ,并通…...

Qt源码分析:窗体绘制与响应

作为一套开源跨平台的UI代码库,窗体绘制与响应自然是最为基本的功能。在前面的博文中,已就Qt中的元对象系统(反射机制)、事件循环等基础内容进行了分析,并捎带阐述了窗体响应相关的内容。因此,本文着重分析Qt中窗体绘制相关的内容…...

docker 安装 禅道

docker pull hub.zentao.net/app/zentao:20.1.1 sudo docker network create --subnet172.172.172.0/24 zentaonet 使用 8087端口号访问 使用禅道mysql 映射到3307 sudo docker run \ --name zentao2 \ -p 8087:80 \ -p 3307:3306 \ --networkzentaonet \ --ip 172.172.172.…...

【简要说说】make 增量编译的原理

make 增量编译的原理 make是一个工具,它可以根据依赖关系和时间戳来自动执行编译命令。 当您修改了源代码文件后,make会检查它们的修改时间是否比目标文件(如可执行文件或目标文件)新,如果是,就会重新编译…...

DETRs Beat YOLOs on Real-time Object Detection论文翻译

cvpr 2024 论文名称 DETRs在实时目标检测上击败YOLO 地址 https://arxiv.longhoe.net/abs/2304.08069 代码 https://github.com/lyuwenyu/RT-DETR 目录 摘要 1介绍 2.相关工作 2.1实时目标探测器 2.2.端到端物体探测器 3.检测器的端到端速度 3.1.NMS分析 3.2.端到端速度…...

SpringBoot 多数据源配置

目录 一. 引入maven依赖包 二. 配置yml 三、创建 xml 分组文件 四、切换数据源 一. 引入maven依赖包 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1&…...

RK3568驱动指南|第十六篇 SPI-第192章 mcp2515驱动编写:完善write和read函数

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…...

#BI建模与数仓建模有什么区别?指标体系由谁来搭建?

问题1&#xff1a; 指标体系是我们数仓来搭建还是分析师来做&#xff0c;如何去推动&#xff1f; 问题2&#xff1a;BI建模与数仓建模有什么区别&#xff1f; 指标体系要想做好&#xff0c;其实是分两块内容的&#xff0c;一块是顶层设计阶段&#xff0c;业务指标体系的搭建&am…...

如何用Python实现三维可视化?

Python拥有很多优秀的三维图像可视化工具&#xff0c;主要基于图形处理库WebGL、OpenGL或者VTK。 这些工具主要用于大规模空间标量数据、向量场数据、张量场数据等等的可视化&#xff0c;实际运用场景主要在海洋大气建模、飞机模型设计、桥梁设计、电磁场分析等等。 本文简单…...

chrome.storage.local.set 未生效

之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …...

泛微开发修炼之旅--30 linux-Ecology服务器运维脚本

文章链接&#xff1a;30 linux-ecology服务器运维脚本...

LeetCode 全排列

思路&#xff1a;这是一道暴力搜索问题&#xff0c;我们需要列出答案的所有可能组合。 题目给我们一个数组&#xff0c;我们很容易想到的做法是将数组中的元素进行排列&#xff0c;如何区分已选中和未选中的元素&#xff0c;容易想到的是建立一个标记数组&#xff0c;已经选中的…...

python实现支付宝异步回调验签

说明 python实现支付宝异步回调验签&#xff0c;示例中使用Django框架。 此方案使用了支付宝的pythonSDK&#xff0c;请一定装最新版本的&#xff0c;支付宝官网文档不知道多久没更新了&#xff0c;之前的版本pip安装会报一些c库不存在的错误&#xff1b; pip install alipay-…...

注意!Vue.js 或 Nuxt.js 中请停止使用.value

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 当您在代码中使用.value时,必须每次都检查变量是否存在并且是引用。 这可能很麻烦,因为在运行时使用.value可能会导致错误。然而,有一个简单的解决方法,即使用unref()而不是.value。 unref()会检查变量是否是引用,并自…...

Java:JDK、JRE和JVM 三者关系

文章目录 一、JDK是什么二、JRE是什么三、JDK、JRE和JVM的关系 一、JDK是什么 JDK&#xff08;Java Development Kit&#xff09;&#xff1a;Java开发工具包 JRE&#xff1a;Java运行时环境开发工具&#xff1a;javac&#xff08;编译工具&#xff09;、java&#xff08;运行…...

Radio专业术语笔记

在收音机的 RDS (Radio Data System) 功能中&#xff0c;CT 代表 “Clock Time”。RDS 是一种数字广播标准&#xff0c;用于在调频广播中传输辅助数据&#xff0c;如电台名称、节目类型、交通信息等。CT 功能是其中的一部分&#xff0c;用于同步和显示广播电台发送的当前时间。…...

cocosCreator找出未用到的图片

最近整理项目的时候发现有些资源文件夹有点轮乱(一些历史原因导致的),而且有很多图片都是没用了的,但是没有被删除掉,还一直放在项目中,导致项目的资源文件夹比较大,而且还冗余。于是今天想着整理一下。 公开免费链接 找出未使用的图片 有好几种方法可以找出未使用的图片…...

一览 Anoma 上的有趣应用概念

撰文&#xff1a;Tia&#xff0c;Techub News 本文来源香港Web3媒体&#xff1a;Techub News Anoma 的目标是为应用提供通用的意图机器接口&#xff0c;这意味着使用 Anoma&#xff0c;开发人员可以根据意图和分布式意图机编写应用&#xff0c;而不是根据事务和特定状态机进行…...

Spring Boot集成fastjson2快速入门Demo

1.什么是fastjson2&#xff1f; fastjson2是阿里巴巴开发的一个高性能的Java JSON处理库&#xff0c;它支持将Java对象转换成JSON格式&#xff0c;同时也支持将JSON字符串解析成Java对象。本文将介绍fastjson2的常见用法&#xff0c;包括JSON对象、JSON数组的创建、取值、遍历…...

Three.js机器人与星系动态场景(二):强化三维空间认识

在上篇博客中介绍了如何快速利用react搭建three.js平台&#xff0c;并实现3D模型的可视化。本文将在上一篇的基础上强化坐标系的概念。引入AxesHelper辅助工具及文本绘制工具&#xff0c;带你快速理解camer、坐标系、position、可视区域。 Three.js机器人与星系动态场景&#x…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...