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

LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding

TL;DR

  • 2024 年 Meta FAIR 提出了 LayerSkip,这是一种端到端的解决方案,用于加速大语言模型(LLMs)的推理过程

Paper name

LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding

Paper Reading Note

Paper URL:

  • https://arxiv.org/pdf/2404.16710

Code URL:

  • https://github.com/facebookresearch/LayerSkip

Introduction

背景

  • 将 LLM 进一步加速部署至移动或边缘设备仍是研究热点。当前多数加速方案聚焦于减少非零权重数量(即稀疏化)、降低权重位宽(即量化)或削减每层注意力头数量(即头剪枝),仅有少量研究关注层数缩减。
  • 本文探索通过在推理过程中提前退出来减少每 token 所需层数。与量化或稀疏化不同,层数缩减无需专用硬件或软件内核支持。

本文方案

  • 提出了 LayerSkip,这是一种端到端的解决方案,用于加速大语言模型(LLMs)的推理过程

    • 在训练过程中,采用了分层的 dropout 策略:对前面的 Transformer 层使用较低的 dropout 率,而对后面的层使用较高的 dropout 率,并引入了一种“早退出损失”(early exit loss),使所有 Transformer 层共享同一个退出点(exit point)
    • 在推理阶段,展示了这种训练策略能够提高在较前层中提前退出的准确性,而且无需向模型中添加任何辅助层或模块
    • 提出了一种新颖的自推测解码(self-speculative decoding)方法:在早期层进行输出预测,并利用模型后续的层对其进行验证和修正。提出的自推测解码方法相比其他推测解码方法具有更小的内存占用,并能从草案生成(drafting)和验证(verification)阶段之间的计算与激活值共享中受益。
  • 实验显示该方案在不同任务上可实现1.34×至2.16×加速
    在这里插入图片描述

Methods

出发点

  • 以 HumanEval 编程数据集的首个提示为例,分析 Llama1 7B 模型各层行为(图2a)。当生成每个 token 时,通过将各 transformer 层的输出嵌入投影到语言模型头(含最终层归一化与线性层),经 softmax 获取预测 token。图 2b 显示:早期层预测常与最终结果无关,后期层预测逐渐收敛;多数 token 在到达最终层前已能正确预测;中间层存在预测反复现象(如 Token 05在 7 层预测 “range”,22-26 层改变主意后又回归)。统计显示平均每个 token 仅需 23.45 层(总 32 层),表明即使有完美预测器,最多节省 26% 计算量。因此一般不会提前退出。如图 2b 所示,即使是简单 token(如开启 for 循环的 Token 02)也需要全部 32 层来预测 “for”。本文提出在训练中采用分层丢弃策略——对深层施加更高丢弃率,使模型更依赖浅层特征。
    在这里插入图片描述
  • 过早退出的校正机制
    • 无论是基于启发式规则还是改进训练流程,早期退出都可能降低准确率。理想方案应能验证早期预测的正确性,必要时通过执行剩余层进行校正。受推测解码技术启发,本文提出自推测解码:用早期退出机制自回归生成 token,用剩余层并行验证校正 token 组。该方法的优势在于验证 token 组的速度快于自回归生成。

4.1.1 层丢弃(Layer Dropout)

我们对常见的训练策略所做的第一个修改是引入层丢弃。因而,第  l l l 层在训练迭代  t t t 时的Transformer层操作变为:

x l + 1 , t = x l , t + M ( p l , t ) f l ( x l , t ) ( 1 ) x_{l+1,t} = x_{l,t} + M(p_{l,t})f_l(x_{l,t}) \quad (1) xl+1,t=xl,t+M(pl,t)fl(xl,t)(1)

其中, p l , t p_{l,t} pl,t 是第  l l l 层在第  t t t 次迭代的丢弃率, M ( p ) M(p) M(p) 是伯努利函数,以概率  p p p 返回 0,以概率  1 − p 1 - p 1p 返回 1。我们对批次中的每个样本分别应用丢弃操作:从批次中移除被丢弃的样本,对剩余样本应用 Transformer 操作 f l f_l fl,然后将输出与被丢弃的样本拼接起来。

为了在训练中实现更高的加速效果,我们为每个 GPU 使用相同的随机种子,这样每次迭代中每层 Transformer 将丢弃相同数量的样本。

