【自然语言处理】【Scaling Law】Observational Scaling Laws:跨不同模型构建Scaling Law

news2024/11/16 5:42:03

相关博客
【自然语言处理】【Scaling Law】Observational Scaling Laws:跨不同模型构建Scaling Law
【自然语言处理】【Scaling Law】语言模型物理学 第3.3部分:知识容量Scaling Laws
【自然语言处理】Transformer中的一种线性特征
【自然语言处理】【大模型】DeepSeek-V2论文解析
【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM
【自然语言处理】BitNet b1.58:1bit LLM时代
【自然语言处理】【长文本处理】RMT:能处理长度超过一百万token的Transformer
【自然语言处理】【大模型】MPT模型结构源码解析(单机版)
【自然语言处理】【大模型】ChatGLM-6B模型结构代码解析(单机版)
【自然语言处理】【大模型】BLOOM模型结构源码解析(单机版)

论文名称:Observational Scaling Laws and the Predictability of Language Model Performance

论文地址:https://arxiv.org/pdf/2405.10938

一、简介

  • Scaling Law能够建立模型规模和效果的联系,但是需要跨不同尺寸来训练模型;
  • 本文提出的observational scaling law跳过模型训练的过程,而是从80个公开模型上建立scaling law;
  • 从多个模型族中构建scaling law非常有挑战,因为训练的计算代码和能力都在变化。然而,本文展示了这些变化普通的scaling law一致,语言模型的效果是低维能力空间的函数,而模型族的变化仅在将训练计算量转换为能力的效果上不同。
  • 使用observational scaling law能够发现复杂缩放线性的可预测性:(1) 一些涌现能力遵循平滑的sigmoidal行为并可以使用小模型预测;(2) agent能力也可以从简单的非agent基准进行预测;(3) 随着语言模型能力的改善,像Chain-of-Thought和Self-Consistency这种post-training技术的影响会怎样变化。

二、Observational Scaling Laws

1. 推广Scaling Laws的计算

在这里插入图片描述

​ 在计算scaling laws时,通过会假设模型的计算度量 C m C_m Cm(例如训练的FLOPs)和误差 E m E_m Em(例如困惑度)之间存在幂律关系。具体来说,对于一个属于模型族 f f f的模型 m m m,会假设
log ⁡ ( E m ) ≈ β f log ⁡ ( C m ) + α f (1) \log(E_m)\approx\beta_f\log(C_m)+\alpha_f \tag{1}\\ log(Em)βflog(Cm)+αf(1)
若这条曲线拟合足够精准的话,那么就能推断出更大计算规模 C ′ > C C'>C C>C下的模型效果。但是,拟合这样的scaling law并不容易,因为每个模型族 f f f和下游基准都有自己的系数 β f \beta_f βf α f \alpha_f αf

​ 一些研究推广函数形式来分析LM在下游任务上的缩放规律。具体来说,令 E m E_m Em表示归一化至区间[0,1]的下游任务误差,其观测到 log ⁡ ( C m ) \log(C_m) log(Cm) E m E_m Em具有sigmoidal关系,因此使用logistic函数替换等式(1)的对数:
σ − 1 ( E m ) ≈ β f log ⁡ ( C m ) + α f (2) \sigma^{-1}(E_m)\approx\beta_f\log(C_m)+\alpha_f \tag{2}\\ σ1(Em)βflog(Cm)+αf(2)
​ 在本文中,假设存在一种LM的低维能力度量,能够将计算量和更复杂的LM能力连接起来,并且从可观测地标准LM基准中抽取出来,如上图1所示。具体来说,给定 T T T个简单的基准和模型 m m m在基准 i ∈ [ T ] i\in[T] i[T]上的误差 B i , m B_{i,m} Bi,m,假设存在某些能力向量 S m ∈ R K S_m\in\mathbb{R}^K SmRK满足,
σ − 1 ( E m ) ≈ β ⊤ S m + α S m ≈ θ f log ⁡ ( C m ) + v f B i , m ≈ γ i ⊤ S m \begin{align} \sigma^{-1}(E_m)&\approx\beta^\top S_m+\alpha \tag{3} \\ S_m&\approx\theta_f\log(C_m)+v_f\tag{4} \\ B_{i,m}&\approx\gamma_i^\top S_m \tag{5} \\ \end{align} \\ σ1(Em)SmBi,mβSm+αθflog(Cm)+vfγiSm(3)(4)(5)
其中 θ f , v f , β ∈ R K , α ∈ R \theta_f,v_f,\beta\in\mathbb{R}^K,\alpha\in\mathbb{R} θf,vf,βRK,αR,并且正交向量 γ i ∈ R K \gamma_i\in\mathbb{R}^K γiRK

