(ICLR=2025)生成的表征对齐:训练扩散Transformer比你想象的更简单

news2025/3/18 2:50:03

生成的表征对齐:训练扩散Transformer比你想象的更简单

paper是KAIST发表在ICLR 2025的工作

paper title:REPRESENTATION ALIGNMENT FOR GENERATION: TRAINING DIFFUSION TRANSFORMERS IS EASIER THAN YOU THINK

Code:链接

ABSTRACT

最近的研究表明,扩散模型中的去噪过程能够在模型内部产生有意义的(判别性)表示,尽管这些表示的质量仍然落后于通过最近的自监督学习方法学习的表示。我们认为,训练大规模扩散模型以进行生成的主要瓶颈之一在于如何有效地学习这些表示。此外,通过引入高质量的外部视觉表示,而不是仅依赖扩散模型独立学习这些表示,训练可以变得更加容易。我们通过引入一种简单的正则化方法——表示对齐(REPA),来研究这一点,该方法将去噪网络中噪声输入隐藏状态的投影与从外部预训练视觉编码器获得的干净图像表示对齐。结果非常显著:当应用于流行的扩散和基于流的Transformer模型(如DiTs和SiTs)时,我们的简单策略在训练效率和生成质量上都取得了显著的提升。例如,我们的方法可以将SiT训练速度提高超过17.5倍,并且在不到40万个步骤的训练中,达到与经过700万步骤训练的SiT-XL模型(无需分类器引导)的相同性能。在最终生成质量方面,我们的方法通过使用分类器引导和引导间隔,达到了FID=1.42的最新成果。

图1

图1:表示对齐使扩散变压器训练变得明显容易。我们的框架REPA明确地将扩散模型表示与通过简单的正则化的强大预验证的视觉表示一致。值得注意的是,模型训练变得更加高效,高效,并且比vanilla模型的收敛速度> 17.5倍。

1 INTRODUCTION

基于去噪的生成模型,如扩散模型(Ho et al., 2020; Song et al., 2021)和基于流的模型(Albergo & Vanden-Eijnden, 2023; Lipman et al., 2022; Liu et al., 2023),已成为生成高维视觉数据的一种可扩展方法。它们在诸如零样本文本到图像(Podell et al., 2023; Saharia et al., 2022; Esser et al., 2024)或文本到视频(Polyak et al., 2024; Brooks et al., 2024)生成等具有挑战性的任务中取得了显著成功。

近期的研究探讨了将扩散模型用作表示学习方法(Li et al., 2023a; Xiang et al., 2023; Chen et al., 2024c; Mukhopadhyay et al., 2021),并表明这些模型能够在其隐藏状态中学习到判别性特征,同时更优的扩散模型能够学习到更好的表示(Xiang et al., 2023)。实际上,这一观察结果与早期采用去噪分数匹配(denoising score matching)(Vincent, 2011)的方法密切相关,该方法是一种自监督学习方法(Bengio et al., 2013),其隐式地学习一个表示 h h h,作为去噪自编码器 s θ ( x ~ ) s_{\theta}(\tilde{x}) sθ(x~) 的隐藏状态,通过从被破坏的输入 $ \tilde{x}$ 中重建 x x x(Yang & Wang, 2023)。然而,重建任务可能并不适用于学习优良的表示,因为它无法消除 x x x 中不必要的细节以用于表示学习(LeCun, 2022; Assran et al., 2023)。

我们的方法。 在本研究中,我们确定了训练扩散模型的主要挑战在于需要学习一个高质量的内部表示 h h h。我们表明,对于生成型扩散模型而言,训练过程在借助外部表示 y ∗ y_* y 进行支持时会变得显著更简单且更高效。具体而言,我们提出了一种简单的正则化技术,该技术利用了自监督视觉表示的最新进展,以 y ∗ y_* y 作为辅助,从而在训练效率和扩散变换器的生成质量方面实现了显著提升。

