A Survey on LoRA of Large Language Models翻译

摘要

低秩自适应(LoRA)使用可插入的低秩矩阵更新密集神经网络层,是目前性能最佳的参数高效微调方法之一。此外,它在跨任务泛化和隐私保护方面具有显着优势。因此,LoRA 近来备受关注,相关文献数量呈指数级增长。因此有必要对 LoRA 的当前进展进行全面概述。本综述从以下角度对进展进行分类和回顾:(1)下游自适应改进的变体,可提高 LoRA 在下游任务上的性能;(2)跨任务泛化方法,混合多个 LoRA 插件以实现跨任务泛化;(3)提高 LoRA 计算效率的效率改进方法;(4)在联邦学习中使用 LoRA 的数据隐私保护方法;(5)应用。此外,本综述还讨论了该领域的未来方向。

1.介绍

在这里插入图片描述
  预训练语言模型参数规模的快速增加提高了其泛化能力并带来了涌现能力。在过去的几年中,预训练语言模型的参数规模增加了数千倍(例如,从330M参数的BERT到540B参数的PaLM)。这些具有大参数规模的预训练语言模型被称为大语言模型(LLM)。然而,由于LLM的知识边界,它们在某些下游任务上的能力仍然有限。为了扩展知识边界,仍然有必要在下游任务上对LLM进行微调。
  然而,对LLM的全部参数进行微调,即完全微调,计算成本极其昂贵,例如,对LLaMA2-7B模型进行完全微调需要大约60GB的内存,这超过了普通消费级GPU的容量。为了降低计算成本,各种参数高效微调(PEFT)方法被提出。它们通过仅微调少量(额外)模型参数来使LLM适应下游任务。从是否涉及额外参数的角度,PEFT方法可以分为两类:参数外方法和参数内方法。参数外方法冻结LLM的所有原始参数,并插入一组可学习的参数来优化模型输入或模型层,例如adapter微调和prompt微调。相反,参数内方法冻结LLM的大部分原始参数,只调整LLM的少量参数,例如BitFit、LISA和LoRA。
  当我们无法修改模型架构时,参数内方法是理想的选择。在参数内方法中,LoRA 是最广泛使用的方法,因为它可以在一系列下游任务上实现与完全微调相当或更好的下游自适应性能,并且易于实现。此外,已经提出了许多变体来进一步提高 LoRA 在更具挑战性的下游任务上的下游自适应能力。
  LoRA 通过使用可插入的低秩矩阵更新 LLM 的密集神经网络层来实现高效的参数效率。这些矩阵(又称 LoRA 插件)独立于 LLM,可以存储并在其他相关下游任务中重复使用。此外,这些 LoRA 插件可以组合起来实现跨任务泛化,从而促进 LLM 的多任务学习、领域自适应和持续学习。
  随着 LoRA 插件的积累,管理 LoRA 插件的计算成本也在增加。尽管 LoRA 具有高效的计算效率,但管理大量 LoRA 插件的计算成本是不可忽略的。有必要进一步提高 LoRA 的计算效率。改进可以来自降低单个 LoRA 插件的计算成本和加速多个插件的可扩展服务。它可以促进 LoRA 在实际用例中的应用,例如生成即服务 (GaaS) 云产品。
  在某些情况下,训练数据由多个客户端私有,无法集中化。为了使 LLM 适应分布式训练数据,我们可以采用联邦学习来保护每个客户端的数据隐私。然而,联邦学习的通信和计算成本很高。为了降低成本,LoRA 是一个自然的选择。其参数高效的特性有助于降低每个客户端的计算成本和跨客户端共享参数的通信成本。此外,LoRA 的可插拔特性可以帮助在联邦学习中保护每个客户端的参数隐私。因此,LoRA 在隐私保护方面具有巨大的潜力。
  在本综述中,我们全面概述了 LoRA 的最新进展,包括以下方法:(1)提高 LoRA 的下游自适应性能;(2)混合 LoRA 插件以实现跨任务泛化;(3)提高 LoRA 的计算效率;(4)在联邦学习中采用 LoRA。此外,还简要介绍了 LoRA 的应用。图 1 显示了与 LoRA 相关的方法的分类。本综述旨在为 LoRA 提供全面的背景知识、研究趋势和技术见解。
  本综述的其余部分组织如下。第 2 节介绍 LoRA 的背景知识,第 3 节介绍旨在提高下游自适应性能的 LoRA 变体。在第 4 节中,我们回顾了混合 LoRA 插件以实现跨任务泛化的 LoRA 混合方法。第 6 节介绍了 LoRA 驱动的联邦学习方法。第 7 节报告了 LoRA 的应用。我们在第 8 节中总结本综述并讨论未来的方向。

