大模型推理时的尺度扩展定律
前言
大模型的尺度扩展定律告诉我们:『LLM的性能会随着模型的参数量、模型的训练量、模型的训练数据量的增加而增加』。训练存在尺度扩展定律,测试也存在尺度扩展定律,实践告诉我们在推理时候增大计算量,往往可以获得模型性能收益。那么在给定了计算预算的前提下,如何安排预算才能达到最好的模型效果呢?本篇文章就在讨论这一点。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注明出处,谢谢。
- 关键字:尺度扩展定律、推理时计算扩展
- 发表单位:Google DeepMind
∇ \nabla ∇ 联系方式:
e-mail: FesianXu@gmail.com
github: https://github.com/FesianXu
知乎专栏: 计算机视觉/计算机图形理论与应用
微信公众号:机器学习杂货铺3号店
在大语言模型(Large Language Model, LLM)中,存在所谓的尺度扩展规律(Scaling Laws) [2],如Fig 1所示,即是:
LLM的性能会随着模型的参数量、模型的训练量、模型的训练数据量的增加而增加
然而,也有一系列工作告诉我们,在保持LLM不变的情况下,在推理时增加计算量,如以下方法,可以有效地提高模型效果
- 增加并行搜索计算量 :模型采样多个答案(有多种采样方法,Best-of-N、Beam Search、Lookahead Search等),通过奖励模型从中挑选一个最佳答案。
- 增加串行修改计算量 :模型给出一个初始答案,然后基于这个初始答案进行修正,以此类推直到得到一个最佳答案未知。
第一种方法也可以称之为是通过并行搜索(Search)的方法,第二种则是串行修正模型的输出Token概率分布的方法,文章中提到这两种不同方法,适用于不同的问题类型。那么对于一个特定的问题,在给定了有限计算预算的前提下,应该如何分配预训练计算量、推理时计算量呢?这两种计算量是否可以相互兑换呢(Exchange)?这正是本文想要讨论的,如何分配计算预算,特别是聚焦在如何分配推理时的计算预算。
如公式(1)所示,用 θ q , y ∗ ( q ) ∗ ( N ) \theta^{*}_{q, y^{*}(q)}(N) θq,y∗(q)∗(N)表示在给定了输入prompt为 q q q,推理计算预算 N N N的情况下的最佳推理策略, T a r g e t ( θ , N , q ) \mathrm{Target}(\theta,N,q) Target(θ,N,q)表示在给定推理策略 θ \theta θ、计算预算和prompt情况下的输出分布。那么公式(1)就是表示,在给定计算预算 N N N的情况下,最大化模型效果(此处 y = y ∗ ( q ) y=y^{*}(q) y=y∗(q)表示一个精准预测)得到的推理策略。此处的推理策略 θ \theta θ,不妨简单理解为是并行计算和串行计算的比例以及具体的一些超参数,比如beam width等。
θ q , y ∗ ( q ) ∗ ( N ) = arg max θ ( E y ∼ T a r g e t ( θ , N , q ) [ I y = y ∗ ( q ) ] ) (1) \theta^{*}_{q, y^{*}(q)}(N) = \arg \max_{\theta} (\mathbb{E}_{y \sim \mathrm{Target}(\theta,N,q)} \big [ \mathbb{I}_{y=y^{*}(q)} \big ]) \tag{1} θq,y∗(q)∗(N)=argθmax(Ey∼Target(θ,N,q)[Iy=y∗(q)])(1)
显然这个公式还是过于抽象,无法将问题细化。作者认为,给模型的问题难度(Difficulty)可以作为公式(1)的有效代理,即是假如问题难度分为离散的5个档次,那么只要求出不同难度档次下的最优推理策略,就是对公式(1)的有效拟合。那么问题就变成了如何定义一个问题的难度(注意到本文讨论的问题都是数学问题,也就是有明确答案的),作者采用的是基于『后验』的方法,也就是用一个基线LLM模型对问题进行2048次采样,计算这些答案的一次通过率(pass@1),越高的一次通过率说明问题越简单,越低的一次通过率则说明问题越难。
整个实验是在数据数据集MATH [3] 基准上进行的,其中包含了不同难度的高中级别数学问题,所有的实验中都采用分割出的12k个数据进行训练,500个数据进行测试。本文采用的Verifier(用于给答案打分,判断答案的好坏程度)是PRM(Process Reward Model),其能够对结构化答案中每一个步骤进行打分,如Fig 2所示,比起ORM(Output Reward Model)只对整个答案粒度进行打分,是一种更为细粒度的建模方式,具体可见 [4]。本文采用的PRM的具体训练方法请参考原论文 [1],本博文不做详细介绍。
基于并行搜索的方法
我们先来看到基于并行搜索的方法,本文探索了如Fig 3所示的几种搜索方法:
-
最佳N选1(Best-of-N):对问题进行多次采样,得到 N N N个完整的回答,然后对所有采样得到的答案过一遍PRM判断答案的质量,然后将PRM打分最高的答案保留作为最终答案。考虑到我们的测试数据集是数学问题,可以认为是有明确的数字答案的,因此本文采用的是加权最佳N选1(Best-of-N Weighted)策略。不难看出,最佳N选1的计算预算即是 N N N。
-
束搜索(Beam Search):一个问题的回答可以分为多个步骤(Step),在给定了固定数量的束数(The number of beams) N N N和束宽(beam width) M M M后,如Fig 3的中图所示:
- 第一步: t 0 t_0 t0时刻,首先采样 N N N个答案步骤作为初始化。
- 第二步:对于这 N N N个步骤进行PRM打分,保留其打分排序前 R = N / M R=N/M R=N/M的步骤。
- 第三步: t 1 t_1 t1时刻,对于这 R R R个步骤,每一个继续采样 M M M个步骤,这样我们 t 1 t_1 t1时刻就有了 N / M × M = N N/M \times M = N N/M×M=N个答案步骤,和初始化时候的数量一样。
- 第四步: t 2 t_2 t2时刻,重复第二步到第四步。
不难发现,束搜索的每一步采样我们都固定采用 N N N个答案步骤,因此最终计算预算和最佳N选1是类似的,都是 N N N。
-
前瞻搜索(Lookahead Search):是束搜索的『升级版』,每一轮采样都采样 K K K步前瞻(在束搜索中 K = 0 K=0 K=0),然后在通过RPM判断保留哪些采样轨迹,不难看出前瞻搜索的计算量通常都比较大,通常记作 N × ( K + 1 ) N \times (K+1) N×(K+1)。
让我们来看到试验结果,束搜索和前瞻搜索都有推理超参数需要选择:
- 束搜索:其束宽 M M M需要设定,本文采用了两种设定 M = N M = \sqrt{N} M=N和固定的 M = 4 M = 4 M=4。
- 前瞻搜索:其前瞻 K K K和束宽 M M M需要设定,本文采用了三种设定:
- K = 1 , M = N K = 1, M = \sqrt{N} K=1,M=N
- K = 3 , M = N K = 3, M = \sqrt{N} K=3,M=N
- K = 3 , M = 4 K = 3, M = 4 K=3,M=4
整个试验结果如Fig 4所示,从左图可以发现,在计算预算短缺的情况下,束搜索明显表现最佳,然而当预算增长到 N = 64 N = 64 N=64以后,最优N选1策略和前瞻搜索就开始赶上了束搜索,最终在高计算预算情况下,最优N选1策略效果拔得头筹。从右图来看,在不同的问题难度下,这三种搜索方法有着不同的优势。在简单问题上(问题难度1和2),当预算不足时候效果最好的是束搜索策略,随着预算增加,束搜索出现了性能下降的情况,这个可以认为是过拟合(也即是过度优化),再简单问题且有着充分预算的情况下,能看到最佳N选1策略的效果是最好的。
然而在困难问题上(问题难度3以上),我们发现几乎在所有预算下,都是束搜索策略的表现明显最好,在最难的问题(难度5)上,甚至只有束搜索还能产生有意义的结果。这个结论是很符合直观印象的,对于简单问题,模型一次性产生正确答案的几率比较高,因此通过最优N选1或者多数投票的策略都能获得很不错的效果,但是遇到困难问题的时候,一个复杂问题通常会有着多个复杂的步骤,祈求模型一次性产生正确答案的几率就很低了,束搜索能够以每一步中最正确的步骤作为种子继续搜索,因此解决复杂问题的能力就更强,当然这也需要更多的算力预算了。
从上面的实验中,我们发现不同难度的问题需要不同的搜索策略,并且对计算预算的需求也不同,那么从以上试验得到的“计算最优测试时计算分配设置”(Compute-optimal test-time compute strategy)对比基线效果究竟有多大的优势呢?从Fig 5中我们发现,几乎在所有预算下,都是计算最优策略的效果显著最佳,并且对比 N = 16 N = 16 N=16和 N = 64 N = 64 N=64,我们发现计算最优的配置几乎可以用基线最优N选1策略的25%计算预算达到相同的效果。
总的来说,我们有以下结论,直接拿走不谢。
我们发现,任何给定验证器搜索方法的有效性在很大程度上取决于计算预算和具体问题。具体而言,束搜索在处理较难问题以及在较低计算预算下更为有效,而最佳 N 选一方法在处理较易问题以及在较高预算下则更为有效。此外,通过针对特定问题难度和测试时计算预算选择最佳搜索设置,我们几乎可以使用少至 4 倍的测试时计算量来超越最佳 N 选一方法。
基于串行修正的方法
以上是基于并行搜索的测试时提升方法,还有一系列的工作是基于串行修正的,做法也非常直观,让LLM去修改自己之前生成的答案,期望能将之前答案的错误部分修正,然后进行多次迭代直到获得最终的正确答案,这个过程如Fig 6左图的"Sequential Revisions"所示。基于现有的LLM,通过简单的prompt去修正自己的错误答案在推理型任务中被认为是低效的,因此需要微调出一个修正模型(Revision model),这个过程在本文就不介绍了,有兴趣的读者请自行翻阅原论文。
虽然这个能够修正自己错误的LLM是至多基于前4个答案进行修正训练的,在测试时候却可以生成长度更长的修改链(很简单,只需要保留最近的4次修正答案作为模型的上文就行了,之前的修正答案可以截断掉),如Fig 7左图所示,尝试更多次的修正能够获得更好的pass@1指标。在给定了 N N N的计算预算前提下,我们既可以进行并行采样 N N N次选取最佳答案(并行搜索策略),也可以串行修改 N N N次选取其中的最佳答案,那么哪种策略的效果更好呢?如Fig 7右图所示,作者发现不管是基于PRM模型校验的结果(也就是最佳N选1的结果),亦或是基于多数服从的结果(也就是投票结果),在不同的计算预算下,基本都是串行修正方案下的效果更有优势。
我们现在有串行修正和并行搜索两大类方法可以使用计算预算 N N N,如Fig 6右图的"Combining Sequential/Parallel"所示, 如何在这两大类方法中分配计算预算呢?从直观上看,串行修正是对答案的局部错误进行修改,而并行搜索则是从答案整体正确性的角度进行搜索,是一种更为全局的方法。作者用 R a t i o = N ( 串行修正 ) / N ( 并行搜索 ) Ratio = \mathrm{N(串行修正)}/\mathrm{N(并行搜索)} Ratio=N(串行修正)/N(并行搜索) 表示这两种方法的预算分配,如Fig 8左图所示,我们发现增加串行修正计算预算的比例能更容易带来性能提升,然而也存在一个理想比例达到性能的峰值,大概是16左右。
我们再看到不同难度问题下,预算分配的规律。如Fig 8右图所示,在简单问题下,提高串行修正计算预算比例总是能带来性能增长,然而在较难问题上,则需要一个合适的比例,意味着需要引入一定量的并行搜索才能得到更好的性能。这个现象也能解释我们之前的结论,简单问题就算LLM不能一次性给出完整的正确答案,但是能给出基本正确的答案,只需要少量的串行修正就能得到完全正确答案。但是较复杂的问题LLM很难一次性就给出基本正确的答案,而是需要多次搜索后才能找到基本正确的答案,因此需要引入串行搜索的计算。
作者验证了在考虑了串行和并行的最优计算预算分配下,对于单独并行计算的优势,结果是能够以纯并行计算25%的预算达到相同的模型效果,具体结果就不展开了。总结以上的试验,我们有结论如下,拿走不谢。
我们发现,在串行(例如修订)和并行(例如标准的最佳 N 选一)测试时计算之间存在一种权衡,并且串行与并行测试时计算的理想比例在很大程度上取决于计算预算和具体问题。具体而言,较简单的问题从纯串行的测试时计算中受益,而较难的问题通常在串行与并行计算达到某个理想比例时表现最佳。此外,通过针对给定问题难度和测试时计算预算最优地选择最佳设置,我们能够使用少至 4 倍的测试时计算量来超越并行的最佳 N 选一基线。
以上的试验让我们看到了,在测试阶段进行复杂推理策略带来的模型性能提升,我们不可避免有一个疑问:增加测试阶段的计算预算,是否能替代预训练阶段的计算预算呢?也就是是否能通过复杂的测试策略,从而在减少模型预训练的情况下,提升模型性能。作者最后在本文也进行了试验,不过我们就不继续详细讨论了,作者的结论是:
测试时计算与预训练计算并非一对一“可互换”。对于模型能力范围内的简单和中等难度问题,或者在推理(实时性)要求较低的情况下,测试时计算可以轻松弥补额外的预训练。然而,对于超出基础模型能力范围的具有挑战性的问题,或者在推理(实时性)要求较高的情况下,预训练可能更有效于提升性能。
笔者读后感:
无论是学术界还是工业界,测试时尺度扩展都是当前的研究热点,这篇论文的信息量很大,作者做了很多有价值的试验,去验证扩展不同测试策略的计算量带来的性能提升,笔者将其理解为LLM测试时的scaling law,同时也探索了预训练阶段和测试阶段的scaling law,并且说明了预训练在困难问题下是具有不可替代性的。不过本文的试验都是在数学类的问题上进行试验的,结论是否可以泛化到其他问题(比如问答类问题、代码型问题等等),是一个值得继续探索的开放研究问题。同时,作者本文的试验没有考虑交织训练和测试,也就是复杂推理策略输出的答案,可以回馈LLM进行进一步的训练从而提升模型效果。这些都是可以进一步探索的工作。
Reference
[1]. Snell, Charlie, Jaehoon Lee, Kelvin Xu, and Aviral Kumar. “Scaling llm test-time compute optimally can be more effective than scaling model parameters.” arXiv preprint arXiv:2408.03314 (2024).
[2]. Kaplan, Jared, Sam McCandlish, Tom Henighan, Tom B. Brown, Benjamin Chess, Rewon Child, Scott Gray, Alec Radford, Jeffrey Wu, and Dario Amodei. “Scaling laws for neural language models.” arXiv preprint arXiv:2001.08361 (2020).
[3]. Hendrycks, Dan, Collin Burns, Saurav Kadavath, Akul Arora, Steven Basart, Eric Tang, Dawn Song, and Jacob Steinhardt. “Measuring mathematical problem solving with the math dataset.” arXiv preprint arXiv:2103.03874 (2021). aka MATH
[4]. Lightman, Hunter, Vineet Kosaraju, Yura Burda, Harri Edwards, Bowen Baker, Teddy Lee, Jan Leike, John Schulman, Ilya Sutskever, and Karl Cobbe. “Let’s verify step by step.” arXiv preprint arXiv:2305.20050 (2023).
相关文章:
大模型推理时的尺度扩展定律
大模型推理时的尺度扩展定律 FesianXu at 20250212 at Wechat Search Team 前言 大模型的尺度扩展定律告诉我们:『LLM的性能会随着模型的参数量、模型的训练量、模型的训练数据量的增加而增加』。训练存在尺度扩展定律,测试也存在尺度扩展定律ÿ…...
迷你世界脚本世界UI接口:UI
世界UI接口:UI 彼得兔 更新时间: 2023-10-25 10:40:44 具体函数名及描述如下: 序号 函数名 函数描述 1 setGBattleUI(...) 设置战斗总结UI 2 world2RadarPos(...) 世界坐标转换到小地图 3 world2RadarDist(...) 世界长度转换到小地图 4 …...
局域网自动识别机器名和MAC并生成文件的命令
更新版本:添加了MAC 地址 确定了设备唯一性 V1.1 局域网自动识别机器名和MAC并生成文件的批处理命令 echo off setlocal enabledelayedexpansionREM 设置输出文件 set outputFilenetwork_info.txtREM 清空或创建输出文件 echo Scanning network from 192.168.20.1…...
神经网络之词嵌入模型(基于torch api调用)
一、Word Embedding(词嵌入)简介 Word Embedding(词嵌入): 词嵌入技术是自然语言处理(NLP)领域的一项重大创新,它极大地推动了计算机理解和处理人类语言的能力。 通过将单词、句子甚…...
微服务即时通信系统---(七)文件管理子服务
目录 功能设计 模块划分 业务接口/功能示意图 服务实现流程 服务代码实现 封装文件操作模块(utils.hpp) 获取唯一标识ID 文件读操作 文件写操作 编写proto文件 文件元信息 文件管理proto 单文件上传 多文件上传 单文件下载 多文件下载 RPC调用 服务端创建子…...
鸿蒙5.0实战案例:基于原生能力获取视频缩略图
往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录) ✏️ 鸿蒙(HarmonyOS)北向开发知识点记录~ ✏️ 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…...
《Canvas修仙传·第三重天金丹境(下集)》 ——量子烟花与物理宇宙的混沌法则
各位道友久候!上集我们炼就了《灵蛇奇谭》的元神,今日将开启Canvas修仙路上最绚丽的篇章——掌控微观粒子的创世之力!(ノ≧∀≦)ノ 章前黑话词典 🔍 量子境术语表: 对象池(Object Po…...
Hutool - POI:让 Excel 与 Word 操作变得轻而易举
各位开发者们,在日常的 Java 开发工作里,处理 Excel 和 Word 文件是相当常见的需求。无论是从 Excel 里读取数据进行分析,还是将数据写入 Excel 生成报表,亦或是对 Word 文档进行内容编辑,传统的 Apache POI 库虽然功能…...
请谈谈 Node.js 中的流(Stream)模块,如何使用流进行数据处理?
1. Node.js中的流(Stream)模块 流的基本概念: 流是 Node.js 中用于处理流式数据的抽象接口。 它是一种高效的数据处理机制,适合处理大文件或高数据吞吐量的场景。 流主要有四种类型: Readable:可读流&am…...
DeepSeek 202502 开源周合集
DeepSeek 本周的开源项目体现了其在 AI 技术栈中的深厚积累,从硬件协同优化(FlashMLA)、通信库(DeepEP)、核心计算(DeepGEMM)到推理模型(DeepSeek-R1),覆盖了…...
《从0到1:用Python在鸿蒙系统开发安防图像分类AI功能》
在人工智能与移动应用深度融合的当下,类目标签AI功能成为众多行业提升效率和用户体验的关键技术。本文聚焦于HarmonyOS NEXT API 12及以上版本,以图像分类在智能家居安防领域的应用为例,为开发者详细阐述如何利用Python开发类目标签AI功能,助力鸿蒙技术在该领域的创新应用。…...
【机器学习chp10】降维——(核化)PCA + MDS + lsomap + 拉普拉斯特征映射 + t-NSE + UMAP
目录 一、降维的意义与本质 1、意义 2、本质 3、常见降维方法 (1)线性降维 (2)非线性降维 二、基于重构的降维 1、PCA 2、核化PCA (1)实现过程 步骤一:数据映射与核函数定义 步骤二…...
Visual Studio 2022 常用快捷键
1. 格式化代码:ctrl K,ctrl f 2. 向下插入一行:ctrl shift 回车 3. 全部变成大写:ctrl shift U 4. 全部变成小写:ctrl U 5. 查找: ctrl f 6. 删除当前行: ctrl shi…...
JavaWeb——CSS
一、什么是CSS CSS(Cascading Style Sheet):层叠样式表,是一种用于描述网页内容外观和样式的语言,主要用于控制网页的布局、颜色、字体、间距、动画等视觉效果。 CSS基本语法: CSS基本语法十分简单,基本由以下几个部分…...
Oracle 数据库基础入门(四):分组与联表查询的深度探索(下)
在 Oracle 数据库的操作中,联合查询与子查询是获取复杂数据的关键手段。当单表数据无法满足业务需求时,联合查询允许我们从多张表中提取关联信息,而子查询则能以嵌套的方式实现更灵活的数据筛选。对于 Java 全栈开发者而言,掌握这…...
【欢迎来到Git世界】Github入门
241227 241227 241227 Hello World 参考:Hello World - GitHub 文档. 1.创建存储库 r e p o s i t o r y repository repository(含README.md) 仓库名需与用户名一致。 选择公共。 选择使用Readme初始化此仓库。 2.何时用分支…...
从矩阵乘法探秘Transformer
目录 前言1. transformer背景1.1 回顾线性代数的知识1.1.1 矩阵和行向量1.1.2 矩阵相乘和算子作用1.1.3 从分块矩阵的乘法来看 Q K T V QK^TV QKTV 1.2 encoder-decoder1.3 低阶到高阶语义向量的转换1.4 核心的问题 2. transformer网络结构2.1 基于KV查询的相似性计算2.2 在一个…...
【前端基础】Day 3 CSS-2
目录 1. Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 2. CSS的复合选择器 2.1 后代选择器 2.2 子选择器 2.3 并集选择器 2.4 伪类选择器 2.4.1 链接伪类选择器 2.4.2 focus伪类选择器 2.5 复合选择器总结 3. CSS的元素显示模式 3.1 什么是元素显示…...
Difyにboto3を変更したカスタムDockerイメージの構築手順
Difyにboto3を変更したカスタムDockerイメージの構築手順 はじめに1. Dockerfileの作成2. Dockerイメージのビルド3. docker-compose.yamlの更新変更点: 4. コンテナの再起動注意事項まとめ はじめに DifyのDockerイメージに特定バージョンのboto3を変更する手順を…...
C++ 类和对象(上)
Hello!!!大家早上中午晚上好!!!今天我们来复习C中最重要的内容之一:类和对象!! 一、类的定义 1.1语法 类定义关键字class 类名 {//括号体类定义成员变量或成员函数}&…...
虚拟机快照与linux的目录结构
虚拟机快照是对虚拟机某一时刻状态的完整捕获,包括内存、磁盘、配置及虚拟硬件状态等,保存为独立文件。 其作用主要有数据备份恢复、方便系统测试实验、用于灾难恢复以及数据对比分析。具有快速创建和恢复、占用空间小、可多个快照并存的特点。在管理维…...
代码随想录算法训练营第三十天 | 卡码网46.携带研究材料(二维解法)、卡码网46.携带研究材料(滚动数组)、LeetCode416.分割等和子集
代码随想录算法训练营第三十天 | 卡码网46.携带研究材料(二维解法)、卡码网46.携带研究材料(滚动数组)、LeetCode416.分割等和子集 01-1 卡码网46.携带研究材料(二维) 相关资源 题目链接:46. 携…...
计算机基础:二进制基础03,二进制数的位基和位权
专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 (一)WIn32 专栏导航 上一篇:计算机基础:二进制基础02,用二进制来计数…...
知识库技术选型:主流Embedding模型特性对比
知识库技术选型:主流Embedding模型特性对比 1. 知识库与大模型结合的背景 知识库是存储和管理结构化知识的系统,广泛应用于问答系统、推荐系统和搜索引擎等领域。随着大语言模型(LLM)的发展,知识库与大模型的结合成为…...
鸿蒙开发第4篇__关于在鸿蒙应用中使用Java语言进行设计
本博文对于鸿蒙APP程序员来说,很重要 HarmonyOS从 API8 开始不再支持使用Java作为开发语言,未来的新功能将在ArkTS中实现. API 8对应的是HarmonyOS 3.0.0版本, 2022年7月27日, 华为发布了HarmonyOS 3.0。 请看下图: 因此&#…...
监控视频流web端播放
最近在弄一个视频监测系统,核心功能之一就是视频监控查看。选择的方案是FFMPEGRTSP2web组合。 1、环境搭建&前期准备: 准备好软件,(ffmpeg网上很多,大家自己去下载吧,rtsp-server已上传,方…...
Java中的泛型类 --为集合的学习做准备
学习目标 ● 掌握在集合中正确使用泛型 ● 了解泛型类、泛型接口、泛型方法 ● 了解泛型上下限 ● 了解基本的使用场景 1.有关泛型 1.1泛型的概念 泛型(Generics)是Java中引入的参数化类型机制,允许在定义类、接口或方法时使用类型参数&a…...
【MySQL】表的基本操作
??表的基本操作 文章目录: 表的基本操作 创建查看表 创建表 查看表结构 表的修改 表的重命名 表的添加与修改 删除表结构 总结 前言: 在数据库中,数据表是存储和组织数据的基本单位,对于数据表的操作是每个程序员需要烂熟…...
横向移动靶场-Tr0ll: 3
Tr0ll: 3来自 <Tr0ll: 3 ~ VulnHub> 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.187 3,对靶机进行端口服务探测 …...
房屋租赁|房屋租赁系统|基于Springboot的房屋租赁系统设计与实现(源码+数据库+文档)
房屋租赁系统目录 目录 基于Springboot的房屋租赁系统设计与实现 一、前言 二、系统功能设计 三、系统实现 管理员功能模块 房主功能模块 用户功能模块 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取:…...
自然语言处理:词频-逆文档频率
介绍 大家好,博主又来给大家分享知识了。本来博主计划完成稠密向量表示的内容分享后,就开启自然语言处理中文本表示的讲解。可在整理分享资料的时候,博主发现还有个知识点,必须得单独拎出来好好说道说道。 这就是TF-IDF…...
Linux | 程序 / 进程调用库依赖关系查看
注:本文为 “Linux | 程序 / 进程调用库依赖” 相关文章合辑。 英文引文,机翻未校。 未整理去重。 How to Check Library Dependencies in Linux 如何在 Linux 系统中检查库依赖关系 Mohd Shakir Zakaria Programs on Linux often require external…...
3-4 WPS JS宏 工作表的新建、删除与错务内容处理(批量新建工作表)学习笔记
************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...
泰勒公式详解与应用
前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 📝 一句话总结 泰…...
计算机视觉(opencv-python)入门之图像的读取,显示,与保存
在计算机视觉领域,Python的cv2库是一个不可或缺的工具,它提供了丰富的图像处理功能。作为OpenCV的Python接口,cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV 图像格式 BMP格式 …...
现代前端框架渲染机制深度解析:虚拟DOM到编译时优化
引言:前端框架的性能进化论 TikTok Web将React 18迁移至Vue 3后,点击响应延迟降低42%,内存占用减少35%。Shopify采用Svelte重构核心交互模块,首帧渲染速度提升580%。Discord在Next.js 14中启用React Server Components后…...
Selenium自动化测试:如何搭建自动化测试环境,搭建环境过程应该注意的问题
最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差别虽然有,但是不足以影响自己,但是对于没有学过的人来说,通过资料再到自己写的…...
Linux服务升级:Almalinux 升级 DeepSeek-R1
目录 一、实验 1.环境 2.Almalinux 部署 Ollama 3.Almalinux 升级 DeepSeek-R1 4.Almalinux 部署 docker 5. docker 部署 DeepSeek-R1 6.Almalinux 部署 Cpolar (内网穿透) 7.使用cpolar内网穿透 二、问题 1.构建容器失败 一、实验 1.环境 (1)…...
《HelloGitHub》第 107 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…...
【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.2Kibana可视化初探
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 10分钟快速部署Kibana可视化平台1. Kibana与Elasticsearch关系解析1.1 架构关系示意图1.2 核心功能矩阵 2. 系统环境预检2.1 硬件资源配置2.2 软件依赖清单 3. Docker快速部…...
网络七层模型—OSI参考模型详解
网络七层模型:OSI参考模型详解 引言 在网络通信的世界中,OSI(Open Systems Interconnection)参考模型是一个基础且核心的概念。它由国际标准化组织(ISO)于1984年提出,旨在为不同厂商的设备和应…...
老旧android项目编译指南(持续更)
原因 编译了很多项目,找到了一些可观的解决办法 1. android studio里面的jdk版本切换 jdk版本切换在这里,一般安卓开发需要用到4个版本的jdk,jdk8, jdk11, jdk17, jdk21新版的android stuio是默认使用高版本的jdk,所以切换版本是很有必要的 2. 命令…...
测试金蝶云的OpenAPI
如何使用Postman测试K3Cloud的OpenAPI 1. 引言 在本篇博客中,我将带你逐步了解如何使用Postman测试和使用K3Cloud的OpenAPI。内容包括下载所需的SDK文件、配置文件、API调用及测试等步骤。让我们开始吧! 2. 下载所需的SDK文件 2.1 获取SDK 首先&…...
从零基础到通过考试
1. 学习资源与实践平台 使用Proving Grounds进行靶机练习 OSCP的备考过程中,实战练习占据了非常重要的地位。Proving Grounds(PG)是一个由Offensive Security提供的练习平台,拥有152个靶机,涵盖了从基础到进阶的多种…...
AI人工智能机器学习之神经网络
1、概要 本篇学习AI人工智能机器学习之神经网络,以MLPClassifier和MLPRegressor为例,从代码层面讲述最常用的神经网络模型MLP。 2、神经网络 - 简介 在 Scikit-learn 中,神经网络是通过 sklearn.neural_network 模块提供的。最常用的神经网…...
【原创】Open WebUI 本地部署
使用官网的默认部署,遇到不少的问题。比如白屏问题,其实需要修改几个参数即可。 其实在部署的时候有不少参数 WEBUI_AUTH False ENABLE_OPENAI_API 0 PATH /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin LANG C.UTF-8…...
基于SpringBoot的绿城郑州爱心公益网站设计与实现现(源码+SQL脚本+LW+部署讲解等)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
【天地图-点线面最全功能】天地图实现功能:回显、绘制、编辑、删除任意点线面
实现效果图 实现功能 1. 回显点线面数据 2. 绘制点线面,保存可获取点线面数据 3. 编辑点线面,保存可获取最新编辑后的点线面数据 4. 删除任意点线面(解决删除按钮不能随元素位置变化(地图拖拽/放大缩小时)而变化问题-&…...
003 SpringBoot集成Kafka操作
4.SpringBoot集成Kafka 文章目录 4.SpringBoot集成Kafka1.入门示例2.yml完整配置3.关键配置注释说明1. 生产者优化参数2. 消费者可靠性配置3. 监听器高级特性4. 安全认证配置 4.配置验证方法5.不同场景配置模板场景1:高吞吐日志收集场景2:金融级事务消息…...
【工具篇】【深度解析:2025 AI视频工具的全面指南】
随着人工智能技术的飞速发展,AI视频工具已经成为内容创作者、营销人员、教育工作者以及普通用户的得力助手。这些工具不仅简化了视频制作流程,还提供了前所未有的创意可能性。本文将详细介绍各类AI视频工具,帮助你找到最适合自己需求的工具。 1. 文生视频工具 智谱清影:这…...