我们首先对近期的扩散变换器(Peebles & Xie, 2023; Ma et al., 2024a)以及最先进的自监督视觉模型 DINOv2(Oquab et al., 2024)进行实证分析。与以往研究(Xiang et al., 2023)类似,我们首先观察到预训练的扩散模型确实能够学习有意义的判别性表示(如线性探测实验所示,见图 2a)。然而,这些表示明显逊色于 DINOv2 生成的表示。

随后,我们发现扩散模型所学习的表示与 DINOv2 的表示仍然较为不对齐(图 2b),我们通过测量表示对齐(representation alignment)(Huh et al., 2024)对此进行研究。最终,我们观察到扩散模型和 DINOv2 之间的这种对齐性在训练时间延长以及模型规模增大时会持续提升(图 2c)。

图2

图2:预验证的SIT模型的比对行为。我们经验研究了Dinov2-G和原始的SIT-XL/2检查点之间的特征对齐,该检查点训练了7M迭代。 (a)虽然SIT学习了语义上有意义的表示,但与Dinov2相比,仍然存在显着的差距。 (b)使用cknna(Huh等,2024),我们观察到SIT已经显示出与Dinov2的一致性,尽管与其他视觉编码器相比,其绝对值较低。 (c)通过更大的模型和更长的训练来改善对齐方式,但是进度仍然缓慢且不足。

这些见解启发我们通过引入外部自监督表示来增强生成模型。然而,在使用现成的自监督视觉编码器(例如,通过微调编码器以适应生成任务)时,这种方法并不直观。第一个挑战是输入不匹配:扩散模型处理的是带有噪声的输入 x ~ \tilde{x} x~,而大多数自监督学习编码器是在干净的图像 x x x 上进行训练的。这一问题在现代**潜变量扩散模型(latent diffusion models)中更加明显,因为它们以经过预训练的 VAE 编码器(Rombach et al., 2022)压缩后的潜变量图像 z = E ( x ) z = E(x) z=E(x) 作为输入。此外,这些现成的视觉编码器并非专为重建或生成任务而设计。为了解决这些技术难题,我们引导扩散模型的特征学习,采用正则化(regularization)**技术,将预训练的自监督表示蒸馏到扩散表示中,从而提供了一种灵活的方式来整合高质量表示。

图3

图3:桥接表示差距:(a)我们的方法,repa显着降低了扩散变压器和dinov2之间的“语义差距”,如成像网分类的线性探测结果所证明。 (b)使用REPA,即使仅几层(例如8)层,扩散变压器和DINOV2之间的比对也大大改善。 (c)值得注意的是,随着对齐方式的改善,我们可以推动SIT模型的一代代表性信封:在相同数量的训练迭代次数中,它既可以提供更好的生成质量,又提供更强的线性探测结果。我们使用一个在第8层训练了REPA的单个网络,并在不同层进行评估。

具体而言,我们提出了表示对齐(REPresentation Alignment, REPA),这是一种基于最新扩散变换器架构(Peebles & Xie, 2023)的简单正则化技术。本质上,REPA 通过蒸馏预训练的自监督视觉表示 y ∗ y_* y(源自干净图像 x x x),将其融入扩散变换器的表示 h h h,用于去噪过程中处理带噪输入 x ~ \tilde{x} x~。该正则化减少了表示 h h h 和自监督目标表示 y ∗ y_* y 之间的语义差距(如图 3a 所示),并使其更好地对齐(如图 3b 所示)。值得注意的是,这种增强的对齐显著提升了扩散变换器的生成性能(如图 3c 所示)。有趣的是,我们观察到,使用 REPA 时,仅需对齐前几个 Transformer 块即可实现充分的表示对齐。这使得扩散变换器的后续层可以专注于捕捉基于对齐表示的高频细节,从而进一步提高生成性能。