2.Low-Rank Adaptation (LoRA)

低维固定维度假设表明,过度参数化的模型位于较低的固定维度上,这表明我们可以通过仅更新与固有秩相关的参数来实现相当的学习性能。基于这一假设,LoRA 提出使用低秩矩阵更新模型中的密集层。它可以同时实现参数和计算效率。在本节中,我们首先介绍 LoRA 的细节,然后介绍专注于 LoRA 理论分析的现有工作。此外,我们在实践中展示了 LoRA 的效率。最后,本节介绍了 LoRA 可用于微调以外的其他用例。

2.1 LoRA

在这里插入图片描述
  给定一个由 W 0 ∈ R d × k W_0 ∈ \mathbb R^{d×k} W0Rd×k 参数化的密集神经网络层,为了使其适应下游任务,我们用 ∆ W ∈ R d × k ∆W ∈ \mathbb R^{d×k} WRd×k 更新它并获得由 W = W 0 + ∆ W W = W_0 + ∆W W=W0+W 参数化的更新层。对于完全微调, ∆ W ∆W W 是根据该层所有 d × k d×k d×k 参数的梯度计算的,这在计算上很昂贵,并且需要大量的 LLM GPU 内存。为了提高计算效率,LoRA 将 ∆ W ∆W W 分解为两个小矩阵 B ∈ R d × r B ∈ \mathbb R^{d×r} BRd×r A ∈ R r × k A ∈ \mathbb R^{r×k} ARr×k,即
W = W 0 + α B A (1) W=W_0+\alpha BA\tag{1} W=W0+αBA(1)
其中 r ≪ m i n { d , k } r≪min\{d,k\} rmin{d,k} B B B A A A分别用随机高斯分布和零初始化, α α α表示控制更新强度的比例因子。LoRA的参数数量为 r × ( d + k ) r×(d+k) r×(d+k),明显小于 d × k d×k d×k。图2(a)和(b)比较了完全微调和LoRA的结构。
  LoRA 具有很高的参数效率,因为它只更新一小部分模型参数,从而减少了微调所需的内存和计算要求,而不会增加推理延迟。此外,可以通过从低秩矩阵扩展到低秩张量或与 Kronecker 分解相结合来进一步提高参数效率。除了参数高效之外,LoRA 还具有可插拔性,LoRA 参数可以在训练后从模型中分离出来。LoRA 的可插拔特性使其可以被多个用户共享和重用。当我们拥有用于多个任务的 LoRA 插件时,我们可以组合这些插件并期望获得适当的跨任务泛化性能。此外,LoRA 的低秩机制与其他参数高效方法(如adapter)兼容。
  实际上,对于基于 Transformer 的 LLM,密集层通常由两种类型的权重矩阵组成:注意力模块中的投影矩阵和前馈神经 (FFN) 模块。在原始研究中,LoRA 被应用于注意力层的权重矩阵。后续工作表明,在 FFN 层中使用它可以进一步提高模型性能

2.2 Theoretical Analysis