​ 等式(3)和(4)是等式(2)的推广,因为合并这两个等式就能够恢复单个模型族的原始缩放关系。然而,当有多个模型族时, S m S_m Sm作为一个共享的模型能力低维空间,所有下游度量(E和B)都是从该空间派生出来的,模型族将计算转换为能力的效率上有所不同(等式(4))。等式(4)的一种解释, θ f \theta_f θf表示模型族 f f f的计算效率, S m S_m Sm是模型族的log-FLOPs所表示的模型 m m m的能力。

​ 最终,等式(5)确保这些能力不是用来估计每个模型族的隐变量,而是完整可观测属性(B)的函数。因为 γ ∈ R K × T \gamma\in\mathbb{R}^{K\times T} γRK×T是正交的,可以线性估计 S ^ m : = γ B m \hat{S}_m:=\gamma B_m S^m:=γBm

2. 确定低维能力空间(等式(5))

在这里插入图片描述

​ 这里验证存在低维能力度量 S S S,其与标准LM基准B线性相关。采用的方式是证明B中仅有少量主成分捕获了其变化的绝大部分。这里证明了"基准-模型"矩阵 B B B是低秩的,并且等式(5)是合理假设。这种方式极大依赖于模型和基准的选择,下面描述选择的过程。

模型。收集了广泛了开源模型,包括21个模型族共计77个模型。这些模型包括使用标准方式训练出来的LLaMA和Qwen,也包含在合成数据上训练的Phi,以及在代码数据上训练的CodeLlama和StarCoder等。为了避免指令微调带来的复杂性,这里仅对base模型进行分析。

基准。收集了用于评估LM能力的各种基准,包括MMLU、ARC-C、HellaSwag、Winograndle、GSM8K、HumanEval、TruthfulQA、XWinograd等。

PCA分析。在获得了LM基准度量,进一步解决缺失值问题,这主要是由评估失败导致的。随后,使用PCA来抽取评估度量的主成分,作为衡量 S S S的"principal capability"(PC)。

PC度量是低维的。可以观察到抽取的PC度量是低秩的,top 3的PCs能够解释97%的变化,这个结果表明基准B是低维的(上图2a)。此外,发现仅第一PC就能解释LM能力变化的80%。仔细观察这些PCs,可以发现这些能力度量代表了可解释方向,LM的能力可以自然地作为规模的函数。具体来说,PC-1表示通用能力;PC-2对于"推理能力",着重在数学和代码基准上;PC-3则主要反映了编程能力。这些发现表明,许多简单的LLM能力都可以表示为少数"principal capabilities"的线性组合。

3. Principal Capability度量作为规模度量的替代(等式(4))

在这里插入图片描述

设定。对于每个模型,收集关于训练FLOPs所有可用信息,分析论文和其他公共信息来确定模型的尺寸N和预训练数据尺寸D。对于能够明确这些信息的模型,使用简单估计 C ≈ 6 N D C\approx 6ND C6ND来获得模型训练的FLOPs。

PC度量与对数计算量度量线性相关。上图3展示了PC-1度量与模型训练FLOPs的关系。可以发现,LM的PC-1度量都与对数训练FLOPs线性相关。这种线性相关性在各种模型上都成立,包括多语言模型BLOOM以及代码模型StarCoder。这种现象在PC-2和PC-3这种较低的PC上也成立。总的来说,这些结果支撑了等式(4)和等式(5)的有效性,即假设模型共享相同的能力空间,并且每个模型的计算量和这些principal capabilities是对数线性关系。

4. 拟合Observational Scaling Laws

算法A.1:拟合observational scaling laws

参数:模型数量 M M M,基准数量 T T T,主成分数量 K K K,模型族 f f f