基于我们的分析,我们进行了系统级比较,以验证所提出方案的有效性,并将其应用于两个最新的扩散变换器:DiTs(Peebles & Xie, 2023)和 SiTs(Ma et al., 2024a)。在 SiT 训练中,我们的模型在类别条件的 ImageNet 生成任务(Deng et al., 2009)上,仅用 40 万次训练迭代(无需分类器引导)即可达到 FID=7.9(Ho & Salimans, 2022),训练速度比标准 SiTs 快 17.5 倍。此外,在使用分类器引导的情况下,我们的方法将最终的 FID 从 2.06 降至 1.80,并在使用引导区间(Kynkäänniemi et al., 2024)时达到了最新的最优结果 FID=1.42。

我们在本文中总结的主要贡献如下:

  • 我们假设,在扩散变换器中学习高质量表示对于提高其生成性能至关重要。
  • 我们提出了 REPA,这是一种用于对齐扩散变换器表示和强自监督视觉表示的简单正则化方法。
  • 我们的框架提高了扩散变换器的生成性能,例如,在 SiTs 任务中,我们实现了 17.5 倍加速训练,并在 ImageNet 生成任务上提升了 FID 评分。

2 PRELIMINARIES

我们通过随机插值(stochastic interpolants)(Albergo et al., 2023; Ma et al., 2024a)的统一视角,对基于流(flow)和扩散(diffusion)的模型进行了简要概述;更多详细信息请参见附录 A。

我们考虑一个连续的时间相关过程,该过程的数据 x ∗ \mathbf{x}_* x 服从分布 p ( x ) p(\mathbf{x}) p(x),并且高斯噪声 ϵ ∼ N ( 0 , I ) \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) ϵN(0,I),其中 t ∈ [ 0 , T ] t \in [0,T] t[0,T]
x t = α t x ∗ + σ t ϵ , α 0 = σ T = 1 , α T = σ 0 = 0 , \mathbf{x}_t = \alpha_t \mathbf{x}_* + \sigma_t \boldsymbol{\epsilon}, \quad \alpha_0 = \sigma_T = 1, \quad \alpha_T = \sigma_0 = 0, xt=αtx+σtϵ,α0=σT=1,αT=σ0=0,
其中 α t \alpha_t αt σ t \sigma_t σt 分别是随时间 t t t 递减和递增的函数。在这样的过程中,存在一个概率流常微分方程(probability flow ordinary differential equation, PF ODE),其速度场表示为:
x ˙ t = v ( x t , t ) 。 \dot{\mathbf{x}}_t = \mathbf{v}(\mathbf{x}_t, t)。 x˙t=v(xt,t)

其中,该 ODE 在 t t t 时刻的分布等于边际分布 p t ( x ) p_t(\mathbf{x}) pt(x)。因此,可以通过求解方程 (2) 中的概率流 ODE(PF ODE),利用现有的 ODE 采样器(例如 Euler 采样器)从随机高斯噪声 ϵ ∼ N ( 0 , I ) \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) ϵN(0,I) 进行数据采样(Lipman et al., 2022; Ma et al., 2024a)。

该速度场 v ( x , t ) \mathbf{v}(\mathbf{x}, t) v(x,t) 由以下两个条件期望的和表示:
v ( x , t ) = E [ x ˙ t ∣ x t = x ] = α ˙ t E [ x ∗ ∣ x t = x ] + σ ˙ t E [ ϵ ∣ x t = x ] , \mathbf{v}(\mathbf{x}, t) = \mathbb{E}[\dot{\mathbf{x}}_t | \mathbf{x}_t = \mathbf{x}] = \dot{\alpha}_t \mathbb{E}[\mathbf{x}_* | \mathbf{x}_t = \mathbf{x}] + \dot{\sigma}_t \mathbb{E}[\boldsymbol{\epsilon} | \mathbf{x}_t = \mathbf{x}], v(x,t)=E[x˙txt=x]=α˙tE[xxt=x]+σ˙tE[ϵxt=x],
其中 v θ ( x t , t ) \mathbf{v}_{\theta}(\mathbf{x}_t, t) vθ(xt,t) 可用于近似该表达式,并通过最小化以下训练目标进行优化:
L velocity ( θ ) : = E x ∗ , ϵ , t [ ∥ v θ ( x t , t ) − α ˙ t x ∗ − σ ˙ t ϵ ∥ 2 ] 。 \mathcal{L}_{\text{velocity}}(\theta) := \mathbb{E}_{\mathbf{x}_*, \boldsymbol{\epsilon}, t} \left[ \| \mathbf{v}_{\theta}(\mathbf{x}_t, t) - \dot{\alpha}_t \mathbf{x}_* - \dot{\sigma}_t \boldsymbol{\epsilon} \|^2 \right] 。 Lvelocity(θ):=Ex,ϵ,t[vθ(xt,t)α˙txσ˙tϵ2]

