LLM - 大模型 ScallingLaws 的指导模型设计与实验环境(PLM) 教程(4)

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/145323420

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与 模型规模N、数据量D、计算资源C 之间关系的经验规律,揭示在大模型中,随着模型参数数量、数据集大小和计算资源的增加,模型性能的变化模式,指导更高效地分配资源,优化模型训练过程,实现更好的性能。这些规律不仅有助于预测不同规模模型的表现,还能为模型设计和训练提供理论依据,是推动大模型发展和应用的重要理论基础。

使用 ScalingLaws 指导模型设计,验证模型效果,超过根据经验设计的模型,以及介绍模型的训练环境与超参数。

系列文章:

  1. 大模型 ScallingLaws 的 C=6ND 公式推导
  2. 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数
  3. 大模型 ScallingLaws 的迁移学习与混合训练
  4. 大模型 ScallingLaws 的指导模型设计与实验环境
  5. 大模型 ScallingLaws 的设计 100B 预训练方案

1. ScalingLaws 指导模型设计

验证根据 ScalingLaws 指导模型设计的效果:

ScalingLaws

根据 PLM 的 ScalingLaw 公式计算,CLM 模型,模型规模(N)是 7.2 B 7.2B 7.2B,数据量(D)是 265 B 265B 265B,计算量( C C C) 是 1.14 × 1 0 22 1.14 \times 10^{22} 1.14×1022,即输入计算量,输出模型规模与数据量,公式如下:

N = ( 1.26 × 1 0 − 3 ) × C 0.578 N = 1.26 × 1 0 − 3 × ( 1.14 × 1 0 22 ) 0.578 = 7.067 × 1 0 9 D = ( 1.23 × 1 0 2 ) × C 0.422 D = 1.23 × 1 0 2 × ( 1.14 × 1 0 22 ) 0.422 = 250 × 1 0 9 \begin{align} N &= (1.26 \times 10^{-3}) \times C^{0.578} \\ N &= 1.26 \times 10^{-3} \times (1.14 \times 10^{22})^{0.578} \\ &= 7.067 \times 10^9 \\ D &= (1.23 \times 10^{2}) \times C^{0.422} \\ D &= 1.23 \times 10^{2} \times (1.14 \times 10^{22})^{0.422} \\ &= 250 \times 10^9 \\ \end{align} NNDD=(1.26×103)×C0.578=1.26×103×(1.14×1022)0.578=7.067×109=(1.23×102)×C0.422=1.23×102×(1.14×1022)0.422=250×109

Protein 的 CLM 模型公式,参考:大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM),使用 Latex 计算数值,可以使用 SymboLab 工具。

根据 PLM 的 ScalingLaw 公式计算,MLM 模型,模型规模(N)是 10.7 B 10.7B 10.7B,数据量(D)是 260 B 260B 260B,计算量( C C C) 是 1.68 × 1 0 22 1.68 \times 10^{22} 1.68×1022,即输入计算量为,输出模型规模与数据量,公式如下:

N = ( 6.19 × 1 0 − 8 ) × C 0.776 N = ( 6.19 × 1 0 − 8 ) × ( 1.68 × 1 0 22 ) 0.776 = 10.93 × 1 0 9 D = ( 2.02 × 1 0 6 ) × C 0.230 D = ( 2.02 × 1 0 6 ) × ( 1.68 × 1 0 22 ) 0.230 = 261 × 1 0 9 \begin{align} N &= (6.19 \times 10^{-8}) \times C^{0.776} \\ N &= (6.19 \times 10^{-8}) \times (1.68 \times 10^{22})^{0.776} \\ &= 10.93 \times 10^9 \\ D &= (2.02 \times 10^{6}) \times C^{0.230} \\ D &= (2.02 \times 10^{6}) \times (1.68 \times 10^{22})^{0.230} \\ &= 261 \times 10^9 \\ \end{align} NNDD=(6.19×108)×C0.776=(6.19×108)×(1.68×1022)0.776=10.93×109=(2.02×106)×C0.230=(2.02×106)×(1.68×1022)0.230=261×109

与表格的数值类似。