输入:base语言模型的误差度量 B ∈ R T × M B\in\mathbb{R}^{T\times M} BRT×M,目标下游误差度量 E ∈ R M E\in\mathbb{R}^M ERM,语言模型计算量规模 C ∈ R M C\in\mathbb{R}^M CRM

结果:函数形式的拟合后scaling law F F F

/* 抽取主成分 */

B ← PCAImpute ( B ) B\leftarrow\text{PCAImpute}(B) BPCAImpute(B) // 填充缺失值

E ← Normalize ( E ) E\leftarrow\text{Normalize}(E) ENormalize(E) // 将度量归一化至区间[0,1]

γ , S ← PCA ( B , K ) \gamma,S\leftarrow\text{PCA}(B,K) γ,SPCA(B,K) // 拟合PCA变换 γ ∈ R K × T \gamma\in\mathbb{R}^{K\times T} γRK×T并抽取主成分 S = γ B S=\gamma B S=γB

/* 拟合非线性回归 */

β ∗ , α ∗ , h ∗ ← Fit ( E = h σ ( β ⊤ S + α ) ) \beta^*,\alpha^*,h^*\leftarrow \text{Fit}(E=h\sigma(\beta^\top S+\alpha)) β,α,hFit(E=(βS+α)) // 获得最优系数

P ← β ∗ ⊤ S + α ∗ P\leftarrow \beta^{*\top}S+\alpha^* PβS+α // 获得聚合能力度量 P ∈ R M P\in\mathbb{R}^M PRM

/* 投影到参考模型族的能力等效规模上 */

w ∗ , b ∗ ← Fit ( P f = w log ⁡ ( C f ) + b ) w^*,b^*\leftarrow\text{Fit}(P_f=w\log(C_f)+b) w,bFit(Pf=wlog(Cf)+b)

log ⁡ ( C ˉ f ) ← ( P − b ∗ ) / w ∗ \log(\bar{C}_f)\leftarrow(P-b^*)/w^* log(Cˉf)(Pb)/w // 为所有模型计算 f − equivalent FLOPs f-\text{equivalent FLOPs} fequivalent FLOPs

/* 返回基于能力等效规模变换的scaling law */

return F : B → h ∗ σ ( β ∗ ⊤ γ B + α ∗ ) F:B\rightarrow h^*\sigma(\beta^{*\top}\gamma B+\alpha^*) F:Bhσ(βγB+α)或者 C ˉ f → h ∗ σ ( w ∗ log ⁡ ( C ˉ f ) + b ∗ ) \bar{C}_f\rightarrow h^*\sigma(w^*\log(\bar{C}_f)+b^*) Cˉfhσ(wlog(Cˉf)+b)

​ 使用简单的主成分分析就能获得能力度量 S S S,近似满足等式(4)和等式(5)。现在来估计等式(3)中的缩放关系。完整算法见算法A.1。

用PC度量拟合回归。给定归一化至区间[0,1]的下游误差度量 E E E,简单推广等式(3)有
E m ≈ h σ ( β ⊤ S m + α ) (6) E_m\approx h\sigma(\beta^\top S_m+\alpha) \tag{6}\\ Em(βSm+α)(6)
其中 β ∈ R K \beta\in\mathbb{R}^K βRK α ∈ R \alpha\in\mathbb{R} αR是回归的权重和偏差, h ∈ [ 0 , 1 ] h\in[0,1] h[0,1]负责调整缩放的因子。使用普通的最小二乘法并限制 h ∈ [ 0.8 , 1.0 ] h\in[0.8,1.0] h[0.8,1.0]

