(ICLR-2022)LoRA:大型语言模型的低秩自适应

LoRA:大型语言模型的低秩自适应

Paper是Microsoft Corporation发表在ICLR 2022的工作

Paper Title:LoRA: Low-Rank Adaptation of Large Language Models

Code :地址

Abstract

自然语言处理的主导范式包括对通用领域数据进行大规模预训练,并适应特定任务或领域。 随着我们对更大的模型进行预训练,传统的微调(重新训练所有模型参数)变得不那么可行。以 GPT-3 175B 为例,部署许多独立的微调模型实例(每个实例有 175B 个参数)的成本极其高昂。我们提出了低秩自适应(LoRA),它冻结预训练的模型权重,并将可训练的秩分解矩阵注入 Transformer 架构的每一层,大大减少下游任务的可训练参数数量。对于 GPT-3,与完全微调相比,LoRA 可以将可训练参数的数量减少 10,000 倍,计算硬件要求减少 3 倍。尽管 LoRA 的可训练参数更少、训练吞吐量更高且没有额外的推理延迟,但在 GPT-3 和 GPT-2 上,其模型质量表现与微调相当或更好。我们还对语言模型适配中的秩缺陷进行了实证研究,这揭示了 LoRA 的有效性。

1 Introduction

自然语言处理中的许多应用都依赖于将一个大规模、预训练的语言模型适配到多个下游应用。这种适配通常通过微调来完成,微调会更新预训练模型的所有参数。微调的主要缺点是它需要存储与原始模型中一样多的参数。由于每隔几个月就要训练一次更大的模型,因此这从 GPT-2 [32] 或 BERT-large [9] 的“不便”变成了 GPT-3 [6] 的关键部署挑战,后者拥有 1750 亿个可训练参数。

许多研究人员试图通过仅调整一些参数或为新任务学习外部模块来缓解这种情况。这样,我们只需要为每个任务将少量特定于任务的参数加载到预训练模型中,从而大大提高了部署效率。然而,在实践中,现有技术要么通过扩展模型深度引入推理延迟 [15, 34],要么减少模型的可用序列长度 [14, 19, 21, 25]。更重要的是,这些先前的尝试有时无法匹配微调基线,从而在效率和模型质量之间造成权衡。

我们从 [1, 20] 中得到启发,这些研究表明,学习到的过度参数化模型实际上位于较低的内在维度上。我们假设语言模型自适应中的更新矩阵也具有较低的“内在秩”,从而导致了我们提出的低秩自适应 (LoRA) 方法。 LoRA 允许我们通过注入和优化密集层更新的秩分解矩阵来间接训练神经网络中的每个密集层,同时保持原始矩阵不变,如图 1 所示。以 GPT-3 175B 为例,我们表明,即使满秩(即 d)高达 12288,非常低的秩(即图 1 中的 r 可以是一或二)也足够了,这使得 LoRA 在空间和计算上都具有很高的效率。

图1

图 1:我们的重参数化。我们仅训练 A 和 B。

LoRA 具有以下几个关键优势。

  • 可以共享单个预训练模型,并用于为不同任务构建许多小型 LoRA 模块。我们可以将共享的原始模型保留在 VRAM 中,并通过替换图 1 中的矩阵 A 和 B 来有效地切换任务,从而显着降低存储要求和任务切换开销。
  • 它使训练更加高效,并将硬件进入门槛降低了 3 倍,因为在使用自适应优化器时,我们不需要计算梯度或维护大多数模型参数的优化器状态。相反,我们只优化注入的低秩矩阵,这些矩阵的参数要少得多。
  • 其简单的线性设计使我们能够在部署期间将更新矩阵与原始权重合并,不会引入推理延迟。
  • LoRA 与先前的技术正交,可以与其中许多技术相结合(例如前缀调整)。我们在附录 D 中提供了一个示例。

术语定义 我们频繁提到Transformer架构,并使用其常见维度的术语。我们称其隐藏大小或激活大小为 d model d_{\text{model}} dmodel。我们使用 W q , W k , W v W_q, W_k, W_v Wq,Wk,Wv W o W_o Wo 分别表示自注意力模块中的查询/键/值/输出投影矩阵。 W W W W 0 W_0 W0 表示预训练的权重矩阵, Δ W \Delta W ΔW 表示其在适配过程中的更新。我们使用 r r r 表示LoRA模块的秩。