为了理解LoRA为何有效以及如何使LoRA更有效,已有多项研究从各个方面进行了理论分析。为了回答LoRA为何有效的问题,Malladi et al. [10] 从内核角度分析了LoRA的微调动态,并证明在惰性模式下,LoRA微调几乎等同于完全微调。此外,Zeng et al. [14] 对LoRA对全连接神经网络(FNN)和Transformer网络(TFN)的表达能力进行了理论分析。他们证明了,对于FNN,如果 L o R A − r a n k ≥ ( w i d t h   o f   f ) × d e p t h   o f   f ˉ d e p t h   o f   f LoRA-rank≥(width~of~f)×\frac{depth~of~\bar f}{depth~of~f} LoRArankwidth of f×depth of fdepth of fˉ,则在一个温和的假设下,LoRA可以调整任何模型 f f f来准确表示任何较小的目标模型 f ˉ \bar f fˉ。此外,他们还量化了当LoRA-rank低于该阈值时的近似误差。关于 TFN,他们表明,对于 LoRA,使用 r a n k − ( e m b e d d i n g   s i z e 2 ) rank-(\frac{embedding~size}{2}) rank(2embedding size),任何模型都可以适应等效大小的目标模型。此外,Koubbi et al. [11] 利用 [195–197] 建立的 Transformers 数学框架来研究注意力参数中的低秩扰动如何影响。
  至于如何使 LoRA 更有效的问题,Jang et al. [12] 分析了在神经正切核 (NTK) 框架内对 LoRA 的微调,表明在 LoRA 中采用秩 r ≳ N r ≳\sqrt{N} rN 有助于避免虚假局部极小值并有助于发现表现出良好泛化的低秩解。此外,Zhu et al. [13] 观察到下投影矩阵 A A A 用于从输入中提取特征,而上投影矩阵 B B B 使用这些特征来创建所需的输出。基于这一观察,他们证明,与调整两个矩阵相比,冻结下投影矩阵 A A A 而仅调整上投影矩阵 B B B 可以获得更好的泛化,此外还可以将参数减少 2 倍。

2.3 Efficiency in Practice

LoRA的计算效率明显高于完全微调。以微调LLaMA2-7B中第一个FFN层的密集权重矩阵为例,完全微调需要微调 11 , 008 × 4 , 096 = 45 , 088 , 768 11,008×4,096 = 45,088,768 11,008×4,096=45,088,768个参数,而当 r = 4 r=4 r=4时,LoRA只需要调整 ( 11 , 008 × 4 ) + ( 4 × 4 , 096 ) = 60 , 416 (11,008×4)+(4×4,096)= 60,416 (11,008×4)+(4×4,096)=60,416个参数。对于这一层,与完全微调相比,LoRA仅调整了近千分之一的参数。
  LoRA 可以显著降低微调 LLM 的内存占用,内存可分为四个部分:(1)模型内存(权重内存):用于存储模型权重所需的内存;(2)激活内存:前向传播过程中中间激活占用的内存。主要取决于批次大小和序列长度等因素;(3)梯度内存:用于存储反向传播过程中梯度的内存。梯度仅针对可训练参数进行计算;(4)优化内存:用于存储优化器状态的内存。例如,Adam 优化器存储可训练参数的“一阶矩”和“二阶矩”。
  文献 [4] 在单个 NVIDIA RTX4090(24GB)GPU 上对 LLaMA2-7B 模型(批大小为 1)进行了完全微调和 LoRA 微调的全面实证比较。根据该研究,完全微调需要大约 60GB 的内存,这超过了 RTX4090 GPU 的容量;相比之下,LoRA 微调仅需要大约 23GB 的内存。LoRA 显著降低了内存使用量,使得在单个 NVIDIA RTX4090(24GB)GPU 上微调 LLaMA2-7B 成为可能。具体而言,由于可训练参数减少,优化内存和梯度内存都显著减少,分别减少了约 25GB 和 14GB。另一方面,虽然 LoRA 引入了额外的“增量参数”,导致激活内存和权重内存略有增加(共计约 2GB),但考虑到整体内存的减少,这种增加可以忽略不计。而且,减少内存会带来前向传播的加速。与完全微调相比,LoRA 速度快 1.9 倍。

2.4 Beyond Fine-tuning

除了微调之外,LoRA 还可以应用于其他学习范式,例如预训练和持续训练。对于预训练,ReLoRAMoRA 被提出使用低秩更新来训练高秩网络;此外,LTE 被提出在计算节点之间对多个低秩头进行并行训练,以最大限度地减少频繁同步的需要,从而促进 LoRA 在预训练中的利用。至于持续训练,已经提出了几种方法来解决灾难性遗忘问题。InfLoRA 通过在子空间中使用一组最小参数重新参数化预训练权重来解决灾难性遗忘问题。GSLoRA 使用组稀疏正则化来自动选择特定的 LoRA 组,同时将其他组归零以减轻灾难性遗忘的影响。I-LoRA 利用双记忆经验回放结合 LoRA 参数插值来对抗灾难性遗忘。
  此外,LoRA 还可用于克服 LLM 上下文大小有限的问题。例如,LongLoRA 通过将 LoRA 与移位稀疏注意力相结合,成功地将 LLaMA2-7B 的上下文窗口从 4k 个 token 扩展到 100k 个 token,从而实现了计算效率的提升。然而,由于注意力头结构混乱以及 token 组之间不必要的信息交换,LongLoRA 的效率不如 vanilla 注意力。为了解决这些问题,SinkLoRA 引入了 Sink Fixed Attention (SF-Attn),以按比例将循环移位的注意力头组返回到未移位状态,并实现相当的性能。