定义可解释性的计算量度量。回想一下,本文中的scaling law的核心组件就是拟合线性变换 P m : = β ∗ S m + α ∗ P_m:=\beta^* S_m+\alpha^* Pm:=βSm+α,其能够将抽取的主成分(PCs)映射到下游度量标量值上。虽然这对于预测来说是完全可以接受的,但是若能够将其表示为FLOPs而不是任意标量能力度量的话,进一步的缩放分析将更加能够解释。等式(3)和等式(4)所表达的observational scaling laws是单个模型族计算量scaling law的推广。具体来说,若等式(4)完全成立,对于在模型族 f f f中的模型 m m m
P m : = β ∗ ⊤ S m + α ∗ = w f log ⁡ ( C m ) + b f (7) P_m:=\beta^{*\top}S_m+\alpha^*=w_f\log(C_m)+b_f\tag{7} \\ Pm:=βSm+α=wflog(Cm)+bf(7)
其中 w f = β ∗ ⊤ θ f w_f=\beta^{*\top}\theta_f wf=βθf b f = β ∗ ⊤ v f + α ∗ b_f=\beta^{*\top}v_f+\alpha^* bf=βvf+α。这也意味着标量能力 P m P_m Pm和特定模型族中模型计算量 log ⁡ ( C ) \log(C) log(C)存在线性关系。由于 θ f \theta_f θf v f v_f vf是未知先验,可以通过从 log ⁡ ( C ) \log(C) log(C) P P P的线性回归来拟合系数 w f w_f wf b f b_f bf

​ 在多模态族的情况下,计算效率的变化意味着跨模型族的FLOPs和能力不再试对数线性关系。然而,可以将所有的模型都映射到一个共享的、基于FLOPs的能力度量上,这种度量称为 f -equivalent   FLOPs f\textbf{-equivalent FLOPs} f-equivalent FLOPs。该方法的核心是通过以下假设来表示每个模型的能力:“模型族 f f f中的模型需要多少 log ⁡ -FLOPs ( log ⁡ ( C ˉ m , f ) ) \log\text{-FLOPs}(\log(\bar{C}_{m,f})) log-FLOPs(log(Cˉm,f))才能匹配模型m”。这里称 log ⁡ ( C ˉ m , f ) \log(\bar{C}_{m,f}) log(Cˉm,f)是模型 m m m f-equivalent FLOP \text{f-equivalent FLOP} f-equivalent FLOP,因为其代表了模型 m m m相对于模型族 f f f中的模型性能。这个度量的计算为
log ⁡ ( C ˉ m , f ) : = 1 w f ∗ ( β ∗ ⊤ S m + α ∗ − β ∗ ) (8) \log(\bar{C}_{m,f}):=\frac{1}{w_f^*}(\beta^{*\top}S_m+\alpha^*-\beta^*) \tag{8} \\ log(Cˉm,f):=wf1(βSm+αβ)(8)
通过求解等式(7)中的 log ⁡ ( C m ) \log(C_m) log(Cm)即可得到。

三、验证Observational Scaling Laws

​ 通过展示observational scaling laws能够准确预测LM在复杂且难以预测现象(例如涌现现象和agent能力)上的能力来展示其有用性。

scaling law拟合细节。抽取的主成分数量 K = 3 K=3 K=3,因为其已经能力覆盖约97%的变化并且在大多数实验中效果最好。对于能力等效规模变换,使用Llama-2作为参考模型族。为了有更好的解释性和可视化,使用准确率作为度量进行scaling law拟合并绘制。

1. 涌现能力的可预测性

在这里插入图片描述

​ 近期的一些研究认为许多LM的能力是"涌现"的,并不能轻易通过小模型来预测。能力的不连续变化是的开发大规模的算法和基准变得困难。此外,一直存在争论是否真的不连续还是度量的分辨率不高。

​ 高分辨率的observational scaling laws能够使得我们对涌现能力观察到更光滑的sigmoidal曲线。此外,仅通过效果略比随机效果好的模型就可以预测从接近随机到很好效果的转换点。

​ 从BigBench中挑选了Wei et al认为的涌现任务进行测试,包括2个算术任务和2个非算术任务。结果如上图4所示,可以发现使用PC度量能够准确预测这些能力,甚至仅使用表现较差的模型。相反,使用训练的FLOPs会导致外推的效果差并拟合至训练集。这可能是因为不同模型族的训练FLOPs的不可比较性。

2. Agent能力的可预测性

在这里插入图片描述

​ 人们对于使用LLM构建Agent非常感兴趣,例如AutoGPT、Devin和SWE-agent。虽然这些agent在有挑战的真实世界任务上远远落后于人类水平,但是未来更大的模型将会显著增强这些agent的能力。然而,对于在语言和代码任务上训练的模型是否能够很好的迁移至需要采取许多轮的agent任务上,仍然存在很大的不确定性。本节,利用observational scaling laws来分析LM agent能力的缩放性质。