2 Problem Statement

尽管我们的方案对训练目标不具依赖性,但我们将语言建模作为主要的使用场景。以下简要描述了语言建模问题,特别是针对给定任务提示的条件概率的最大化。

假设我们有一个参数化为 Φ \Phi Φ 的预训练自回归语言模型 p Φ ( y ∣ x ) p_{\Phi}(y \mid x) pΦ(yx)。例如, p Φ ( y ∣ x ) p_{\Phi}(y \mid x) pΦ(yx) 可以是基于Transformer架构的通用多任务学习模型,如GPT-2 [32] 或 GPT-3 [6]。现在,考虑将此预训练模型适配到(可能多个)下游条件文本生成任务,例如摘要生成、机器阅读理解(MRC)以及自然语言到SQL(NL2SQL)。每个下游任务通过上下文-目标对的训练数据集表示为: Z = { ( x i , y i ) } i = 1 , … , N \mathcal{Z}=\left\{\left(x_i, y_i\right)\right\}_{i=1, \ldots, N} Z={(xi,yi)}i=1,,N,其中 x i x_i xi y i y_i yi 均为标记序列。例如,在NL2SQL任务中, x i x_i xi 是自然语言查询, y i y_i yi 是其对应的SQL命令;在摘要生成任务中, x i x_i xi 是文章内容, y i y_i yi 是其简短摘要。

在微调过程中,模型以预训练参数 Φ 0 \Phi_0 Φ0 初始化,并通过梯度优化更新到 Φ 0 + Δ Φ \Phi_0+\Delta \Phi Φ0+ΔΦ,以最大化条件语言建模目标:

max ⁡ Φ ∑ ( x , y ) ∈ Z ∑ t = 1 ∣ y ∣ log ⁡ ( p Φ ( y t ∣ x , y < t ) ) \max _{\Phi} \sum_{(x, y) \in \mathcal{Z}} \sum_{t=1}^{|y|} \log \left(p_{\Phi}\left(y_t \mid x, y_{ < t}\right)\right) Φmax(x,y)Zt=1ylog(pΦ(ytx,y<t))

全量微调的一个主要缺点是,对于每个下游任务,我们需要学习一组不同的参数 Δ Φ \Delta \Phi ΔΦ,其维度 ∣ Δ Φ ∣ |\Delta \Phi| ∣ΔΦ∣ 等于 ∣ Φ 0 ∣ \left|\Phi_0\right| Φ0。因此,如果预训练模型规模较大(例如GPT-3, ∣ Φ 0 ∣ ≈ 175 \left|\Phi_0\right| \approx 175 Φ0175 亿),存储和部署多个独立的微调模型实例将变得非常困难,甚至不可行。

在本文中,我们采用了一种参数高效的方法,其中任务特定的参数增量 Δ Φ = Δ Φ ( Θ ) \Delta \Phi=\Delta \Phi(\Theta) ΔΦ=ΔΦ(Θ) 被进一步编码为一组大小远小于 Φ 0 \Phi_0 Φ0 的参数 Θ \Theta Θ,满足 ∣ Θ ∣ ≪ ∣ Φ 0 ∣ |\Theta| \ll\left|\Phi_0\right| ∣Θ∣Φ0。因此,寻找 Δ Φ \Delta \Phi ΔΦ 的任务转化为对 Θ \Theta Θ 的优化问题:

max ⁡ Θ ∑ ( x , y ) ∈ Z ∑ t = 1 ∣ y ∣ log ⁡ ( p Φ 0 + Δ Φ ( Θ ) ( y t ∣ x , y < t ) ) \max _{\Theta} \sum_{(x, y) \in \mathcal{Z}} \sum_{t=1}^{|y|} \log \left(p_{\Phi_0+\Delta \Phi(\Theta)}\left(y_t \mid x, y_{< t}\right)\right) Θmax(x,y)Zt=1ylog(pΦ0+ΔΦ(Θ)(ytx,y<t))

正如后续章节将要介绍的,我们提出使用低秩表示来编码 Δ Φ \Delta \Phi ΔΦ,这在计算和内存方面均具有高效性。当预训练模型为 GPT-3 时,可训练参数的大小 ∣ Θ ∣ |\Theta| ∣Θ∣ 可以仅为 ∣ Φ 0 ∣ \left|\Phi_0\right| Φ0 0.01 % 0.01\% 0.01%