丢弃率可以在每层  l l l 和每次迭代  t t t 中变化,定义如下:

p l , t = S ( t ) D ( l ) p max ( 2 ) p_{l,t} = S(t) D(l) p_{\text{max}} \quad (2) pl,t=S(t)D(l)pmax(2)

其中 p max p_{\text{max}} pmax 是训练期间模型中最大丢弃率的超参数, D ( l ) D(l) D(l) 是每层的缩放函数, S ( t ) S(t) S(t) 是每时间步的缩放函数。

我们发现最佳的每层缩放方式是让丢弃率在各层中指数增加,从第 0 层的 0.0 增加到第 L − 1 L-1 L1 层的 1.0:

D ( l ) = e l ln ⁡ 2 / ( L − 1 ) − 1 e ln ⁡ 2 − 1 ( 3 ) D(l) = \frac{e^{l \ln 2 / (L - 1)} - 1}{e^{\ln 2} - 1} \quad (3) D(l)=eln21elln2/(L1)1(3)

对于时间上的缩放 S ( t ) S(t) S(t),我们发现当从预训练模型进行持续预训练或微调时,最好不对时间进行缩放,即设 S ( t ) = 1 S(t) = 1 S(t)=1。但如果是从头开始预训练,我们发现使用指数式课程(Exponential Curriculum) S exp ( t ) S_{\text{exp}}(t) Sexp(t) 能带来最好的精度表现:

S exp ( t ) = e t ln ⁡ 2 / T − 1 e ln ⁡ 2 − 1 ( 4 ) S_{\text{exp}}(t) = \frac{e^{t \ln 2 / T} - 1}{e^{\ln 2} - 1} \quad (4) Sexp(t)=eln21etln2/T1(4)

4.1.2 提前退出损失(Early Exit Loss)

为了提升模型低层的预测能力,我们需要确保语言建模头(LM head) g g g 能够解嵌(unembed)来自不同层的输出。因此,在训练中,我们在层丢弃的基础上引入了每层的提前退出损失(Early Exit Loss)。

我们在训练时直接监督每层与 LM head 的连接,从而使较低层也能参与语言建模任务。模型在迭代 t t t 时的总损失如下:

J ( X , Y , t ) = ∑ l = 0 L − 1 e ~ ( t , l ) ⋅ J CE ( g ( x l + 1 ) , Y ) ( 5 ) J(X, Y, t) = \sum_{l=0}^{L-1} \tilde{e}(t, l) \cdot J_{\text{CE}}(g(x_{l+1}), Y) \quad (5) J(X,Y,t)=l=0L1e~(t,l)JCE(g(xl+1),Y)(5)

其中 e ~ ( t , l ) \tilde{e}(t, l) e~(t,l) 是每层的归一化损失权重,其总和为 1:

e ~ ( t , l ) = C ( t , l ) e ( l ) ∑ i = 0 L − 1 C ( t , i ) e ( i ) ( 6 ) \tilde{e}(t, l) = \frac{C(t, l) e(l)}{\sum_{i=0}^{L-1} C(t, i) e(i)} \quad (6) e~(t,l)=i=0L1C(t,i)e(i)C(t,l)e(l)(6)

C ( t , l ) C(t, l) C(t,l) 是一个二值课程函数,控制第 l l l 层在第 t t t 次迭代时是否启用提前退出。我们参考 Elbayad 等人(2020)的工作,设定逐层增加的缩放因子,使得后层的惩罚更大(因为后层更容易预测):