在 MLM 与 CLM+MLM 的对比实验中,根据 PLM 的 ScalingLaw 公式计算,MLM 模型规模(N)是 470 M 470M 470M,数据量(D)是 106 B 106B 106B,计算量( C C C) 是 3 × 1 0 20 3 \times 10^{20} 3×1020,即输入计算量为,输出模型规模与数据量,计算结果 103 × 1 0 9 ∼ 106 B 103 \times 10^9 \sim 106B 103×109106B,公式如下:

N = ( 6.19 × 1 0 − 8 ) × C 0.776 N = ( 6.19 × 1 0 − 8 ) × ( 3 × 1 0 20 ) 0.776 = 480 × 1 0 6 D = ( 2.02 × 1 0 6 ) × C 0.230 D = ( 2.02 × 1 0 6 ) × ( 3 × 1 0 20 ) 0.230 = 103 × 1 0 9 \begin{align} N &= (6.19 \times 10^{-8}) \times C^{0.776} \\ N &= (6.19 \times 10^{-8}) \times (3 \times 10^{20})^{0.776} \\ &= 480 \times 10^6 \\ D &= (2.02 \times 10^{6}) \times C^{0.230} \\ D &= (2.02 \times 10^{6}) \times (3 \times 10^{20})^{0.230} \\ &= 103 \times 10^9 \\ \end{align} NNDD=(6.19×108)×C0.776=(6.19×108)×(3×1020)0.776=480×106=(2.02×106)×C0.230=(2.02×106)×(3×1020)0.230=103×109
在 CLM+MLM 模型中,MLM 模型规模(N)是 470 M 470M 470M,计算量( C C C) 是 3 × 1 0 20 3 \times 10^{20} 3×1020 一致,数据量(D)是 106 B 106B 106B 不同,计算结果 18.83 × 1 0 9 ∼ 21 B 18.83 \times 10^9 \sim 21B 18.83×10921B,公式如下:

D t = k × 1 D f α × 1 N β = 3.65 × 1 0 5 × 1 D f − 0.137 × 1 N − 0.369 D t = 3.65 × 1 0 5 × 1 ( 85 × 102 4 3 ) − 0.137 × 1 ( 480 × 102 4 2 ) − 0.369 = 18.83 × 1 0 9 \begin{align} D_{t} &= k \times \frac{1}{D_{f}^{\alpha}} \times \frac{1}{N^{\beta}} \\ &= 3.65 \times 10^5 \times \frac{1}{D_{f}^{-0.137}} \times \frac{1}{N^{-0.369}} \\ D_{t} &= 3.65 \times 10^5 \times \frac{1}{(85 \times 1024^3)^{-0.137}} \times \frac{1}{(480 \times 1024^2)^{-0.369}} \\ &= 18.83 \times 10^9 \end{align} DtDt=k×Dfα1×Nβ1=3.65×105×Df0.1371×N0.3691=3.65×105×(85×10243)0.1371×(480×10242)0.3691=18.83×109

与表格的数值类似。

2. ScalingLaws 模型效果

在 CLM 模型中,PROGEN2-xlarge(6.4B) 与 Our-7.2B 对比,在 序列生成的困惑度(Perplexity)、结构预测的 pLDDT、FoldSeek 搜索的 TM-Score、聚类(Cluster) 的分布 中,这 4 个领域的实验结果,Our-7.2B 都优于 PROGEN2-xlarge(6.4B)。如图:
CLM

在 MLM 模型中,ESM-2 (3B) 与 Ours-10.7B 对比,使用 LoRA 进行微调下游任务,包括 接触预测(Contact Prediction)、折叠分类(Fold Classification)、荧光蛋白(Fluorescence) 的 Spearman 相似度,这 3 个领域的实验结果,Our-10.7B 都优于 ESM-2(3B),同时,470M 模型的迁移学习优于从头训练。如图:
MLM

3. 实验参数

核心的实验参数,包括 大规模数据集(UniMeta200B)、MLM的掩码率(Mask Ratios)、MLM的下游任务(Downstream)。

3.1 大规模数据(UniMeta200B)