3. Downstream Adaptation Improving

虽然LoRA可以在一些下游任务上取得不错的自适应性能,但是在许多下游任务上,比如数学推理,LoRA与完全微调之间仍然存在性能差距。为了填补这个空白,提出了许多方法来进一步提高LoRA的下游任务自适应性能。通常,现有的方法从以下角度提高下游自适应性能:(1)突破低秩瓶颈,参见图2(c);(2)自适应地分配不同LoRA模块的秩,参见图2(d);(3)优化LoRA的学习过程;(4)与其他学习范式相结合。在本节中,我们分别介绍这四类方法。

3.1 Breaking the Low-rank Bottleneck

低秩更新使LoRA具有更高的参数效率;然而,它限制了LLM记住下游知识和在下游任务上泛化的能力。与完全微调(如代码和数学)相比,这种低秩限制导致LoRA在知识和技能密集型领域的性能较差。实验研究表明,完全微调的秩明显高于LoRA(10-100倍),并且增加LoRA更新的秩可以缩小LoRA和完全微调之间的性能差距。为了增加LoRA的秩并改善其性能,已经提出了几种方法,通常通过(1)在学习迭代中堆叠LoRA;(2)作为梯度压缩器更新;(3)在微调期间共同更新LLM和LoRA模块来增加秩。

3.1.1 Stacking LoRAs along Fine-tuning

矩阵秩是次可加性的,即对于大小相同的矩阵 M 1 M_1 M1 M 2 M_2 M2 r a n k ( M 1 + M 2 ) ≤ r a n k ( M 1 ) + r a n k ( M 2 ) rank(M_1 + M_2) ≤ rank(M_1) + rank(M_2) rank(M1+M2)rank(M1)+rank(M2)。基于次可加性,我们可以将多个 LoRA 模块聚合在一起以提高秩并突破低秩瓶颈。遵循这一思想,ReLoRA 提出了一种 LoRA 的合并和重新初始化过程,该过程定期将 LoRA 模块合并到 LLM,然后在微调期间重新初始化 LoRA 模块。它相当于在微调的同时堆叠多个 LoRA 模块,并且可以提高整体更新的秩。同样,COLA 提出了另一种基于 Frank-Wolfe 算法的合并和重新初始化方法。然而,MELoRA 指出,合并和重新初始化程序并不一定能保证秩的增加,因为在微调过程中,一系列 LoRA 模块之间可能会有重叠。为了解决这个问题,MELoRA提出将LoRA模块分解成更小的迷你LoRA,然后将这些迷你LoRA并行堆叠,其在提升排名方面的有效性已在理论上得到验证。

3.1.2 Updating as Gradient Compressor

上述方法打破了参数空间中的低秩瓶颈。作为补充,FLoRA 发现 LoRA 执行固定的随机投影来压缩梯度,并将总权重矩阵变化限制为低秩。为了克服梯度空间中的低秩瓶颈,FLoRA 提出对随机投影进行重采样,事实证明这可以很大程度上恢复全矩阵 SGD 的性能。

3.1.3 Co-updating LLM and LoRA

以上两类方法侧重于提升LoRA自身的表示能力,而Delta-LoRA提出联合更新LLM和LoRA模块,直接更新高阶LLM,可以获得比单独更新LoRA更好的表示能力。Delta-LoRA根据连续两次迭代中两个LoRA模块之间的差异来更新LLM,这使得它无需额外内存即可更新LLM。

3.2 Dynamic Rank Allocation