​ 测试两个标准的agent评估基准AgentBench和AgentBoard,这两个基准都是评估语言模型通过代理能力的基准。结果如上图5所示,可以发现在两个基准上都可以使用非常弱的模型来准确预测。这也表明语言模型的agent能力与其基本能力有很好的相关性,随着LM模型结果继续增大则agent能力会继续增强。

​ 如图5c所示,其可视化了两个基准上的基础评估度量,这些度量是由PC度量拟合的回归权重得到的。可以发现,两个基准在编程能力上都分配了很多的权重,这表明编程能力对于Agent的重要性。此外,AgentBench中对通用知识(MMLU)分配了更多权重,而AgentBoard则是更需要推理能力(GSM8K),这也表明这些能力对Agent同样重要。

3. Post-Training技术影响的预测

在这里插入图片描述

​ 当研究人员提出新的prompting或者post-training技术来改善预训练模型时,我们是否能够确定这些收益是否能够跨模型和规模而持续存在呢?Scaling分析能够为post-training技术的设计提供更加定量的方法,但是由于单个模型族中模型数量太少,导致缺乏系统的scaling分析。除了这些挑战外,一些研究认为像CoT这样的干预技术是涌现的,无法从更小的模型上预测。使用observational scaling laws,能够相对准确的预测Chain-of-Thought和Self-Consistency等技术的影响和模型规模的关系。

​ 量化post-training技术缩放性质的方法很直接:在目标基准(例如GSM8K)上使用base模型的效果来拟合observational scaling law,然后使用post-training干预技术(GSM8K w/ CoT)后的效果在拟合observational scaling law。每次拟合都会产生一个sigmoidal缩放曲线,其作为 log ⁡ ( C ˉ f ) \log(\bar{C}_f) log(Cˉf)的函数,两个曲线的相对差距作为 log ⁡ ( C ˉ f ) \log(\bar{C}_f) log(Cˉf)的函数来表示干预技术的缩放效率。

​ 在GSM8K上测试了post-training技术CoT和SC,结果如上图6所示。可以发现,使用post-training技术(CoT,CoT+SC)和不使用post-training技术都能够通过较小的模型来准确预测较大的模型。相比之下,基于模型尺寸或者训练FLOPs这种计算规模的度量进行预测并不是特别可靠。显然,两种技术的缩放趋势并不相同,CoT相比于Self-Consistency w/CoT具有更明显的缩放趋势。

​ observational scaling law相比于基于单个模型族的scaling law的另一个优势,能够可视化对于post-training技术更重要的能力。上图6b可视化了拟合的回归权重 β \beta β,其通过 β ⊤ γ \beta^\top\gamma βγ映射到基本能力基准 B B B的空间上。可以清洗的看到,从Naive到CoT,MMLU和HumanEval的权重明显更高,这意味着通过增强通用知识(MMLU)和代码(HumanEval)的方式缩放模型能够使得baseline和CoT的差距更大,而改善常识(Winogrande)并不能带来显著的改善。

四、挑选低成本模型子集进行Scaling分析(略)

五、Observational Scaling其他应用(讨论)

在这里插入图片描述

PC-1作为高动态范围的平滑能力度量

​ 许多现有基准的动态范围有限:对于大模型很快饱和或者对于小模型完全随机。相反,PC-1是能够跨不同量级来比较LM的平滑能力度量。这允许我们在单一且统一尺度上来比较不同来源且能力极度不同的模型,如上图8所示。本文认为PC1的高动态范围使其更适合作为预训练的优化目标。

使用PC-1衡量训练数据效率

​ 由于PC-1能够作为统一的能力度量,那么其能够作为跨不同模型族比较计算效率的好方法。在图8中绘制了PC-1与log-FLOPs的关系,发现大多数模型在"训练计算-能力"曲线上都有清晰的模式。Phi模型在计算效率时是显著的异常点,这可能是因为没有考虑其用于生成训练数据所消耗的额外推理FLOPs。
在这里插入图片描述