3 Our Method

我们描述了 LoRA 的简单设计及其实际意义。这里概述的原则适用于深度学习模型中的任何密集层,尽管出于实际原因,我们在实验中仅关注 Transformer 中的某些权重。

对更新矩阵的低秩约束

典型的神经网络包含许多执行矩阵乘法的密集层,这些层中的权重矩阵通常允许具有满秩。然而,当适配到特定任务时,Aghajanyan等人[1]表明,预训练语言模型具有低“内在维度”,即使在低维度的重参数化下也可以高效学习。受到这一观察的启发,我们猜测在适配下游任务时,对权重的更新也可能具有低“内在秩”。对于一个预训练的权重矩阵 W 0 ∈ R d × k W_0 \in \mathbb{R}^{d \times k} W0Rd×k,我们通过低秩分解约束其更新,使 W 0 + Δ W = W 0 + B A W_0+\Delta W=W_0+B A W0+ΔW=W0+BA,其中 B ∈ R d × r , A ∈ R r × k B \in \mathbb{R}^{d \times r}, A \in \mathbb{R}^{r \times k} BRd×r,ARr×k,且秩 r ≪ min ⁡ ( d , k ) r \ll \min (d, k) rmin(d,k)。在训练过程中, W 0 W_0 W0 被冻结且不接收梯度更新,而 A A A B B B 包含可训练参数。需要注意的是, W 0 W_0 W0 Δ W = B A \Delta W=B A ΔW=BA 均与相同的输入相乘,其输出向量按坐标逐项求和。对于 h = W 0 x h=W_0 x h=W0x,我们的修改前向传播公式为:

h = W 0 x + Δ W x = W 0 x + B A x h=W_0 x+\Delta W x=W_0 x+B A x h=W0x+ΔWx=W0x+BAx

我们在图1中展示了这种重参数化。我们对 A A A 使用随机高斯分布初始化,对 B B B 使用零初始化,因此在训练开始时 Δ W = B A \Delta W=B A ΔW=BA 为零。训练时,我们通过 1 r \frac{1}{r} r1 缩放 Δ W x \Delta W x ΔWx,以确保 Δ W x \Delta W x ΔWx 的坐标在训练后大约为 Θ ( 1 ) \Theta(1) Θ(1)


对预训练权重的权重衰减

我们注意到,LoRA 中的权重衰减与完全微调的行为有所不同。具体而言,对 A A A B B B 执行常规的权重衰减类似于衰减回预训练权重,这被认为是一种有效的正则化方法,可以减轻“灾难性遗忘” [16,18]。尽管单独研究这一效应的广泛实验超出了本文的范围,但我们认为这一点与受约束的参数空间结合起来,可能提供某些正则化优势。例如,在第5.3节和附录G.2节中可以看到,LoRA 在 r = d model = 1024 r=d_{\text{model}}=1024 r=dmodel=1024 时,在GPT-2 Medium上的表现优于完全微调。

无额外的推理延迟

在部署过程中,我们可以显式地计算 W = W 0 + B A W=W_0+B A W=W0+BA 并按常规方式进行推理。当需要切换到另一个下游任务时,我们可以通过减去 B A B A BA 并添加一个不同的 B ′ A ′ B^{\prime} A^{\prime} BA 来恢复 W 0 W_0 W0。这仅会导致峰值内存使用量的轻微增加,并在模型切换时增加一个不超过单次前向传播的延迟。关键是,在推理过程中,我们不会因此引入任何额外的延迟。

3.1 Applying LoRA to Transformer


原则上,LoRA 可以应用于神经网络中的任意子集权重矩阵,以减少可训练参数的数量。在 Transformer 架构中,自注意力模块包含四个权重矩阵( W q , W k , W v , W o ) \left.W_q, W_k, W_v, W_o\right) Wq,Wk,Wv,Wo),MLP 模块中包含两个权重矩阵。尽管输出维度通常被切分为多个注意力头,我们将 W q W_q Wq(或 W k , W v W_k, W_v Wk,Wv)视为维度为 d model × d model d_{\text{model}} \times d_{\text{model}} dmodel×dmodel 的单个矩阵。