此外,存在一个逆向随机微分方程(stochastic differential equation, SDE),该 SDE 的边际分布 p t ( x ) p_t(\mathbf{x}) pt(x) 与方程 (2) 中的 PF ODE 的边际分布一致,扩散系数为 w t w_t wt(Ma et al., 2024a):
d x t = v ( x t , t ) d t − 1 2 w t s ( x t , t ) d t + w t d w ˉ t , d\mathbf{x}_t = \mathbf{v}(\mathbf{x}_t, t) dt - \frac{1}{2} w_t \mathbf{s}(\mathbf{x}_t, t) dt + \sqrt{w_t} d\bar{\mathbf{w}}_t, dxt=v(xt,t)dt21wts(xt,t)dt+wt dwˉt,
其中分数 s ( x , t ) \mathbf{s}(\mathbf{x}, t) s(x,t) 为以下条件期望:
s ( x , t ) = − σ t − 1 E [ ϵ ∣ x t = x ] 。 \mathbf{s}(\mathbf{x}, t) = -\sigma_t^{-1} \mathbb{E}[\boldsymbol{\epsilon} | \mathbf{x}_t = \mathbf{x}]。 s(x,t)=σt1E[ϵxt=x]
它可以通过 v ( x , t ) \mathbf{v}(\mathbf{x}, t) v(x,t) 直接计算得到,对于 t > 0 t > 0 t>0
s ( x , t ) = σ t − 1 ⋅ α t v ( x , t ) − α ˙ t x α ˙ t σ t − α t σ ˙ t 。 \mathbf{s}(\mathbf{x}, t) = \sigma_t^{-1} \cdot \frac{\alpha_t \mathbf{v}(\mathbf{x}, t) - \dot{\alpha}_t \mathbf{x}}{\dot{\alpha}_t \sigma_t - \alpha_t \dot{\sigma}_t}。 s(x,t)=σt1α˙tσtαtσ˙tαtv(x,t)α˙tx
这意味着数据可以通过方程 (5) 使用 SDE 求解器生成。

根据 Ma et al. (2024a),我们主要考虑一个简单的线性插值方案,并限制 T = 1 T = 1 T=1 α t = 1 − t \alpha_t = 1 - t αt=1t σ t = t \sigma_t = t σt=t。然而,我们的方法同样适用于类似的变体(例如 DDPM; Ho et al. 2020),其采用离散化过程并使用不同的 α t \alpha_t αt σ t \sigma_t σt,其中 N ( 0 , I ) \mathcal{N}(\mathbf{0}, \mathbf{I}) N(0,I) 作为平衡分布(即如果 t → ∞ t \to \infty t,则 x t \mathbf{x}_t xt 收敛到 N ( 0 , I ) \mathcal{N}(\mathbf{0}, \mathbf{I}) N(0,I))。

3 REPA: REGULARIZATION FOR REPRESENTATION ALIGNMENT

3.1 OVERVIEW


p ( x ) p(\mathbf{x}) p(x) 为数据 x ∈ X \mathbf{x} \in \mathcal{X} xX 的未知目标分布。我们的目标是通过从 p ( x ) p(\mathbf{x}) p(x) 采样的数据集来近似 p ( x ) p(\mathbf{x}) p(x)。为了降低计算成本,我们采用了当前流行的潜变量扩散模型(latent diffusion)(Rombach et al., 2022)。这涉及学习一个潜变量分布 p ( z ) p(\mathbf{z}) p(z),其中 z = E ( x ) \mathbf{z} = E(\mathbf{x}) z=E(x) 是通过预训练自编码器(例如 KL-VAE;Rombach et al., 2022)进行压缩得到的潜变量,而 x ∼ p data ( x ) \mathbf{x} \sim p_{\text{data}}(\mathbf{x}) xpdata(x)