e ( l ) = { e scale ∑ i = 0 l i , 如果  0 ≤ l < L − 1 L − 1 + e scale ∑ i = 0 L − 2 i , 如果  l = L − 1 e(l) = \begin{cases} e_{\text{scale}} \sum_{i=0}^{l} i, & \text{如果 } 0 \leq l < L - 1 \\ L - 1 + e_{\text{scale}} \sum_{i=0}^{L-2} i, & \text{如果 } l = L - 1 \end{cases} e(l)={escalei=0li,L1+escalei=0L2i,如果 0l<L1如果 l=L1

其中 0 ≤ e scale ≤ 1 0 \leq e_{\text{scale}} \leq 1 0escale1 是控制提前退出损失比例的超参数。注意,我们并未像 Elbayad et al.(2020)或 Schuster et al.(2022)那样为每层添加额外的 LM head,而是使用相同的 LM head。

提前退出损失课程(Curriculum):我们发现,在所有迭代中为所有层添加提前退出损失会减慢训练速度并降低最终层的准确率。为此,我们引入课程函数 C ( t , l ) C(t, l) C(t,l),并尝试了两种策略:

  1. 旋转式提前退出课程(Rotational Curriculum) C rot , R C_{\text{rot}, R} Crot,R:每 R R R 层启用一次提前退出,并在每次迭代中循环轮换,从而每层每 R R R 次迭代被启用一次。这样每次只进行 ⌈ L / R ⌉ \lceil L / R \rceil L/R 次解嵌操作。
  2. 逐步式提前退出课程(Gradual Curriculum) C grad C_{\text{grad}} Cgrad:从第 L − 1 L-1 L1 层向第 0 层逐步启用,每隔 T / 2 L T / 2L T/2L 次迭代启用一层。

总结一下,我们的训练策略包含以下超参数:

  • Layer Dropout:
    • p max p_{\text{max}} pmax:最后一层的最大丢弃率;
    • S ( t ) S(t) S(t):层丢弃课程,finetuning/持续预训练用 S ( t ) = 1 S(t)=1 S(t)=1,从头预训练用 S ( t ) = S exp ( t ) S(t)=S_{\text{exp}}(t) S(t)=Sexp(t)
  • Early Exit Loss:
    • e scale e_{\text{scale}} escale:控制早期层损失的缩放;
    • C ( t , l ) C(t, l) C(t,l):提前退出课程,选择 C rot , R ( t , l ) C_{\text{rot}, R}(t, l) Crot,R(t,l) C grad ( t , l ) C_{\text{grad}}(t, l) Cgrad(t,l)
    • R R R:在旋转课程中控制每多少层启用一次提前退出。

4.2 使用提前退出进行推理

在自回归解码时生成每个 token,我们只运行前 E E E 层 Transformer,并跳转到模型的 LM head,即模型的最终输出为 g ( x E ) g(x_E) g(xE)。我们尝试了不同的 E E E 值,并在“结果”部分提供准确率分析。
在这里插入图片描述

4.3 使用自我猜测解码(Self-Speculative Decoding)进行推理

我们通过引入层丢弃与提前退出损失,在训练时使得模型能够在推理时提前退出,从而加快生成速度,但这会带来准确率下降的问题。传统猜测式解码(Speculative Decoding,Leviathan 等人 2023;Chen 等人 2023)可以用一个较快但不那么精确的模型进行初步生成,再由完整模型验证,从而在不牺牲精度的情况下提升速度。但这通常需要两个模型,增加了内存和训练开销。

我们提出了一种自我猜测解码算法,在提前退出的基础上构建,仅使用一个模型,同时通过复用隐藏状态,在“草稿”和“验证”步骤中减少延迟。

在这里插入图片描述

该方法如图5所示,包含两个关键步骤:

  1. 自我草稿(Self-Drafting):使用提前退出从模型中生成草稿 token;
  2. 自我验证(Self-Verification):使用剩余层验证草稿 token 的预测。

为实现两阶段中的状态重用,我们设计了新的缓存复用机制,将 KV 缓存和退出层的查询信息合并。算法的详细说明见 §4.3.1 和 §4.3.2,伪代码见附录 A.4。

4.3.1 自我草稿

自我猜测解码的第一步是定义草稿 token 集 D 0 , . . . , D d − 1 D_0, ..., D_{d-1} D0,...,Dd1。我们通过提前退出计算前 d d d 个草稿 token, d d d 被称为“猜测数”。我们利用模型的前 E E E 层进行自回归推理,生成草稿。

由于训练中采用了提前退出策略,模型本身就相当于在各个深度层训练了多个候选草稿子模型。我们可以在不同层退出,从而在延迟和准确率之间进行权衡。

4.3.2 自我验证

接下来是验证阶段。我们用完整模型对每个草稿 token 执行一次前向传播,预测下一个 token。我们比较草稿和验证结果的匹配情况,保留直到首次不匹配的所有草稿 token,再加上第一个验证 token,然后继续生成。

在我们提出的自我猜测解码中,验证阶段只需要计算草稿未使用的后 L − E L - E LE 层。为重用前 E E E 层,我们在 KV 缓存上做了一些调整,见下文。

4.3.3 缓存复用(Reusing the Cache)

在自回归 Transformer 中,KV 缓存是高效生成的关键组件,它避免了每层重复计算。

由于草稿阶段使用了模型的前 E E E 层,验证阶段使用后 L − E L - E LE 层,我们在两个阶段之间可以大量重用计算:

  • 单一 KV 缓存:草稿和验证阶段都使用同一个模型且顺序一致,因此草稿阶段计算出的前 E E E 层的 KV 缓存可以直接用于验证阶段,从而减少内存和延迟。
  • 退出查询缓存(Exit Query Cache):我们还引入“退出查询缓存”,保存第 E − 1 E - 1 E1 层的查询向量,使验证阶段能直接从第 E E E 层开始。这只需保存一个查询向量。我们将 KV 缓存与退出查询的组合称为 KVQ 缓存

Experiments

  • 评估了不同模型配置在各层提前退出时的准确性,与 Touvron 等人(2023b)提出的基线模型对比。整体来看,在早期层,LayerSkip 明显优于基线模型。在最后一层准确率上,LayerSkip 的下降极小
    在这里插入图片描述

  • 各模型最后一层和中间层的具体准确率
    在这里插入图片描述

Conclusion

  • 仅使用部分层的尝试,能有效提升训练和推理速度
  • 速度提升在 1.86x 左右,还是比较明显的
  • 对于从头预训练,LayerDropout 有助于加快训练速度

相关文章:

LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding

TL;DR 2024 年 Meta FAIR 提出了 LayerSkip&#xff0c;这是一种端到端的解决方案&#xff0c;用于加速大语言模型&#xff08;LLMs&#xff09;的推理过程 Paper name LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding Paper Reading Note Paper…...

fastapi和flaskapi有什么区别

FastAPI 和 Flask 都是 Python 的 Web 框架&#xff0c;但设计目标和功能特性有显著差异。以下是它们的核心区别&#xff1a; 1. ‌性能与异步支持‌ ‌FastAPI‌ 基于 ‌Starlette‌&#xff08;高性能异步框架&#xff09;和 ‌Pydantic‌&#xff08;数据校验库&#xff09;…...

在 JMeter 中使用 BeanShell 获取 HTTP 请求体中的 JSON 数据

在 JMeter 中&#xff0c;您可以使用 BeanShell 处理器来获取 HTTP 请求体中的 JSON 数据。以下是几种方法&#xff1a; 方法一&#xff1a;使用前置处理器获取请求体 如果您需要在发送请求前访问请求体&#xff1a; 添加一个 BeanShell PreProcessor 到您的 HTTP 请求采样器…...

Go 1.25为什么要废除核心类型

​​​​​​​关于核心类型为什么要1.25里要移除&#xff0c;作者Robert在博客Goodbye core types - Hello Go as we know and love it!​​​​​​​里给了详细耐心的解答。 背景&#xff1a;Go 1.18 引入了泛型&#xff08;generics&#xff09;&#xff0c;带来了类型参数…...

flask中的Response 如何使用?

在 Flask 中&#xff0c;Response 对象用于生成 HTTP 响应并返回给客户端。以下是其常见用法及示例&#xff1a; 1. 直接返回字符串或 HTML 视图函数返回的字符串会被自动包装为 Response 对象&#xff0c;默认状态码为 200&#xff0c;内容类型为 text/html&#xff1a; app…...

基于SpringAI实现简易聊天对话

简介 本文旨在记录学习和实践 Spring AI Alibaba 提供的 ChatClient 组件的过程。ChatClient 是 Spring AI 中用于与大语言模型&#xff08;LLM&#xff09;进行交互的高级 API&#xff0c;它通过流畅&#xff08;Fluent&#xff09;的编程接口&#xff0c;极大地简化了构建聊天…...

STM32单片机入门学习——第49节: [15-2] 读写内部FLASH读取芯片ID

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.29 STM32开发板学习——第49节: [15-2] 读写内部FLASH&读取芯片ID 前言开发板说…...

第14讲:科研图表的导出与排版艺术——高质量 PDF、TIFF 输出与投稿规范全攻略!

目录 📘 前言:导出,不只是“保存”! 🎯 一、你需要掌握的导出目标 🖼️ 二、TIFF / PNG 导出规范(适用于投稿) 🧲 三、PDF 矢量图导出(排版首选) 🧩 四、强烈推荐组合:showtext + Cairo 🧷 五、多个图的组合导出技巧 🧪 六、特殊投稿需求处理 �…...

SRIO IP调试问题记录(ready信号不拉高情况)

问题&#xff1a;调试过程中遇到有时写入数据后数据不发送&#xff0c;并且ready信号在写入一定数据后一直拉低的情况&#xff08;偶发&#xff0c;不是每次必然出现&#xff09;。buf空间设置为16时&#xff0c;写入15包数据&#xff0c;写完第16包包头后&#xff0c;ready信号…...

使用DDR4控制器实现多通道数据读写(十)

一、本章概述 本章节对目前单通道的读写功能进项测试&#xff0c;主要验证读写的数据是否正确&#xff0c;并观察该工程可以存储的最大容量。通过空满信号进行读写测试&#xff0c;根据ila抓取fifo和ddr4全部满的时刻&#xff0c;可以观察到最大容量。再通过debug逻辑可以测试读…...

从 BERT 到 GPT:Encoder 的 “全局视野” 如何喂饱 Decoder 的 “逐词纠结”

当 Encoder 学会 “左顾右盼”&#xff1a;Decoder 如何凭 “单向记忆” 生成丝滑文本&#xff1f; 目录 当 Encoder 学会 “左顾右盼”&#xff1a;Decoder 如何凭 “单向记忆” 生成丝滑文本&#xff1f;引言一、Encoder vs Decoder&#xff1a;核心功能与基础架构对比1.1 本…...

探寻软件稳定性的奥秘

在软件开发的广袤领域中&#xff0c;软件的稳定性宛如基石&#xff0c;支撑着整个软件系统的运行与发展。《发布&#xff01;软件的设计与部署》这本书的第一部分&#xff0c;对软件稳定性进行了深入且全面的剖析&#xff0c;为软件开发人员、架构师以及相关从业者们提供了极具…...

Reverse-WP记录9

前言 之前写的&#xff0c;一直没发&#xff0c;留个记录吧&#xff0c;万一哪天记录掉了起码在csdn有个念想 1.easyre1 32位无壳elf文件 shiftF12进入字符串&#xff0c;发现一串数字&#xff0c;双击进入 进入main函数 int __cdecl main(int argc, const char **argv, const…...

日常开发小Tips:后端返回带颜色的字段给前端

一般来说&#xff0c;展示给用户的字体格式&#xff0c;都是由前端控制&#xff0c;展现给用户&#xff1b; 但是当要表示某些字段的数据为异常数据&#xff0c;或者将一些关键信息以不同颜色的形式呈现给用户时&#xff0c;而前端又不好判断&#xff0c;那么就可以由后端来控…...

partition_pdf 和chunk_by_title 的区别

from unstructured.partition.pdf import partition_pdf from unstructured.chunking.title import chunk_by_titlepartition_pdf 和 chunk_by_title 初看有点像&#xff0c;都在"分块"&#xff0c;但是它们的本质完全不一样。 先看它们核心区别 partition_pdfchun…...

JAVA-使用Apache POI导出数据到Excel,并把每条数据的图片打包成zip附件项

最近项目要实现一个功能&#xff0c;就是在导出报表的时候 &#xff0c;要把每条数据的所有图片都要打包成zip附件在excel里一起导出。 1. 添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>…...

前端——CSS1

一&#xff0c;概述 CSS&#xff08;Cascading Style Sheets&#xff09;&#xff08;级联样式表&#xff09; css是一种样式表语言&#xff0c;为html标签修饰定义外观&#xff0c;分工不同 涉及&#xff1a;对网页的文字、背景、宽、高、布局进行修饰 分为内嵌样式表&…...

《AI大模型应知应会100篇》【精华】第40篇:长文本处理技巧:克服大模型的上下文长度限制

[精华]第40篇&#xff1a;长文本处理技巧&#xff1a;克服大模型的上下文长度限制 摘要 在大语言模型应用中处理超出其上下文窗口长度的长文本是一项挑战。本文面向初学者介绍长文本处理的常见难题&#xff0c;以及一系列有效策略和技巧&#xff0c;包括如何对文档进行合理分…...

开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验(一)

一、前言 阿里云最新推出的 Qwen3-8B 大语言模型,作为国内首个集成“快思考”与“慢思考”能力的混合推理模型,凭借其 80 亿参数规模及 128K 超长上下文支持,正在重塑 AI 应用边界。该模型既可通过轻量化“快思考”实现低算力秒级响应,也能在复杂任务中激活深度推理模式,以…...

千问3(Qwen3)模型开源以及初体验

体验地址&#xff1a;百炼控制台 1 千问3模型&#xff1a;全球最强开源大模型震撼发布 2025年4月29日&#xff0c;阿里巴巴正式开源了新一代通义千问模型Qwen3&#xff08;简称千问3&#xff09;&#xff0c;这一里程碑式的事件标志着中国开源大模型首次登顶全球性能榜首。千问…...

对 FormCalc 语言支持较好的 PDF 编辑软件综述

FormCalc是一种专为PDF表单计算设计的脚本语言&#xff0c;主要应用于Adobe生态及SAP相关工具。以下是对FormCalc支持较好的主流软件及其特点&#xff1a; 1. Adobe LiveCycle Designer 作为FormCalc的原生开发环境&#xff0c;LiveCycle Designer提供最佳支持&#xff1a; …...

20250429-李彦宏口中的MCP:AI时代的“万能接口“

目录 一、什么是MCP&#xff1f; 二、为什么需要MCP&#xff1f; 三、MCP的工作原理 3.1 核心架构 3.2 工作流程 四、MCP的应用场景 4.1 开发者工具集成 4.2 智能助手增强 4.3 企业应用集成 4.4 典型案例 五、MCP的技术特点 5.1 标准化接口 5.2 可扩展性设计 5.…...

汽车启动原理是什么?

好的&#xff01;同学们&#xff0c;今天我们来讨论汽车的启动原理&#xff0c;重点分析其中的动力来源和摩擦力作用。我会结合物理概念&#xff0c;用尽量直观的方式讲解。 1. 汽车为什么会动&#xff1f;——动力的来源 汽车发动机&#xff08;内燃机或电动机&#xff09;工…...

LeetCode[347]前K个高频元素

思路&#xff1a; 使用小顶堆&#xff0c;最小的元素都出去了&#xff0c;省的就是大&#xff0c;高频的元素了&#xff0c;所以要维护一个小顶堆&#xff0c;使用map存元素高频变化&#xff0c;map存堆里&#xff0c;然后输出堆的东西就行了 代码&#xff1a; class Solution…...

《软件测试52讲》学习笔记:如何设计一个“好的“测试用例?

引言 在软件测试领域&#xff0c;设计高质量的测试用例是保证软件质量的关键。本文基于茹炳晟老师在《软件测试52讲》中关于测试用例设计的讲解&#xff0c;结合个人学习心得&#xff0c;系统总结如何设计一个"好的"测试用例。 一、什么是"好的"测试用例…...

【深度学习新浪潮】ISP芯片算法技术简介及关键技术分析

ISP芯片及其功能概述 ISP(Image Signal Processor)芯片作为现代影像系统的核心组件,负责对图像传感器输出的原始信号进行后期处理。ISP的主要功能包括线性纠正、噪声去除、坏点修复、色彩校正以及白平衡调整等,这些处理步骤对于提高图像质量和视觉效果至关重要。随着科技的…...

QtCreator Kits构建套件报错(红色、黄色感叹号)

鼠标移动上去&#xff0c;查看具体报错提示。 一.VS2022Qt5.14.2(MSVC2017) 环境VS2022Qt5.14.2(MSVC2017) 错误&#xff1a;Compilers produce code for different ABIs&#xff1a;x86-windows-msvc2005-pe-64bit&#xff0c;x86-windows-msvc2005-pe-32bit 错误&#xff1…...

天能资管(SkyAi):全球布局,领航资管新纪元

在全球化浪潮汹涌澎湃的今天,资管行业的竞争已不再是单一市场或区域的较量,而是跨越国界、融合全球资源的全面竞争。天能资管(SkyAi),作为卡塔尔投资局(Qatar Investment Authority,QIA)旗下的尖端科技品牌,正以其独特的全球视野和深远的战略眼光,积极布局资管赛道,力求在全球资…...

基于PHP的宠物用品商城

有需要请加文章底部Q哦 可远程调试 基于PHP的宠物用品商城 一 介绍 宠物用品商城系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap&#xff0c;jquery.js等。系统角色分为用户和管理员。(附带参考文档) 技术栈&#xff1a;phpmysqlbootstrapphpstudyvsc…...

桂链:使用Fabric的测试网络

桂链是基于Hyperledger Fabric开源区块链框架扩展开发的区块链存证平台&#xff0c;是桂云网络&#xff08;OSG&#xff09;公司旗下企业供应链、流程审批等场景数字存证软件产品&#xff0c;与桂花流程引擎&#xff08;Osmanthus&#xff09;并列为桂云网络旗下的标准与可定制…...

k8s术语master,node,namepace,LABLE

1.Master Kubernetes中的master指的是集群控制节点,每个kubernetes集群里都需要有一个Master节点来负责整个集群的管理和控制,基本上kubernetes的所有控制命令都发给它,它来负责具体的执行过程。Master节点通常会占据一个独立的服务器(高可用建议3台服务器)。 Master节点…...

香港科技大学广州|智能制造学域硕、博研究生招生可持续能源与环境学域博士招生宣讲会—四川大学专场!

香港科技大学广州&#xff5c;智能制造学域硕、博研究生招生&可持续能源与环境学域博士招生宣讲会—四川大学专场&#xff01;&#xff01;&#xff01; 两个学域代表教授亲临现场&#xff0c;面对面答疑解惑助攻申请&#xff01;可带简历现场咨询和面试&#xff01; &am…...

【Vue】 实现TodoList案例(待办事项)

目录 组件化编码流程&#xff08;通用&#xff09; 1.实现静态组件&#xff1a;抽取组件&#xff0c;使用组件实现静态页面效果 2.展示动态数据&#xff1a; 1. 常规 HTML 属性 3.交互——从绑定事件监听开始 什么时候要用 event&#xff1a; 什么时候不需要用 event&am…...

Ubuntu 20.04 安装 ROS 2 Foxy Fitzroy

目录 1&#xff0c;安装前须知 2&#xff0c;安装过程 2.1&#xff0c;设置语言环境 ​2.2&#xff0c;设置源 ​2.3&#xff0c;安装ROS 2软件包 2.4&#xff0c;​环境设置 ​​2.5&#xff0c;测试 2‍.6&#xff0c;不想每次执行source 检验是否成功&#xff08;另…...

【Unity】使用LitJson保存和读取数据的例子

LitJson 是一个轻量级的 JSON 解析和生成库&#xff0c;广泛应用于 .NET 环境中。 优点&#xff1a;轻量级&#xff0c;易用&#xff0c;性能优秀&#xff0c;支持LINQ和自定义对象的序列化和反序列化。 public class LitJsonTest : MonoBehaviour { // Start is called before…...

飞蛾扑火算法优化+Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型)

飞蛾扑火算法优化Transformer四模型回归打包&#xff08;内含MFO-Transformer-LSTM及单独模型&#xff09; 目录 飞蛾扑火算法优化Transformer四模型回归打包&#xff08;内含MFO-Transformer-LSTM及单独模型&#xff09;预测效果基本介绍程序设计参考资料 预测效果 基本介绍 …...

物联网平台厂商有哪些?2025物联网平台推荐?国内有哪些比较好的物联网平台?

评选维度&#xff1a; 技术实力&#xff1a;涵盖设备接入规模、数据处理效率、AI/边缘计算融合能力、协议兼容性及平台架构先进。 应用场景&#xff1a;包括垂直领域解决方案的成熟度、定制化能力、跨行业复用性及实际落地案例规模。 安全可靠&#xff1a;涉及数据传输加密、…...

瑞幸咖啡披露2025年Q1财报:门店净增1757家,营业利润率达8.3%

4月29日&#xff0c;瑞幸咖啡&#xff08;OTC&#xff1a;LKNCY&#xff09;公布2025年第一季度财报。数据显示&#xff0c;2025年第一季度总净收入88.65亿元人民币&#xff0c;同比增长41.2%&#xff0c;GMV达103.54亿元人民币。截止一季度末&#xff0c;门店总数达24097家。依…...

selenium IDE脚本如何转换为可运行的selenium webdriver java程序

上一篇博客&#xff08;用selenium4 webdriver java 搭建并完成第一个自动化测试脚本-CSDN博客&#xff09;介绍了如何创建一个selenium webdriver 的java工程。 之前博客&#xff08;​​​​​​带你用selenium IDE的录制第一个自动化测试脚本也介绍了如何使用selenum ide …...

GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断,作者:机器学习之心

GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断 目录 GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现GA-Transformer遗传算法优化编码器多特征分类预测/故障诊断&#xff0c;运行环境M…...

LeetCode热题100--53.最大子数组和--中等

1. 题目 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&…...

【计算机视觉】深度解析MediaPipe:谷歌跨平台多媒体机器学习框架实战指南

深度解析MediaPipe&#xff1a;谷歌跨平台多媒体机器学习框架实战指南 技术架构与设计哲学核心设计理念系统架构概览 核心功能与预构建解决方案1. 人脸检测2. 手势识别3. 姿势估计4. 物体检测与跟踪 实战部署指南环境配置基础环境准备获取源码 构建第一个示例&#xff08;手部追…...

血管造影正常≠心脏没事!无创技术破解心肌缺血漏诊困局

提到冠心病检查&#xff0c;很多人会纠结&#xff1a;到底哪项检查能更全面地反映病情、精准得出结论&#xff1f; 从准确性来说&#xff0c;冠脉 CT 与冠脉造影是临床常用手段。二者虽然能够清晰显示血管大冠脉是否存在狭窄或斑块&#xff0c;但二者本质上有相同的 “局限性”…...

ClickHouse副本集群

每个节点安装clickhouse服务安装 zookeeper每个节点修改 /etc/clickhouse-server/config.xml 863行左右 <remote_servers><default><shard><replica><host>18.1.13.30</host><port>9000</port></replica><replica&g…...

Go 语言中的 `os.Truncate` 函数详解

os.Truncate 是 Go 标准库中用于修改文件大小的函数。下面我将全面解析这个函数的功能、用法和注意事项。 函数签名 func Truncate(name string, size int64) error核心功能 os.Truncate 用于&#xff1a; 将指定文件截断或扩展到指定大小处理符号链接时会操作链接指向的实…...

java 加入本地lib jar处理方案

在 Java 项目中&#xff0c;如果想将本地的 .jar 文件加入到 Maven 构建流程中&#xff0c;有以下几种常见方式可以选择&#xff1a; ✅ 推荐方式&#xff1a;将本地 JAR 安装到本地 Maven 仓库 这是最佳实践。通过 mvn install:install-file 命令把JAR 包安装到本地仓库&…...

【Git】之【Get】TortoiseGit不显示状态图标

参考&#xff1a;Windows中解决TortoiseGit 不显示状态图标的问题 实测可行。 打开注册表 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers路径 确保TortoiseGit文件夹在前几个&#xff0c;可以重命名将其他无关…...

[Linux网络_68] 转发 | 路由(Hop by Hop) | IP的分片和组装

目录 1.再谈网络转发 2.路由 举个例子 3.分片和组装 IP 层 [Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器 1.再谈网络转发 我们在上一篇文章中知道了路由器的功能有&#xff1a; 转发DHCP | 组建局域网NAT 组建局域网功能表现&…...

Sce2DriveX: 用于场景-到-驾驶学习的通用 MLLM 框架——论文阅读

《Sce2DriveX: A Generalized MLLM Framework for Scene-to-Drive Learning》2025年2月发表&#xff0c;来自中科院软件所和中科院大学的论文。 端到端自动驾驶直接将原始传感器输入映射到低级车辆控制&#xff0c;是Embodied AI的重要组成部分。尽管在将多模态大语言模型&…...

论文笔记-多智能体任务分配:动态智能空间中的拍卖与抢占机制

《IET Cyber-Systems and Robotics》出版中国电信研究院 Wei Li、Zhenhua Liu 团队与山东大学 Jianhang Shang 和 Guoliang Liu 团队的研究成果&#xff0c;文章题为“Multiagent Task Allocation for Dynamic Intelligent Space: Auction and Preemption With Ontology Knowle…...