Post-training技术与模型族的交互

​ 可以进一步分析post-training技术和模型族之间的交互,确定出哪些模型族能够从这些技术中受益最大,以及受益的起始点。上图9是不同模型族之间CoT的影响,可以发现模型都可以从CoT中受益,但是Phi再次成为异常值:其从CoT受益要比其他模型更早,但是速度慢很多。类似地,在代码数据上训练的DeepSeek-Coder也展现出了较早的过渡和较慢的增速。Phi/DeepSeek-Coder相较于其他模型的独特行为也表明了预训练数据对于模型scaling行为的影响。
益的起始点。上图9是不同模型族之间CoT的影响,可以发现模型都可以从CoT中受益,但是Phi再次成为异常值:其从CoT受益要比其他模型更早,但是速度慢很多。类似地,在代码数据上训练的DeepSeek-Coder也展现出了较早的过渡和较慢的增速。Phi/DeepSeek-Coder相较于其他模型的独特行为也表明了预训练数据对于模型scaling行为的影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1792908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Innodb Buffer Pool缓存机制(三)Innodb Buffer Pool内部组成

一、控制块缓存页 Buffer Pool中默认的缓存页大小和在磁盘上默认的页大小是一样的,都是16KB。为了更好的管理这些在Buffer Pool中的缓存页,InnoDB为每一个缓存页都创建了一些所谓的控制信息,这些控制信息包括该页所属的表空间编号、页号、缓存…

自动控制:自治系统与非自治系统的稳定性分析

自动控制:自治系统与非自治系统的稳定性分析 在自动控制领域,理解自治系统和非自治系统的区别对于分析系统稳定性至关重要。自治系统的运动方程只与系统的状态有关,而非自治系统的运动方程则与系统的状态和时间都有关系。本文将探讨非自治系…

SqlServer2016企业版安装

前言 好久没有知识的累积,最近工作上遇到新的SqlServer2016安装,记录一下 参考文章 SQL Server 2016软件安装包和安装教程 - 哔哩哔哩 (bilibili.com) 安装包准备 需要提前准备软件安装包如下 cn_sql_server_2016_enterprise_x64_dvd_8699450&…

3. 使用tcpdump抓取rdma数据包

系列文章 第1章 多机多卡运行nccl-tests 和channel获取第2章 多机多卡nccl-tests 对比分析第3章 使用tcpdump抓取rdma数据包 目录 系列文章一、准备工作1. 源码编译tcpdump2. 安装wireshark 二、Tcpdump抓包三、Wireshark分析 一、准备工作 1. 源码编译tcpdump 使用 tcpdump…

动物收容所

题目链接 动物收容所 题目描述 注意点 若没有可以收养的动物,则返回[-1,-1]收纳所的最大容量为20000编号随着收养动物的增加自增 解答思路 利用队列先进先出的特点将猫和狗分别存进两个队列中,关键是dequeueAny这个方法中如果此时猫和狗的队列中都有…

【算法无用系列】电影推荐——余弦相似度计算用户相似度原理

【算法无用系列】通过余弦相似度计算电影、用户相似度 话不多说,本文通过电影推荐系统中,基于余弦相似度算法计算出用户相似和电影相似原理。希望可以帮助一些代码不懂的同学一些思路。 记录用户电影评分数据 一般情况来说,会根据用户的行为…

安装Ubuntu桌面系统(虚拟机)

VirtualBox创建虚拟机(为安装Ubuntu桌面系统)-CSDN博客 虚拟机的创建方法如上链接。当虚拟机开始引导之后,便正式开始Ubuntu桌面版的安装过程。Ubuntu桌面版界面做得很漂亮,操作起来也方便,很适合作为入门Linux的操作…

探索安全之道 | 企业漏洞管理:从理念到行动

如今,网络安全已经成为了企业管理中不可或缺的一部分,而漏洞管理则是网络安全的重中之重。那么企业应该如何做好漏洞管理呢?不妨从业界标准到企业实践来一探究竟!通过对业界标准的深入了解,企业可以建立起完善的漏洞管…

Java+SVNCloud+Mysql课程设计