对于LoRA的秩并不是越高越好,过多的LoRA秩可能会导致性能和效率的下降。另外,在微调过程中,Transformer模型不同层的权重重要性可能会有所不同,需要为每一层指定不同的秩。因此,为不同层的LoRA模块分配相同的秩并不是最优选择。最好自适应地为不同层的LoRA模块分配秩。现有的方法从(1)奇异值分解(SVD);(2)单秩分解(SRD);(3)秩采样的角度自适应地为LoRA模块分配秩。

3.2.1 SVD-based Methods

使用奇异值分解 (SVD) 对矩阵进行分解并选择性截断其奇异值是控制矩阵秩的有效方法。受 SVD 的启发,我们可以将 LoRA 参数矩阵 BA 分解为 SVD 形式,即 P Λ Q PΛQ PΛQ,其中 P P P Q Q Q 是正交的,且 Λ Λ Λ 是非负对角矩阵。通过控制 Λ Λ Λ 中的元素,我们可以控制 B A BA BA 的秩并为 LoRA 模块分配秩。按照这个想法,几种秩分配方法近似于 B A BA BA 的 SVD 分解,并通过过滤对角矩阵来分配秩。例如,AdaLoRA 通过正则化 P P P Q Q Q 的正交性来近似 SVD 分解。然后,它基于新的重要性评分方法删除不重要的奇异值。同样,SaLoRA 也为 P P P Q Q Q 引入了正交性正则化;相反,它会根据 L 0 L_0 L0 范数删除不重要的奇异值。然而,上述方法效率不够高,因为它们从高秩开始,然后迭代降低秩,这会带额外的预算。为了解决这个问题,IncreLoRA 提出从单个秩开始,然后根据启发式重要性得分自动增加秩,其中还涉及正交性正则化,而 Λ Λ Λ 中的元素不需要为非负。

3.2.2 SRD-based Methods

然而,正交性正则化给LoRA带来了不可忽略的计算成本,降低了其效率。为了解决这个问题,一些方法忽略了SVD的正交性要求,直接将 B A BA BA分解为单秩分量。然后,他们通过选择适当的组件来分配秩。DoRA(动态低秩自适应)建议将LoRA参数矩阵 B A BA BA分解为单秩分量,并根据启发式重要性得分修剪组件。类似地,AutoLoRA也将LoRA参数矩阵 B A BA BA分解为单秩分量,但它基于元学习修剪组件。SoRA消除了正交性正则化,通过直接控制对角矩阵来过滤 P P P Q Q Q的列和行(它们的组合可以看作是单秩分量)。它通过将对角矩阵公式化为一组可学习的门控单元来控制对角矩阵,并在微调过程中进行更新。ALoRA还使用门控单元过滤组件;相比之下,它基于神经架构搜索来学习门控单元。

3.2.3 Rank Sampling-based Methods

在基于 SVD 参数化和分量分解的方法中,我们需要花费额外的计算成本来搜索合适的秩。为了避免额外的成本,DyLoRA 指出我们可以通过随机抽样直接分配秩。在每个训练步骤中,它从预定义的离散分布中抽取一个值 b b b,并将 b b b 分配为秩。然后,矩阵 A 和 B 被截断为秩 b b b。在微调过程中,只有 A A A 的第 b b b 行和 B B B 的第 b b b 列上的参数可调,而其他参数则保持不变。此外,可以根据用户的偏好定义分布。

3.3 Optimizing the Learning Procedure

在实践中,LoRA 的收敛速度比完全微调慢。此外,它对超参数也很敏感,并且容易出现过拟合。这些问题影响了 LoRA 的效率并阻碍了其下游的自适应性能。为了解决这些问题,研究人员开发了几种方法来优化 LoRA 的学习过程,这些方法可分为以下三类:(1)初始化改进;(2)梯度更新优化;(3)过拟合缓解。

3.3.1 Initialization Improvement