验证 大规模数据集(UniMeta200B) 的有效性,优于小批量数据的过采样(UR50/S),采样方法包括 Bootstrap、Local Shuffle、Global Shuffle,即:

  • Bootstrap:从 UR50/S 数据集中有放回地处理了200B Tokens,在每个训练周期中,随机抽取数据集的 65%。
  • Local Shuffle:每个 Epoch 都使用全部的 UR50/S Tokens,进行 Shuffle。
  • Global Shuffle:将重复的全部 UR50/S Tokens,进行 Shuffle,分配至每个 Epoch。

UniMeta200B

3.2 掩码率(Mask Ratios)

验证 掩码率(Mask Ratios) 的超参,掩码率 10%~20% 的效果最好,最终选择 15% 的掩码率,同时,满足80-10-10 策略,在 15% 的掩码部分,其中 80% 替换成掩码,10% 随机替换、10% 保持不变,同时验证,下游任务中,也是 15% 掩码率最好,即:

Mask Ratios

3.3 下游任务(Downstream)

验证 MLM 与 CLM 在下游任务(downstream) 的效果,即接触预测(Contact Prediction),显示相同计算量和相同的 Loss 情况下,MLM 优于 CLM,微调方法 LoRA 优于 Probing,即:

Downstream

P@L/5Precision at L/5,其中 L 代表序列长度,计算的是在前 L/5 最高预测概率中,预测正常的比例。

4. ScalingLaws 实验环境

实验环境包括:

  1. 设备 带有 NVLink 的 Ampere A100 GPU (80G),GLM 框架,训练 1M(Million) 小时的 GPU,即 768 卡,训练 ( 1 × 1 0 6 h ) / ( 768 ) / ( 24 h / D ) ≈ 55 D (1 \times 10^{6}h) / (768) / (24h/D) \approx 55D (1×106h)/(768)/(24h/D)55D
  2. 小模型(<2B) 只使用 数据并行(Data Parallelism),没有使用 模型并行(Model Parallelism) 和 流水线并行(Pipeline Parallelism)。
  3. 改进的 Transformer 架构:DeepNorm + LayerNorm、激活函数 GeLU、位置编码 RoPE
  4. 其他:
    1. FlashAttention
    2. 余弦衰减策略(Cosine Decay Strategy) + 预热(Warm-Up) 2.5%
    3. 序列长度1024 + <EOS>分隔符(Delimiter)
    4. AdamW
    5. BFloat16(Brain Floating Point 16-bit)
    6. 迁移学习:忽略预训练优化状态、预热 5%。

使用带有 NVLink 的 Ampere A100 GPU (80G) 完成所有实验,基于 DeepSpeed 和 Megatron 开发的 GLM 框架,总共使用大约 1M(Million) 小时的 GPU 计算时间,小模型(<2B) 主要使用 数据并行(Data Parallelism),没有使用 模型并行(Model Parallelism) 和 流水线并行(Pipeline Parallelism),简化部署。

使用改进的 Transformer 架构:

(1) 使用 DeepNorm + LayerNorm,即:

D e e p N o r m ( x ) = L a y e r N o r m ( α ⋅ x + N e t w o r k ( x ) ) DeepNorm(x) = LayerNorm(\alpha \cdot x + Network(x)) DeepNorm(x)=LayerNorm(αx+Network(x))

其中,缩放因子 α \alpha α 的值为 ( 2 N ) 1 2 (2N)^{\frac{1}{2}} (2N)21 N N N 是模型的层数,即层数越深,原始输入的权重越高,例如 ( 2 × 70 ) 1 2 = 11.83 (2 \times 70)^{\frac{1}{2}}=11.83 (2×70)21=11.83

(2) 使用 激活函数 GeLU,即:

G e L U ( x ) = x ⋅ P ( X < = x ) = x ⋅ Φ ( x ) G e L U ( x ) = x ⋅ 1 + e r f ( x 2 ) 2 \begin{align} GeLU(x) &= x \cdot P(X<=x) = x \cdot \Phi(x) \\ GeLU(x) &= x \cdot \frac{1+erf(\frac{x}{\sqrt{2}})}{2} \end{align} GeLU(x)GeLU(x)=xP(X<=x)=xΦ(x)=x21+erf(2 x)

其中, Φ ( x ) \Phi(x) Φ(x) 是标准正态分布的累积分布函数(CDF), e r f ( x ) erf(x) erf(x) 是高斯误差函数。