我们的目标是通过训练扩散模型 v θ ( z t , t ) \mathbf{v}_{\theta}(\mathbf{z}_t, t) vθ(zt,t) 来学习该分布,使用的目标函数包括速度预测等(详见第 2 节)。在此,我们从自监督表示学习(Bengio et al., 2013)的角度重新审视去噪得分匹配(denoising score matching)。从这一视角来看,可以将扩散模型 v θ ( z t , t ) \mathbf{v}_{\theta}(\mathbf{z}_t, t) vθ(zt,t) 视为两个函数的组合 g θ ∘ f θ g_{\theta} \circ f_{\theta} gθfθ,其中 f θ : Z → H f_{\theta}: \mathcal{Z} \to \mathcal{H} fθ:ZH 是编码器,使得 f θ ( z t ) = h t f_{\theta}(\mathbf{z}_t) = \mathbf{h}_t fθ(zt)=ht,而 g θ : H → Z g_{\theta}: \mathcal{H} \to \mathcal{Z} gθ:HZ 是解码器,使得 g θ ( h t ) = v t g_{\theta}(\mathbf{h}_t) = \mathbf{v}_t gθ(ht)=vt,即编码器 f θ f_{\theta} fθ 隐式地学习了一个表示 h t \mathbf{h}_t ht,用于重构目标 v t \mathbf{v}_t vt

然而,通过预测输入空间(例如生成像素)来学习一个良好的表示可能是具有挑战性的,因为模型通常无法有效地去除无关细节,而这些细节的去除对于学习强大的表示至关重要(LeCun, 2022; Assran et al., 2023)。我们认为,大规模扩散模型在生成任务上的训练瓶颈之一就在于表示学习,这是当前扩散模型的弱点。此外,我们假设,通过高质量的外部视觉表示来引导模型,而不是单纯依靠扩散模型自行学习表示,可以使训练过程更加容易。

为了解决这一挑战,我们提出了一种简单的正则化方法,称为 表示对齐(REPresentation Alignment, REPA),该方法基于最新的扩散变换器架构(Peebles & Xie, 2023; Ma et al., 2024a)(详见附录 B 进行说明)。简而言之,我们的正则化方法能够将预训练的自监督视觉表示有效地蒸馏到扩散变换器中。这使得扩散模型能够利用这些具有丰富语义信息的外部表示来进行生成,从而显著提升性能。

3.2 OBSERVATIONS


为了更深入地研究这一问题,我们首先分析了预训练 SiT 模型(Ma et al., 2024a)在 ImageNet(Deng et al., 2009)上的逐层行为,该模型使用线性插值和速度预测进行训练。特别地,我们关注扩散变换器与当前最先进的自监督视觉模型 DINOv2(Oquab et al., 2024)之间的表示差距(representation gap)。我们从三个角度来研究这一问题:语义差距(semantic gap)、特征对齐的变化(feature alignment progression)及最终的特征对齐结果。

对于 语义差距(semantic gap),我们使用 DINOv2 的特征,并对其进行线性探测,与训练 700 万步的 SiT 模型进行对比,遵循 Xiang et al. (2023) 中相同的协议,即对扩散变换器隐藏状态进行全局池化后进行线性探测。接着,为了衡量 特征对齐(feature alignments),我们采用 CKRNA(Huh et al., 2024),这是一种基于最近邻匹配的核对齐度量方法,相关工作可参考 CKA(Kornblith et al., 2019)。这使得我们可以定量评估不同表示之间的对齐情况。具体结果见图 2,更多细节(例如 CKRNA 的定义)可见附录 C.1。


扩散变换器在最先进视觉编码器面前表现出显著的语义差距