我们将研究范围限制为仅改变自注意力模块的权重以适配下游任务,同时冻结 MLP 模块(即在下游任务中不训练这些模块),因为将 LoRA 应用于 MLP 模块会使可训练参数的数量在相同秩 r r r 下增加 4 倍。我们在第 6.1 节进一步研究了在 Transformer 中适配不同类型权重矩阵的效果。

实际优势与局限性

最显著的优势是内存和存储使用的减少。对于 Transformer,如果 r ≪ d model r \ll d_{\text{model}} rdmodel,我们可以减少 2 / 3 2/3 2/3 的显存消耗,因为不需要跟踪冻结参数的优化器状态。此外,检查点的大小可以减少大约 d model 2 γ r \frac{d_{\text{model}}}{2 \gamma r} 2γrdmodel 倍,其中 γ \gamma γ 是我们应用 LoRA 的权重矩阵比例。在我们的应用场景 GPT-3 中,显存消耗从 1.2 TB 减少到 350 GB。当 r = 4 r=4 r=4 γ = 1 / 6 \gamma=1/6 γ=1/6 时,检查点大小减少约 10 , 000 × 10,000 \times 10,000×(从 350 GB 减少到 35 MB)。这使得我们可以使用显著更少的 GPU 进行训练,并避免 I/O 瓶颈。

另一个优势是部署期间可以以更低的成本在任务之间切换,只需交换 LoRA 权重(通常以 MB 为单位),而不是交换所有权重(350 GB)。这使得能够在存储预训练权重的机器上动态激活和停用许多定制化模型。此外,由于无需计算绝大部分参数的梯度,我们在训练中观察到约 25 % 25\% 25% 的速度提升。

另一方面,LoRA 也有其局限性。例如,在单次前向传播中对具有不同 A A A B B B 的任务输入进行批处理并不简单,因为我们将 A A A B B B 吸收到 W W W 中以避免额外的推理延迟。

4 Related Works

Transformer 语言模型。Transformer [36] 是一种大量使用自注意力机制的序列到序列架构。[31] 通过使用 Transformer 解码器堆栈将其应用于自回归语言建模。从那时起,基于 Transformer 的语言模型就主导了 NLP,在许多任务中取得了最先进的成果。BERT [9] 和 GPT-2 [32] 带来了一种新范式——两者都是在大量文本上训练的大型 Transformer 语言模型——在通用领域数据上进行预训练后,在特定于任务的数据上进行微调,与直接在特定于任务的数据上进行训练相比,可以显着提高性能。训练更大的 Transformer 通常可以获得更好的性能,并且仍然是一个活跃的研究方向。GPT-3 [6] 是迄今为止训练的最大的单个 Transformer 语言模型,具有 175B 个参数。

提示工程和微调。虽然 GPT-3 175B 只需几个额外的训练示例就可以调整其行为,但结果在很大程度上取决于输入提示 [6]。这需要一种编写和格式化提示的经验艺术,以最大限度地提高模型在所需任务上的性能,这被称为快速工程或快速黑客。微调将在一般领域进行预训练的模型重新训练到特定任务 [9,31]。它的变体包括只学习参数的子集 [8,9],但从业者通常会重新训练所有参数以最大限度地提高下游性能。然而,GPT-3 175B 的庞大使得以通常的方式进行微调变得具有挑战性,因为它产生的检查点很大,而且由于它的内存占用量与预训练相同,因此硬件进入门槛很高。

参数高效自适应。[15, 34] 建议在神经网络的现有层之间插入适配器层。我们的方法使用类似于 [15] 的瓶颈结构来对权重更新施加低秩约束。关键的功能差异在于,我们学习到的权重可以在推理过程中与主权重合并,因此不会引入任何延迟,而适配器层则不会。最近,[14, 19, 21, 25] 提出优化输入词嵌入来代替微调,类似于提示工程的连续和可微分泛化。我们在实验部分中与 [21] 进行了比较。然而,这一系列工作只能通过在提示中使用更多特殊标记来扩大规模,当学习位置嵌入时,这些标记会占用任务标记的可用序列长度。