基于 Sigmoid 的近似公式,即:

G e L U ( x ) ≈ x ⋅ σ ( 1.702 x ) GeLU(x) \approx x \cdot \sigma(1.702x) GeLU(x)xσ(1.702x)

PyTorch 源码:

def gelu(x):return x * 0.5 * (1.0 + torch.erf(x / torch.sqrt(2.0)))

GeLU 图示:

GeLU

(3) 使用 位置编码 RoPE,即:

P E ( p o s , k ) = c o s ( p o s 50000 0 k d m ) + i ⋅ s i n ( p o s 50000 0 k d m ) θ k = 1 50000 0 k d m P E ( p o s , k ) = c o s ( p o s ⋅ θ k ) + i ⋅ s i n ( p o s ⋅ θ k ) = e i ⋅ p o s ⋅ θ k PE_{(pos,k)} = cos(\frac{pos}{500000^{\frac{k}{d_{m}}}})+i\cdot sin(\frac{pos}{500000^{\frac{k}{d_{m}}}}) \\ \theta_{k} = \frac{1}{500000^{\frac{k}{d_{m}}}} \\ PE_{(pos,k)} = cos(pos \cdot \theta_{k})+i\cdot sin(pos \cdot \theta_{k})=e^{i \cdot pos \cdot \theta_{k}} PE(pos,k)=cos(500000dmkpos)+isin(500000dmkpos)θk=500000dmk1PE(pos,k)=cos(posθk)+isin(posθk)=eiposθk

RoPE 参考:理解 旋转位置编码(RoPE)

(4) 使用 FlashAttention 加速训练过程,参考 FlashAttention 的 Safe-Softmax 与 One-Pass Tiling 计算

(5) 使用 余弦衰减策略(Cosine Decay Strategy),最大学习率(LR) 经验范围是 6 × 1 0 − 4 ∼ 1.2 × 1 0 − 4 6 \times 10^{-4} \sim 1.2 \times 10^{-4} 6×1041.2×104,衰减至 最大LR 的 0.1 倍,预热步数(warm-up) 是 2.5%。

(6) 序列长度设置为 1024,序列通过 <EOS>分隔符(delimiter) 进行拼接。

(7) 优化器使用 AdamW,参数更新,即:

θ t + 1 = θ t − α v t + ϵ m t − λ θ t m t = β 1 m t − 1 + ( 1 − β 1 ) ∇ L ( θ t − 1 ) v t = β 2 v t − 1 + ( 1 − β 2 ) ∇ L ( θ t − 1 ) 2 \begin{align} \theta_{t+1} &= \theta_{t} - \frac{\alpha}{\sqrt{v_{t}}+\epsilon} m_{t} - \lambda\theta_{t} \\ m_{t} &= \beta_{1}m_{t-1} + (1-\beta_{1}) \nabla L(\theta_{t-1}) \\ v_{t} &= \beta_{2}v_{t-1} + (1-\beta_{2}) \nabla L(\theta_{t-1})^{2} \\ \end{align} θt+1mtvt=θtvt +ϵαmtλθt=β1mt1+(1β1)L(θt1)=β2vt1+(1β2)L(θt1)2

其中, m t m_{t} mt 是一阶矩估计(Mean), v t v_{t} vt 是二阶距估计(Variance), α \alpha α 是学习率。

超参数包括 4 个,即 β 1 \beta_{1} β1 是一阶矩衰减率(0.9), β 2 \beta_{2} β2 是二阶距衰减率(0.95), ϵ \epsilon ϵ 是小常数( 1 × 1 0 − 8 1 \times 10^{-8} 1×108), λ \lambda λ 是权重衰减系数(0.01)。

(8) 省略 Dropout,使用 BFloat16(Brain Floating Point 16-bit) 数据格式,即1位符号位、8位指数位、7位尾数位,FP16 是 1-5-10。BFloat16 比 FP16 的数值范围更大,精度降低,数值范围 − 3.4 × 1 0 38 ∼ 3.4 × 1 0 38 -3.4 \times 10^{38} \sim 3.4 \times 10^{38} 3.4×10383.4×1038,即:

B F 1 6 m a x = 2 127 × ( 1 + 127 128 ) = 2 127 × 1.9921875 ≈ 3.4 × 1 0 38 B F 1 6 m i n = 2 − 126 × 1 128 = 2 − 133 ≈ 9.2 × 1 0 − 41 \begin{align} BF16_{max} &= 2^{127} \times (1 + \frac{127}{128}) = 2^{127} \times 1.9921875 \approx 3.4 \times 10^{38} \\ BF16_{min} &= 2^{-126} \times \frac{1}{128} = 2^{-133} \approx 9.2 \times 10^{-41} \end{align} BF16maxBF16min=2127×(1+128127)=2127×1.99218753.4×1038=2126×1281=21339.2×1041

(9) 迁移学习,只使用模型,忽略预训练的优化状态,预热使用最大LR的 5% 总步数,学习剩余的 Tokens。

模型参数:

模型

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

书生大模型实战营2

L0——入门岛 Python基础 Conda虚拟环境 虚拟环境是Python开发中不可或缺的一部分&#xff0c;它允许你在不同的项目中使用不同版本的库&#xff0c;避免依赖冲突。Conda是一个强大的包管理器和环境管理器。 创建新环境 首先&#xff0c;确保你已经安装了Anaconda或Minico…

力扣111二叉树的最小深度(DFS)

Problem: 111. 二叉树的最小深度 文章目录 题目描述思路复杂度Code 题目描述 思路 1.欲望求出最短的路径&#xff0c;先可以记录一个变量minDepth&#xff0c;同时记录每次当前节点所在的层数currentDepth 2.在递的过程中&#xff0c;每次递一层&#xff0c;也即使当前又往下走…

Scrapy如何设置iP,并实现IP重用, IP代理池重用

前置知识 1/3乐观锁 2/3 Scrapy流程(非全部) 3/3 关于付费代理 我用的"快代理", 1000个ip, 每个ip1min的有效期, 你用的时候, 把你的链接, 用户名填上去就行 设置代理IP &#x1f512; & 帮助文档: ①meta ②meta#proxy$ 语法: ①proxy的设置: Request对象中…

渗透测试-WAF是什么以及原理解释 waf功能详解

目录 waf功能介绍 waf出现的地点: 什么是waf 功能: 常见的系统攻击分为两类 一是利用Web服务器的漏洞进行攻击 二是利用网页自身的安全漏洞进行攻击 WAF主要功能&#xff1a; waf的特点1 waf主要功能2 网马木马主动防御及查杀 流量监控 网站漏洞防御功能 危险组件…

KF-GINS源码阅读

原始 Markdown文档、Visio流程图、XMind思维导图见&#xff1a;https://github.com/LiZhengXiao99/Navigation-Learning 文章目录 一、KF-GINS 简介1、程序概述2、相关资料3、文件结构4、第三方库 二、编译、调试三、类型定义1、核心类&#xff1a;GIEngine2、文件读写类型3、配…

基础项目实战——3D赛车(c++)

目录 前言一、渲染引擎二、关闭事件三、梯形绘制四、轨道绘制五、边缘绘制六、草坪绘制七、前后移动八、左右移动​九、曲线轨道​十、课山坡轨道​十一、循环轨道​十二、背景展示​十三、引入速度​十四、物品绘制​十五、课数字路障​十六、分数展示​十七、重新生成​十八、…

探索与创新:DeepSeek R1与Ollama在深度研究中的应用

在当今信息爆炸的时代&#xff0c;获取和处理信息的能力变得至关重要。特别是在学术和研究领域&#xff0c;如何有效地进行深度研究是一个亟待解决的问题。最近&#xff0c;一个名为DeepSeek R1的模型结合Ollama平台提供了一种创新的解决方案。本文将分析并解构这一新兴的研究工…

【Linux】gdb——Linux调试器

gdb使用背景 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须在源代码生成二进制程序的时候, 加上 -g 选项 gdb使用方法 首先进入gdb gdb test_glist显示代码 断点 b 行…

【单链表算法实战】解锁数据结构核心谜题——环形链表

题目如下&#xff1a; 解题过程如下&#xff1a; 环形链表&#xff1a;尾结点的next指针不为空&#xff0c;而是指向链表中的任一结点。 思路&#xff1a;快慢指针&#xff0c;慢指针每次走一步&#xff0c;快指针每次走两步。快慢指针在环中追逐相遇&#xff0c;那么这个链表…