如图 2a 所示,我们观察到预训练扩散变换器的隐藏状态表示在 layer 20 处达到了相对较高的线性探测峰值,这与先前研究(Xiang et al., 2023; Chen et al., 2024c)一致。然而,其表现仍然远低于 DINOv2,表明这两种表示之间存在显著的语义差距。此外,我们发现,在达到这一峰值后,线性探测性能迅速下降,这表明扩散变换器必须从单纯学习语义丰富的表示转变为生成包含高频细节的图像。

扩散模型的表示已经(较弱地)与其他视觉表示对齐

在图 2b 中,我们报告了 SiT 与 DINOv2 之间的表示对齐情况,使用了 CKNNA 进行评估。特别是,SiT 模型的表示已经比 MAE(He et al., 2022)表现出更好的对齐性,后者也是一种基于掩码补全的自监督学习方法。然而,其绝对对齐分数仍然低于其他自监督学习方法(例如 MoCov3(Chen et al., 2021)与 DINOv2 之间的对齐)。这些结果表明,尽管扩散变换器的表示在某种程度上与自监督视觉表示对齐,但这种对齐仍然较弱。


更大的模型和更长时间的训练能够改善对齐

我们还测量了不同模型规模和训练迭代次数下的 CKNNA 值。如图 2c 所示,我们观察到随着模型规模的增大和训练时间的延长,对齐性有所改善。然而,其绝对对齐分数仍然较低,甚至在经历了 700 万次迭代的长期训练后,仍未达到其他自监督视觉编码器(例如 MoCov3 和 DINOv2)之间的对齐水平。

这些发现并不是SIT模型独有的,而是在其他基于Denoising的生成变压器中观察到的。例如,在图2中,我们使用DIT模型(Peebles&XIE,2023)提出了类似的分析,该模型在Imagenet上以DDPM物镜预测(Ho等,2020; Nichol&Dhariwal,2021)。有关更多详细信息,请参见附录C.2。

3.3 REPRESENTATION ALIGNMENT WITH SELF-SUPERVISED REPRESENTATIONS


REPA 通过对齐模型隐藏状态的 patch 级投影与预训练的自监督视觉表示来进行优化。具体而言,我们使用干净图像的表示作为目标,并探索其影响。这种正则化的目标是让扩散变换器的隐藏状态能够预测无噪声的视觉表示,从而提取包含有用语义信息的噪声输入。这为后续层重构目标提供了有意义的指导。

形式化地,设 f f f 是一个预训练编码器,并考虑一个干净图像 x ∗ x_* x。令 y ∗ = f ( x ∗ ) ∈ R N × D y_* = f(x_*) \in \mathbb{R}^{N \times D} y=f(x)RN×D,其中 N , D > 0 N, D > 0 N,D>0 分别表示 patch 的数量和 f f f 的嵌入维度。REPA 通过 h ϕ ( h t ) ∈ R N × D h_{\phi}(h_t) \in \mathbb{R}^{N \times D} hϕ(ht)RN×D y ∗ y_* y 对齐,其中 h ϕ ( h t ) h_{\phi}(h_t) hϕ(ht) 是扩散变换器编码器输出 h t = f θ ( z t ) h_t = f_{\theta}(z_t) ht=fθ(zt) 通过可训练投影头 h ϕ h_{\phi} hϕ 进行投影后的结果。在实践中,我们通常使用多层感知机(MLP)来参数化 h ϕ h_{\phi} hϕ

特别地,REPA 通过最大化预训练表示 y ∗ y_* y 和隐藏状态 h t h_t ht 之间的 patch 级相似度来实现对齐:

L REPA ( θ , ϕ ) : = − E x ∗ , ϵ , t [ 1 N ∑ n = 1 N sim ( y ∗ [ n ] , h ϕ ( h t [ m , n ] ) ) ] , \mathcal{L}_{\text{REPA}}(\theta, \phi) := -\mathbb{E}_{x_*, \epsilon, t} \left[ \frac{1}{N} \sum_{n=1}^{N} \text{sim}(y_*^{[n]}, h_{\phi}(h_t^{[m,n]})) \right], LREPA(θ,ϕ):=Ex,ϵ,t[N1n=1Nsim(y[n],hϕ(ht[m,n]))],