深度学习中的低秩结构。低秩结构在机器学习中非常常见。 许多机器学习问题都具有某些内在的低秩结构 [7, 13, 23, 24]。此外,众所周知,对于许多深度学习任务,尤其是那些具有过度参数化的神经网络的任务,学习到的神经网络在训练后将具有低秩特性 [29]。一些先前的研究甚至在训练原始神经网络时明确施加了低秩约束,例如 [17, 30, 35, 38, 39],然而,据我们所知,这些研究都没有考虑低秩更新以适应下游任务。在理论文献中,众所周知,当底层概念类具有某些低秩结构 [2, 3, 11] 时,神经网络的表现优于其他经典学习方法,包括相应的(有限宽度)神经切线核 [5, 22]。[4] 中的另一个理论结果表明,低秩适应可用于对抗性训练。总之,我们相信我们提出的低秩适应更新是受到文献充分启发的。

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

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

相关文章

linux上修改容器网卡docker0为固定ip

修改容器为固定ip段。 1.在一次项目中发现创建的容器网段跟办公室网段有冲突的&#xff0c;导致连接不上。修改容器ip为固定ip 这是默认启动docker自动创建的。172网段 2.修改前先停用运行容器 3.在配置路径下修改vim /etc/docker/daemon.json 4.重启docker systemctl re…

群硕融合医疗器械:打造智能治疗设备管理平台,全程护航精准手术

治疗成功率更高&#xff0c;患者更信任。 科技革命在医疗领域开花 在珠海航展上&#xff0c;一群灵活穿梭于复杂地形的机器狗吸引了人们的目光&#xff0c;它们仿佛是从科幻电影中走出的“未来战士”&#xff0c;展现了科技应用的无限潜力。 与此同时&#xff0c;医疗领域同…

成都栩熙酷网络科技抖音电商为您打造无忧购物体验

在这个信息爆炸的时代&#xff0c;电子商务的便捷性让越来越多的人选择在线购物。作为一家深耕西南地区的创新型科技企业&#xff0c;成都栩熙酷网络科技有限公司&#xff08;以下简称“栩熙酷”&#xff09;始终将用户的安全与满意度置于首位&#xff0c;致力于通过先进的技术…

细节之处见真章:移门缓冲支架的功能之美

细节之处见真章&#xff0c;这句话在移门缓冲支架的设计与应用中得到了完美的诠释。移门缓冲支架不仅仅是一个简单的五金件&#xff0c;它通过一系列精心设计的功能&#xff0c;确保了移门关闭过程中的平稳和安静&#xff0c;同时为家居环境增添了实用和美学价值。下面我们将深…

Hive 中 IP 字典的应用:让你的数据分析更加精准

​ 大家好&#xff01;时隔一年&#xff0c;再次更新帖子&#xff0c;今天我们来探讨一个在大数据分析中非常实用的功能&#xff1a;在 Hive 中将连续的 IP 地址合并为一整条数据&#xff0c;作为字典使用。这项技术可以帮助我们减少数据量&#xff0c;提高数据处理效率&#x…

LCR 023. 相交链表

一.题目&#xff1a; LCR 023. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 二.我的原始解法-无&#xff1a; 三.其他人的正确及好的解法&#xff0c;力扣解法参考&#xff1a; 哈希表法及双指针法&#xff1a;LCR 023. 相交链表 - 力扣&#xff08;LeetCode&#xff0…

【spring cache】自定义redis缓存管理器自控key过期时间

目录 说明实现思路实现步骤创建项目添加依赖创建自定义缓存管理器定义redis配置redis 缓存值格式序列化redis 操作方法&#xff08;可省略&#xff09;使用 spring cache 缓存注解Cacheable说明参数value 或者 cacheNames描述类型示例 key描述类型示例 keyGenerator描述类型示例…

Linux相关概念和易错知识点(23)(进程间通信、匿名管道、进程池)

目录 1.进程间通信&#xff08;IPC&#xff09; &#xff08;1&#xff09;为什么要有进程间通信&#xff1f; &#xff08;2&#xff09;通信的前提 &#xff08;3&#xff09;通信分类 2.匿名管道 &#xff08;1&#xff09;管道使用及现象 &#xff08;2&#xff09;匿…

D745 php+mysql+电影网站 在线视频播放网站 源码 配置 文档 全套资料