56. 合并区间

【题目】&#xff1a;56. 合并区间 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {// 按照左端点排序sort(intervals.begin(), intervals.end(), [&](vector<int> lhs, vector<int> rhs)…

01-硬件入门学习/嵌入式教程-CH340C使用教程

前言 CH340C广泛应用于DIY项目和嵌入式开发中&#xff0c;用于USB数据转换和串口通信。本文将详细介绍CH340C的基本功能、引脚接线及使用方法。 CH340C简介 CH340C是一款USB转TTL电平转换器&#xff0c;可以将电脑的USB数据转换成串口数据&#xff0c;方便与单片机&#xff…

深度学习|表示学习|卷积神经网络|详细推导每一层的维度变化|14

如是我闻&#xff1a; 一个经典的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;呈现的是输入图像通过多个卷积层、池化层以及全连接层&#xff0c;最终输出分类结果的过程。整个过程的核心是理解输入特征图的尺寸如何在每一层发生变化&#xff0c;我们可以通过卷积…

5.1.4 软件工具+开发环境

文章目录 软件工具软件开发环境 软件工具 软件工具是辅助软件工程实施的软件&#xff0c;也叫CASE工具。软件工具可分为支持软件开发过程的工具、软件维护工具、软件管理工具3类。 支持软件开发过程的工具 需求分析工具&#xff1a;从需求定义制定出功能规范&#xff0c;描述软…

ospf动态路由配置,cost路径调整,ospf认证实验

一、实验拓扑如图&#xff1a; 接口ip配置网络 &#xff1a;10.17.12.* 10.17.13.* &#xff0c;10.17.23.* 回环接口配置分别为 10.0.1.1 &#xff0c;10.0.1.2&#xff0c;10.0.1.3对应三台路由器 ar1配置接口ip interface GigabitEthernet0/0/0 ip address 10.17.12.1…

通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)

大家对于智能体代理Agent一定已经非常熟悉&#xff0c;自主代理&#xff08;Autonomous Agents&#xff09; 目前在AI行业极其热门并具有巨大的潜力&#xff0c;能够显著提升开发者日常的工作效率、自动化日常琐碎、重复性任务&#xff0c;并生成全新的内容。Agent可以理解用户…

Sklearn 中的逻辑回归

逻辑回归的数学模型 基本模型 逻辑回归主要用于处理二分类问题。二分类问题对于模型的输出包含 0 和 1&#xff0c;是一个不连续的值。分类问题的结果一般不能由线性函数求出。这里就需要一个特别的函数来求解&#xff0c;这里引入一个新的函数 Sigmoid 函数&#xff0c;也成…

基于STM32的循迹小车设计与实现

1 系统方案设计 根据系统设计功能&#xff0c;展开基于STM32的循迹小车设计&#xff0c;整体设计框图如图2.1所示。系统采用STM32单片机作为控制器,通过L298驱动器控制两个直流电机实现对小车的运动控制&#xff0c;两路红外模块实现黑线的检测&#xff0c;HC-SR04超声波模块实…

异或哈希总结

例题 例题1https://codeforces.com/problemset/problem/1175/Fhttps://codeforces.com/problemset/problem/1175/F 例题2https://codeforces.com/contest/2014/problem/Hhttps://codeforces.com/contest/2014/problem/H例题4https://codeforces.com/contest/1418/problem/Ght…

深入理解若依RuoYi-Vue数据字典设计与实现

深入理解若依数据字典设计与实现 一、Vue2版本主要文件目录 组件目录src/components&#xff1a;数据字典组件、字典标签组件 工具目录src/utils&#xff1a;字典工具类 store目录src/store&#xff1a;字典数据 main.js&#xff1a;字典数据初始化 页面使用字典例子&#xf…

Leecode刷题C语言之跳跃游戏②

执行结果:通过 执行用时和内存消耗如下&#xff1a; int jump(int* nums, int numsSize) {int position numsSize - 1;int steps 0;while (position > 0) {for (int i 0; i < position; i) {if (i nums[i] > position) {position i;steps;break;}}}return steps…