其中 n n n 表示 patch 索引, m m m f θ f_{\theta} fθ 的深度, sim ( ⋅ , ⋅ ) \text{sim}(\cdot, \cdot) sim(,) 是一个预定义的相似性函数。

在实践中,我们将该项添加到扩散模型的目标函数中,如第 2 节和附录 A 所述。例如,对于 Eq. (4) 所描述的速度模型训练,优化目标变为:

L : = L velocity + λ L REPA \mathcal{L} := \mathcal{L}_{\text{velocity}} + \lambda \mathcal{L}_{\text{REPA}} L:=Lvelocity+λLREPA

其中 λ > 0 \lambda > 0 λ>0 是一个超参数,用于控制去噪和表示对齐之间的权衡。我们主要研究了这种正则化在两个流行目标上的影响:改进的 DDPM(Nichol & Dhariwal, 2021)用于 DiT(Peebles & Xie, 2023)和线性随机插值用于 SiT(Ma et al., 2024a),但其他目标也可以考虑。

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

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

相关文章

白嫖RTX 4090?Stable Diffusion:如何给线稿人物快速上色?

大家都知道,在设计的初期,我们通常会先绘制草图,然后再进行上色处理,最终才开始进行最终的设计工作。在这个上色的过程中,配色是至关重要的一环。这不仅方便了内部同事的评审,也让产品方和客户可以直观地了…

Bash (Bourne-Again Shell)、Zsh (Z Shell)

文章目录 1. 历史背景2. 主要区别3. 功能对比自动补全插件和主题路径扩展提示符定制 4. 性能5. 使用场景6. 如何切换 Shell7. 总结 以下是 Bash 和 Zsh 之间的主要区别,列成表格方便对比: 特性BashZsh默认Shell大多数Linux发行版默认ShellmacOS默认She…

pikachu[皮卡丘] 靶场全级别通关教程答案 以及 学习方法 如何通过渗透测试靶场挑战「pikachu」来精通Web渗透技巧? 一篇文章搞完这些问题

目录 Pikachu靶场 部署 暴力破解漏洞 学习地址: 靶场练习: 基于表单的暴力破解 验证码绕过(on server) 验证码绕过(on Client) token防爆破? XSS跨站脚本攻击 学习地址: 靶场练习: 反射型xss(get) 反射性xss(post) 存储型xss DOM型xss xss盲打 x…

汽车零部件工厂如何借助安灯呼叫按钮盒提升生产响应速度

在现代汽车零部件工厂的生产环境中,高效的信息传递和快速的响应速度是确保生产顺畅运行的关键。然而,传统的口头呼喊或现场沟通方式往往存在信息传递慢、现场嘈杂、责任人难以及时找到等问题,尤其在设备故障或缺料时,这些问题会导…

Idea 2024.3 使用CodeGPT插件整合Deepseek

哈喽,大家好,我是浮云,最近国产大模型Deepseek异常火爆,作为程序员我也试着玩了一下,首先作为简单的使用,大家进入官网,点击开始对话即可进行简单的聊天使用,点击获取手机app即可安装…

「vue3-element-admin」告别 vite-plugin-svg-icons!用 @unocss/preset-icons 加载本地 SVG 图标

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 …

docker /var/lib/docker/overlay2目录把磁盘空间占满问题

1、查看服务器磁盘空间 df -h果然100%了,docker系统文件把磁盘空间占满了。 2、进入overlay2目录,查找那个容器工作目录占用最高 cd /var/lib/docker/overlay2du -h --max-depth1详见下图 好家伙占用110G!复制目录名称2c3c48ccac533c5d4a366d45a19bb9…

Redis深入学习

目录 Redis是什么? Redis使用场景 Redis线程模型 Redis执行命令是单线程的为什么还这么快? Redis持久化 Redis 事务 Key 过期策略 Redis 和 mysql 如何保证数据一致? 缓存穿透 缓存击穿 缓存雪崩 Redis是什么? redis是一…