LoRA通常分别用高斯噪声和零来初始化其参数矩阵 A A A B B B。有两种简单的方案:Init[A],将矩阵B设置为零并随机初始化矩阵A,以及Init[B],相反的做法。文献[34]对这两种方案进行了比较,并通过理论分析得出结论,Init[A]更优。它表明,Init[A]允许使用较大的学习率而不会导致不稳定,从而使学习过程更有效率。然而,即使使用init[A],这种随机初始化方法仍然会导致初始梯度较小,从而导致收敛速度较慢。为了解决这个问题,PiSSA使用预训练矩阵的主奇异分量来初始化LoRA。由于主奇异分量代表矩阵中最重要的方向,因此将初始权重与这些分量对齐可以加速收敛并提高性能。相比之下,MiLoRA使用次要奇异分量来初始化LoRA。考虑到低秩矩阵的随机初始化会干扰预训练矩阵中学习到的重要特征,减少这种干扰可以在适应新任务的同时提高整体性能。

3.3.2 Gradient Update Optimization

为了进一步提升LoRA的收敛性和可靠性,一些研究从梯度更新的角度提出了改进措施。文献[37]提出了一种基于黎曼优化的缩放梯度方法,在梯度更新步骤中加入一个 r × r r×r r×r子项,以提高LoRA的收敛性和超参数鲁棒性。**LoRA+**通过理论分析发现,需要对矩阵 A A A B B B分别设置比例学习率,以实现稳定的特征学习,加快收敛速度​​。ResLoRA在LoRA中引入残差连接,优化梯度传播路径,加快训练收敛,提升模型性能。同样,SIBO通过将初始token表示的残差连接注入LoRA的输入来缓解过度平滑的问题。此外,为了进一步减少计算资源,文献[41]采用了CMA-ES、FWA等无梯度优化方法对LoRA进行优化,在few-shot NLU任务中展现出颇具竞争力的性能。此外,DoRA(权重分解低秩自适应)限制了梯度更新,关注参数的方向变化。它将预训练的权重分解为方向和幅度两个分量,并将 LoRA 仅应用于方向分量以增强训练稳定性。

3.3.3 Overfitting Mitigation

虽然相较于完全微调,LoRA 有效地减少了可训练参数的数量,但一些研究表明 LoRA 也容易出现过拟合,这与之前的观点相矛盾。为了解决这个问题,BiLoRA 采用了双层优化策略,在训练数据的不同子集上交替训练低秩增量矩阵的奇异向量和奇异值,这种方法避免了在单个数据集上同时优化不同层次的参数,从而减轻了过拟合。此外,文献 [44] 将 dropout 用于 LoRA 参数以减少过拟合,而 HiddenKey 对注意力层采用了列式 dropout,对前馈层采用了元素式 dropout。

3.4 Combining with other Learning Paradigms

LoRA 与其他学习范式兼容,例如贝叶斯学习、上下文学习和主动学习。将 LoRA 与这些学习范式相结合可以解决损害下游适应性能的几个问题。例如,与贝叶斯学习相结合,Laplace-LoRA 可以缓解下游适应中发生的过度自信现象。与上下文学习相结合,PILLOW 旨在解决某些下游任务中存在的低资源困境。与主动学习相结合,STAR 可以有效提高数据效率。

4.Cross-task Generalization

在这里插入图片描述
  LoRA 的可插拔特性使用户能够为不同的任务构建 LoRA 插件。例如,在 Hugging Face 1) 上,有超过 300 个与 Flan-T5 兼容的 LoRA 插件可用于不同的任务。这些积累的 LoRA 插件不仅可以独立使用,还可以混合使用以实现跨任务泛化。将多个 LoRA 插件混合在一起,即 LoRA 混合,已广泛应用于需要跨任务泛化的领域,例如多任务学习、领域自适应和持续学习。现有的 LoRA 混合方法可分为 (1) 手动设计权重的混合;(2) 学习权重的混合;(3) LoRA 专家的混合。本节分别介绍每类方法,如图 3 所示。

4.1 Mixture with Manually Designed Weights

4.2 Mixture with Learnt Weights

4.3 Mixture of LoRA Experts

5.Efficiency Improving

随着LLM的普及,对训练和运行LoRA插件的需求迅速增加。这种日益增长的需求带来了不可忽视的计算负担;因此,对于LoRA来说,越小、越快越好。为了满足这一需求,现有的方法从(1)参数减少;(2)参数量化;(3)并行LoRA计算框架的角度提高了LoRA的计算效率。

5.1 Parameter Reduction

5.2 Parameter Quantization

5.3 Parallel LoRA Computing Frameworks

6.LoRA for Federated Learning

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值