文章目录 1、主要内容2、所需准备3、与sql访问的中间类:SqlMessage4、窗口界面5、main方法 1、主要内容 课程设计,主要通过Javas wing创建窗口,jdbc连接云端mysql数据库进行基本操作,支持随机生成数据并用动态展示数据结果。 先…

重生之 SpringBoot3 入门保姆级学习(16、函数式 Web 编程)

重生之 SpringBoot3 入门保姆级学习(16、函数式 Web 编程) 3.4 函数式 Web 3.4 函数式 Web 个人写过 go 类似于 go gin 框架 1、场景 场景: User RESTful - CRUD GET/user/1 获取1号用户GET/users 获取所有用户POST/user 清求体携带JSON,新…

Java注解使用与自定义

一、什么是注解 注解是元数据的一种形式,它提供有关程序的数据,该数据不属于程序本身。注解对其注释的代码操作没有直接影响。换句话说,注解携带元数据,并且会引入一些和元数据相关的操作,但不会影响被注解的代码的逻…

程序员自我修养

目录 一、技术能力二、持续学习三、问题解决能力四、代码质量五、团队合作六、责任心七、时间与任务管理八、适应变化九、客户导向十、安全性意识十一、文档撰写十二、伦理与法律意识十三、健康生活 程序员作为现代技术行业的核心成员,不仅需要掌握扎实的技术技能&…

在 Java 项目中扫描识别图片中的文字(详细教程)

目录 需求: 步骤: 1、maven配置(pom.xml): 2、下载依赖文件: 3、代码: post进行测试: 测试图片: 测试结果: 需求: 上传图片文件进行扫描…

MongoDB CRUD操作:地理位置应用——通过地理空间查询查找餐厅

MongoDB CRUD操作:地理位置应用——通过地理空间查询查找餐厅 文章目录 MongoDB CRUD操作:地理位置应用——通过地理空间查询查找餐厅地图的扭曲搜索餐厅浏览数据查找当前邻居查找附近所有餐厅查找一定距离内的餐厅使用$geoWithin,不排序使用…

Windows 2000 Server:安全配置终极指南

"远古技术,仅供娱乐" 💭 前言:Windows 2000 服务器在当时的市场中占据了很大的比例,主要原因包括操作简单和易于管理,但也经常因为安全性问题受到谴责,Windows 2000 的安全性真的那么差吗&#x…

kube-promethesu调整coredns监控

K8s集群版本是二进制部署的1.20.4,kube-prometheus对应选择的版本是kube-prometheus-0.8.0 Coredns是在安装集群的时候部署的,采用的也是该版本的官方文档,kube-prometheus中也有coredns的监控配置信息,但是在prometheus的监控页…

主流 RTOS 实时操作系统介绍

主流 RTOS 实时操作系统介绍 1 介绍1.1 概述1.2 RTOS 应用领域1.3 知名实时系统VRTXpSOSOS-9embOSAzure RTOS 【ThreadX 】OpenWrt 【路由】Mbed OS 【ARM 公司开发】VxWorks 【KUKA、ABB、etc】LynxOSQNXNucleusTHREADXuC/OS –II/III 【Silicon Labs 收购,更新频率…

Qt CAN总线发送和接收案例

文章目录 设置比特率类设置比特率类实现 发送数据帧类发送数据帧类的实现m_ui 发送帧界面 连接类连接类实现连接类UI设计 主窗口类主窗口类实现主界面UI 整体UIQT案例 设置比特率类 // 文件: BitRateBox.h // 作用: 定义了一个用于选择比特率的组合框类 BitRateBox&#xff0c…

冯喜运:6.6周四汇市行情怎么看?黄金原油日内短线布局操作

【黄金消息面分析】:周三(6月5日)美市盘初,现货黄金震荡走高,目前交投于2342美元/盎司附近。黄金价格周二下跌超过1%,原因是美元在本周晚些时候美国就业数据公布前趋于稳定,该数据可能为美联储的…

敦煌网、ebay、速卖通等平台一直被差评怎么办?

在电商行业里一直都有一句话,有评行走天下,无评寸步难行 而没有review打造爆款的案例是少之甚少,众所周知,review已经成为用户衡量一件商品的标尺,目前我也是看到一个文章上面写到,一个卖家表示自己平时运…