EasyExcel 导出合并层级单元格

EasyExcel 导出合并层级单元格 一、案例 案例一 1.相同订单号单元格进行合并 合并结果 案例二 1.相同订单号的单元格进行合并2.相同订单号的总数和总金额进行合并 合并结果 案例三 1.相同订单号的单元格进行合并2.相同订单号的商品分类进行合并3.相同订单号的总数和总金额…

青少年编程与数学 02-009 Django 5 Web 编程 01课题、概要

青少年编程与数学 02-009 Django 5 Web 编程 01课题、概要 一、Django 5Django 5 的主要特性包括: 二、MVT模式三、官方网站四、内置功能数据库 ORM(对象关系映射)用户认证和授权表单处理模板引擎URL 路由缓存框架国际化和本地化安全性功能管…

2.7学习

crypto buu-还原大师 仔细阅读题目,这里有一段字符串,但是其中有四个大写字母被替换成了‘?’,那么我们写脚本:首先将四个问号均换成26个大写字母并且组成不同的组合, 所以有四个循环让四个问号都遍历26个…

oracle ORA-27054报错处理

现象 在oracle执行expdp,rman备份,xtts的时候,由于没有足够的本地空间,只能使用到NFS的文件系统但有时候会出现如下报错 ORA-27054: NFS file system where the file is created or resides is not mounted with correct options根据提示信…

使用LLaMA Factory踩坑记录

前置条件:电脑显卡RTX 4080 问题:LLaMA-Factory在运行的时候,弹出未检测到CUDA的报错信息 结论:出现了以上的报错,主要可以归结于以下两个方面: 1、没有安装GPU版本的pytorch,下载的是CPU版本…

电路研究9.3——合宙Air780EP中的AT开发指南(含TCP 示例)

根据合宙的AT研发推荐, AT指令基本上也简单看完了,这里开始转到AT的开发了。 AT 命令采用标准串口进行数据收发,将以前复杂的设备通讯方式转换成简单的串口编程, 大大简化了产品的硬件设计和软件开发成本,这使得几乎所…

Reqable使用实践

一、背景 日常开发中,难免要抓取请求数据,查看接口数据,从而更好定位问题,基于这个原因,查找了一些抓包工具,例如: HttpCanary、 Steam 、Fiddler等,不是要钱,就是只对苹…

【蓝桥杯嵌入式】2_LED

全部代码网盘自取 链接:https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码:3ii2 1、电路图 74HC573是八位锁存器,当控制端LE脚为高电平时,芯片“导通”,LE为低电平时芯片“截止”即将输出状态“锁存”…

B树详解及其C语言实现

目录 一、B树的基本原理 二、B树操作过程图形化演示 三、B树的应用场景 四、C语言实现B树及示例 五、代码执行结果说明 六、应用实例:文件系统目录索引 七、总结 一、B树的基本原理 B树(B-Tree) 是一种自平衡的树数据结构,…

ARM64 Linux 内核学习指南:从基础到实践

前言 ARM64 作为当今主流的处理器架构,被广泛应用于移动设备、嵌入式系统和服务器领域。学习 ARM64 在 Linux 内核中的实现,不仅有助于深入理解操作系统底层机制,还能提升在内核开发、驱动编写、虚拟化等领域的专业能力。 本指南面向对 Lin…

零基础都可以本地部署Deepseek R1

文章目录 一、硬件配置需求二、详细部署步骤1. 安装 Ollama 工具2. 部署 DeepSeek-R1 模型3. API使用4. 配置图形化交互界面(可选)5. 使用与注意事项 一、硬件配置需求 不同版本的 DeepSeek-R1 模型参数量不同,对硬件资源的要求也不尽相同。…

掌握Spring @SessionAttribute:跨请求数据共享的艺术

SessionAttribute注解在Spring中的作用,就像是一个“数据中转站”。 在Web应用中,我们经常需要在多个请求之间共享数据。比如,用户登录后,我们需要在多个页面或请求中保持用户的登录状态。这时,SessionAttribute注解就…