电影网站 1.项目描述2.开发背景与意义3.项目功能4.界面展示5.源码获取 1.项目描述 摘要 21世纪是信息的时代&#xff0c;随着信息技术与网络技术的发展&#xff0c;其已经渗透到人们日常生活的方方面面&#xff0c;与人们是日常生活已经建立密不可分的联系。电影网站是电影业发…

JAVA |日常开发中JSTL标签库详解

JAVA &#xff5c;日常开发中JSTL标签库详解 前言一、JSTL 概述1.1 定义1.2 优势 二、JSTL 核心标签库2.1 导入 JSTL 库2.2 <c:out>标签 - 输出数据2.3 <c:if>标签 - 条件判断2.4 <c:choose>、<c:when>和<c:otherwise>标签 - 多条件选择 结束语优…

开闭原则与访问修饰符 中 的线程安全问题

开闭原则 对外扩展开放&#xff0c;对修改关闭 看下面一段代码 当我们一个类 中公共的方法本来是线程安全的&#xff0c; 被子类重写之后改变了逻辑&#xff0c;并且有新的线程去运行&#xff0c;这时候 就不是 线程安全的了 运行结果如下 而我们使用 private修饰方法3&#…

使用uniapp开发小程序场景:在百度地图上调用接口返回的设备相关信息并展示

首先在百度地图开发者平台注册微信小程序开发密钥下载百度地图SDK-bmap-wx.min.js,下载地址在项目入口index.html页面进行引入页面中进行调用&#xff0c;代码示例如下<map id"map" longitude"108.95" latitude"34.34" scale"3" :m…

Java版-速通图的表示法--链式前向星

图实例 链式前向星最终的输出结果: 以某个点,例如,上图中1点开始,然后找1为开头的边,输出终点和权重; 添加边演示 如上图,以点的个数为基准建立head,数组,用来动态标记,以i为顶点的上一条边的index值;head数组里面的值是随着边的添加变化的,存着上一次以i为开头的…

基于51单片机的智能公交车报站系统GPS定位语音播报智能安全检测人数统计

功能描述 1.LCD12864可显示当前年月日&#xff0c;星期&#xff0c;时间&#xff0c; 当前站名&#xff0c;经纬度&#xff0c;是否连接GPS&#xff0c;自动/手动模式&#xff0c; 2.自带GPS定位&#xff0c;可实时显示经纬度&#xff1b; 3.通过DS1302时钟芯片&#xff0c;获…

MySQL 性能优化详解

MySQL 性能优化详解 硬件升级系统配置优化调整buffer_pool数据预热降低日志的磁盘落盘 表结构设计优化SQL语句及索引优化SQL优化实战案例 MySQL性能优化我们可以从以下四个维度考虑&#xff1a;硬件升级、系统配置、表结构设计、SQL语句和索引。 从成本上来说&#xff1a;硬件升…

Python_Flask02

所有人都不许学Java了&#xff0c;都来学Python&#xff01; 如果不来学的话请网爆我的老师 连接前的准备 安装pymysql 和 flask_sqlalchemy&#xff0c;安装第三下面两个所需要的包才能连接上数据库 pip install pymysql pip install flask_sqlalchemy pymysql是一个Pyth…

YOLOv6

YOLOv6 是继 YOLOv5 之后&#xff0c;由 Meituan 的团队开发的一个目标检测模型。YOLOv6 的目标是进一步提高模型的性能&#xff0c;特别是在处理速度、准确度、以及模型的精简化方面&#xff0c;并且它在一些特定任务上进行了优化。YOLOv6 引入了多个创新&#xff0c;并优化了…

VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

Linux安装Cuda和多个Cuda版本切换

解决的问题&#xff1a;服务器上跑深度学习代码&#xff0c;通常都需要用到Cuda。有时候跑的不同程序要求的配置Cuda版本可能也不同&#xff0c;会需要不同Cuda版本的替换。 Linux安装Cuda CUDA官网&#xff0c;下载安装&#xff0c;网址为&#xff1a;https://developer.nvi…

云渲染特效广告一秒费用预估是多少?

在计算云渲染特效广告每秒钟的费用时&#xff0c;我们需要综合考虑多个关键因素&#xff0c;包括特效的复杂性、所需的渲染计算能力以及对渲染质量的具体要求。通常情况下&#xff0c;影视特效级别的广告因其场景极其复杂&#xff0c;每帧渲染所需时间较长&#xff0c;从而导致…