填补领域空白!TerDiT:首次探索大规模DiT模型量化问题(MMLab出品)


论文链接:https://arxiv.org/pdf/2405.14854

项目链接:https://github.com/Lucky-Lance/TerDiT

最近在大规模预训练的文本到图像扩散模型方面的发展显著提高了高保真图像的生成能力,特别是基于transformer架构的扩散模型(DiTs)的出现。在这些扩散模型中,扩散transformer展示了卓越的图像生成能力,降低了FID分数并提高了可扩展性。然而,由于其庞大的参数数量,部署大规模的DiT模型可能会非常昂贵。尽管现有研究已经探索了扩散模型的高效部署技术,如模型量化,但关于基于DiT模型的研究仍然很少。为了解决这一研究空白,本文提出了TerDiT,一种面向量化感知训练(QAT)和高效部署的基于transformer的三值化扩散模型方案。本文专注于DiT网络的三值化化,并将模型规模从600M扩展到4.2B。本文的工作为大规模DiT模型的高效部署策略探索做出了贡献,证明了从头训练极低比特的扩散transformer模型的可行性,同时在图像生成能力上保持与全精度模型相当的竞争力。

介绍

大规模预训练的文本到图像扩散模型的进步已经成功生成了复杂且高度保真于输入条件的图像。值得注意的是,基于transformer架构的扩散模型(DiTs)的出现代表了该研究领域的一个重要进展。与其他扩散模型相比,扩散transformer展示了在更高计算量下实现更低FID分数的能力。最新的研究突出了扩散transformer架构在图像生成方面的显著能力,例如在Stable Diffusion 3方法中展示的成果,以及在视频生成方面的出色表现,如Sora所展示的工作。

鉴于扩散transformer模型的出色表现,研究人员现在越来越多地深入研究这些视觉模型的扩展规律,这与大语言模型相似。例如,Stable Diffusion 3提供了一系列参数规模的训练DiT模型,从8亿到80亿。此外,有研究人员推测Sora可能拥有大约30亿个参数。由于这些模型拥有庞大的参数数量,部署这些DiT模型往往成本高昂,尤其是在某些终端设备上。

为了应对部署难题,最近已经有一些关于高效部署扩散模型的研究工作,其中大多数集中在模型量化方面。然而,据本文所知,目前的研究仍然存在两个主要缺陷。首先,虽然量化基于 U-Net 的扩散模型已经受到了很多关注,但对于基于transformer的扩散模型的量化方法探索仍然非常有限。其次,目前文献中的大多数主流方法主要依赖于后训练量化 (PTQ) 技术来进行模型量化,这会导致不可接受的性能下降,特别是在极低比特宽度(例如2比特和1比特)下。然而,神经网络的极低比特量化非常重要,因为它可以显著减少部署所需的计算资源,尤其对于具有巨大参数规模的模型。在本文的研究过程中,本文发现目前还没有研究考虑 DiT 模型的极低比特量化。

为了解决这些缺陷,本文提出利用量化感知训练(QAT)技术对大规模 DiT 模型进行极低比特量化。在大规模模型领域,低比特 QAT 方法已在大语言模型(LLM)领域进行了讨论。最近的研究表明,从头开始训练具有极低比特参数(例如二进制和三进制)的大语言模型,也可以达到与全精度模型相当的竞争性能。这表明大规模模型中仍然存在显著的精度冗余,并且暗示了 QAT 方案对于大规模 DiT 模型的可行性。

在本文中,本文主要关注三值权重网络,并提供了 TerDiT,这是本文所知的首个用于 DiT 的量化方案。本文的方法实现了三值扩散transformer模型的量化感知训练(仅限权重)和高效部署。与 LLM 和 CNN 中线性层的简单量化不同,本文发现直接对 DiT 模块中的 adaLN 模块进行权重三值化,会导致归一化层中的大尺寸尺度和偏移值(由于权重量化和梯度近似),这与全精度模型相比,导致收敛速度较慢和模型性能较差。因此,本文提出了一种 adaLN 的变体,通过在 adaLN 模块的三值线性层之后应用 RMS Norm,有效地缓解了这一训练问题。

通过这种修改,本文将三值 DiT 模型的参数规模从 600M(DiT-XL/2的规模)扩展到 4.2B(Large-DiT-4.2B的规模),发现具有更多参数的模型能够收敛到更好的结果。本文进一步采用现有的2-bit CUDA 内核来部署训练后的三值 DiT 模型,使模型checkpoint 大小减少了十倍以上,推理内存消耗减少了约六倍,同时实现了具有竞争力的生成质量。主要贡献总结如下:

  • 受低位 LLMs 量化感知训练方案的启发,本文研究了针对三值 DiT 模型的 QAT 方法,并引入了 DiT 特定的改进以获得更好的训练效果,这在 DiT 文献中尚未被探索。
  • 本文将三值DiT模型的参数规模从600M扩展到4.2B,并基于现有的2-bit CUDA内核在GPU上部署了训练后的三值DiT模型,使得4.2B DiT模型的推理内存消耗小于3GB。
  • 与全精度模型在ImageNet基准测试(图像生成)中的对比评估结果展示了本文提出的TerDiT方案的有效性。

本文的研究是首次尝试探索DiT模型的量化问题。本文专注于量化感知训练和大规模三值DiT模型的高效部署,为未来研究在极低比特精度下部署DiT模型提供了宝贵的见解。

相关工作

扩散模型。 近年来,扩散模型因其生成高质量图像的能力和多种应用潜力而受到了广泛关注。扩散模型的概念最早由提出,该研究提出了一种通过学习逆向扩散过程的生成模型。这项工作为该领域的后续研究奠定了基础。[1]进一步扩展了这一思想,提出了去噪扩散概率模型(DDPMs),这类模型已成为图像生成任务中的热门选择。DDPMs被应用于广泛的领域,包括无条件图像生成、图像修复和图像超分辨率。此外,扩散模型还被用于文本到图像的合成,如DALL-E模型和Imagen模型所展示的那样,这些模型展示了扩散模型从文本描述中生成高度逼真和多样化图像的能力。进一步地,扩散模型还被扩展到其他模态,如音频合成和视频生成,展示了其在多模态应用中的多样性和潜力。

扩散模型的量化。 近年来,为了提高扩散模型的效率,研究人员对扩散模型的量化进行了研究。后训练量化(PTQ)方法,如[9, 11, 13, 14, 15]中提出的方法,在量化时间和数据使用方面具有优势。然而,当这些方法应用于低比特设置时,通常会导致性能不佳。为了解决这个问题,[31]提出了将量化感知低秩适配器(QALoRA)与PTQ方法相结合,从而提高评估结果。作为PTQ的替代方案,量化感知训练(QAT)方法专门用于低比特扩散模型的量化。尽管这些QAT方法有效,但目前仅限于小规模的基于U-Net的扩散模型,这揭示了在大规模DiT模型上应用QAT的研究空白。进一步探索适用于大规模DiT模型的极低比特宽度QAT技术,可能会带来更大的效率提升,并在资源受限的环境中有效部署扩散模型。

三值权重网络。 三值权重网络作为一种内存高效和计算高效的网络结构,已经引起了广泛关注,其在推理内存使用上的显著减少潜力尤为突出。在专用硬件的支持下,三值权重网络还可以提供显著的计算加速。在量化方法中,三值权重网络备受关注,主要有两种方法:仅权重量化和权重-激活量化。在仅权重量化中,如[35]所述,仅对权重进行三值量化。而权重-激活量化,如[36, 37]所述,则对权重和激活值同时进行三值量化。近期研究表明,三值权重网络在训练大语言模型方面具有可行性,并且其结果可与全精度模型相媲美。基于这些进展,本文的工作首次引入了针对三值DiT模型的量化感知训练和高效部署方案。通过在DiT模型中利用三值量化的优势,本文旨在推动效率的极限,并使强大的扩散模型在资源受限的环境中得以部署,从而为实际应用开辟新的可能性。

TerDiT

TerDiT,这是一个用于进行仅权重量化感知训练和高效部署大规模三值DiT模型的框架。本文首先简要回顾扩散transformer(DiT)模型。然后,基于之前开源的Large-DiT,阐述了量化函数和量化感知训练方案,并进行特定于QAT的模型结构改进以优化网络训练,并介绍了三值部署方案。

扩散transformer模型

扩散transformer(Diffusion Transformer)。扩散transformer(DiT)是一种架构,它用操作潜在patches的transformer替代了扩散模型中常用的U-Net骨干结构。类似于下图2(C)中展示的视觉transformer(ViT)架构,DiT首先将空间输入划分为一系列tokens,然后通过一系列transformer块(下图2(B))进行去噪处理。为了处理额外的条件信息(例如噪声时间步t、类别标签l、自然语言输入),DiT利用自适应归一化模块(adaLNZero)将这些额外的条件输入插入到transformer块中。在最后一个transformer块之后,应用标准线性解码器来预测最终的噪声和协方差。DiT模型的训练方式与基于U-Net的扩散模型相同。

DiT中的AdaLN模块。DiT与传统ViT的主要区别在于需要注入条件信息以进行图像生成。DiT在每个transformer块中使用零初始化的自适应层归一化(adaLN-Zero)模块,如上图2(B)红色部分所示,该模块根据输入条件c计算维度级的缩放和偏移值。

AdaLN 是 DiT 模型中的一个重要组件,其效果已被证明优于交叉注意力和上下文条件方法。在 DiT 架构中,AdaLN 模块集成了一个包含大量参数的 MLP 层,占模型总参数的约 10% 到 20%。在 TerDiT 的训练过程中,本文观察到直接对该模块进行权重三值化会导致不理想的训练结果。

模型量化

如上文所示,理解DiT模型的扩展规律越来越受到关注,这对于开发和优化大语言模型(LLM)至关重要。在最近的探索中,Large-DiT成功地将模型参数从600M扩展到7B,结合了LLaMA和DiT的方法。结果表明,参数扩展可以潜在地提升模型性能,并加快标签条件的ImageNet生成任务的收敛速度。受此启发,本文提出进一步研究DiT模型的三值化,这可以缓解部署大规模DiT模型相关的挑战。在本小节中,本文介绍量化函数和量化感知训练方案。

量化函数。 为了构建三值权重的 DiT 网络,本文将原始 Large-DiT 模块中的所有自注意力、前馈和 MLP 中的线性层替换为三值线性层,得到一组三值 DiT 模块(上图 2(A))。对于三值线性层,本文采用类似于 BitNet b1.58的 absmean 量化函数。首先,通过将权重矩阵中的每个元素除以矩阵中所有元素的平均绝对值来归一化权重矩阵。归一化后,权重矩阵中的每个值都会被四舍五入到最接近的整数,并限制在 { − 1 , 0 , + 1 } \{-1, 0, +1\} {1,0,+1} 集合中。

将权重矩阵中的每个元素除以矩阵中所有元素的平均绝对值。归一化后,权重矩阵中的每个值都会被四舍五入到最接近的整数,并限制在集合 { − 1 , 0 , + 1 } \{-1, 0, +1\} {1,0,+1} 中。

参考当前流行的大语言模型(LLMs)的量化方法,本文在量化后也将一个可学习的缩放参数 α \alpha α 乘以每个三值线性矩阵,从而得到最终的值集合为 { − α , 0 , + α } \{-\alpha, 0, +\alpha\} {α,0,+α}。量化函数公式如下:


其中 ϵ \epsilon ϵ 被设置为一个小值(例如, 1 0 − 6 10^{-6} 106)以避免除以 0,并且

TerDiT 是一种仅对权重进行量化的方案,本文不对激活值进行量化。

量化感知训练方案。 基于上述设计的量化函数,本文从头开始训练一个 DiT 模型,利用直接传递估计器(STE),允许梯度通过不可微分的网络组件传播。在整个训练过程中,本文保留网络的全精度参数。对于每一步训练,通过前向传播中的三值量化函数从全精度参数计算出三值权重,并在反向传播中将三值权重的梯度直接应用于全精度参数进行参数更新。

然而,本文发现收敛速度非常慢。即使经过多次训练迭代,损失值也无法降低到合理范围。本文认为这个问题可能源于三值线性层通常会导致较大的激活值,并提出在接下来的小节中通过针对 QAT(量化感知训练)特定的模型结构改进来解决这个问题。

QAT特定模型结构改进

三值线性层的激活分析。 在三值线性层中,所有参数都从集合 { − α , 0 , + α } \{-α, 0, +α\} {α,0,+α} 中取一个值。通过该层的值会变成较大的激活值,这可能会阻碍神经网络的稳定训练。本文进行了一项初步研究,以定性地展示三值线性权重对激活值的影响。

本文随机初始化一个三值线性层,输入特征维度设置为1024,输出特征维度设置为9216(对应LargeDiT中adaLN模块的线性层)。权重参数通过量化函数,并接收一个大小为 512 × 1024 512 \times 1024 512×1024的矩阵输入(填充为1)。激活值分布的箱线图显示在图3的中间部分。本文还计算了通过使用相同随机种子生成的全精度线性层后的激活值分布,显示在下图3的右侧部分。可以看出,与全精度线性层相比,三值线性层导致了非常大的激活值。

通过对三值线性层的输出应用层归一化,可以缓解由三值线性权重带来的大激活值问题。本文在三值线性层之后添加了一个RMS归一化层(类似于LLaMA),并获得了激活值分布(如下图3左侧所示)。在这种情况下,激活值在通过归一化层后被缩放到一个合理范围,从而导致更稳定的训练行为。这一观察结果也与[17]中的结论一致,其中在每个量化线性层的激活量化之前应用了层归一化函数。

RMS归一化的AdaLN模块。 基于上述见解,本文分析了DiT模型以改进QAT特定的模型结构。在标准的ViT Transformer块中,层归一化应用于每个自注意力层和前馈层。DiT块中的自注意力层和前馈层也是如此,这有助于适当地缩放激活值范围。然而,由于上文中介绍的AdaLN模块的存在,DiT块与传统的Transformer块有所不同。值得注意的是,这个模块没有应用层归一化。在全精度训练的情况下,缺乏层归一化并不会产生显著影响。然而,对于三值DiT网络来说,其缺失可能会导致adaLN(归一化)模块中的维度尺度和偏移值过大,从而对模型训练产生不良影响。为了解决这个问题,本文在每个三值DiT块的AdaLN模块的MLP层之后引入了RMS归一化:

最终的TerDiT模型结构如上图2(A)所示。这个小的修改可以带来更快的收敛速度和更低的训练损失,从而在定量和定性评估中取得更好的结果。为了更好地展示这一效果,在原文附录中分析了模型训练后引入或不引入RMS Norm的实际激活分布。

部署方案

在训练了DiT模型之后,本文发现目前没有有效的开源三值网络部署解决方案。在这种情况下,本文使用2位实现来部署训练好的网络。具体来说,本文使用文献[44]提供的pack_2bit_u8()函数,将三值线性权重打包成int8值(4个三值数打包成一个int8数)。在DiT模型的推断过程中,本文即时调用相应的unpack_2bit_u8()函数,将打包的2位数字恢复为浮点数值,然后进行后续计算。添加解包操作会减慢推断过程,但本文相信,随着对模型三值化研究的深入,将会有更多硬件支持来加速推断过程。

实验

在本节中,本文进行了一系列实验来评估本文提出的TerDiT。本文展示了主要的评估结果,进行了部署效率比较,并说明了RMS Normalized adaLN模块的有效性。本文的DiT实现基于开源代码Large-DiT-ImageNet4。本文分别对具有600M(DiT-XL/2的大小)和4.2B(Large-DiT-4.2B的大小)参数的三值DiT模型进行了实验。

主要评价结果

本文在本小节中提供了TerDiT模型的定量和定性评估结果。据本文所知,目前尚无关于扩散transformer模型量化的已发表工作,因此本文主要在本小节中将其与具有代表性的全精度扩散模型进行比较。

关于TerDiT基线的备注。 据本文所知,目前仍没有研究DiT模型量化的工作。除了在本小节中与全精度模型进行比较外,本文还在其他小节中建立了一些基线进行比较。对于QAT基线,本文直接训练了在Sec. 4.3中的adaLN模块中没有RMS Norm的三值DiT模型。为了与现有的PTQ方法进行比较,本文对预训练模型进行了4位权重量化,使用与TerDiT相同的一组参数,结果发现它们无法生成可视的图像。

实验设置。 按照原始DiT论文的评估设置,本文在ImageNet数据集上训练了600M和4.2B的三值DiT模型。由于计算资源的限制,本文在256×256分辨率下训练和评估模型,但本文认为评估结果已经具有很强的代表性。本文将TerDiT与一系列全精度扩散模型进行比较,并报告FID、sFID、Inception Score、Precision和Recall(50k生成图像),参考[48]。本文还提供了训练阶段的总图像数量(百万),如[23]所示,以进一步了解不同生成模型的收敛速度。

训练细节。 本文在 8 个 A100-80G GPU 上训练 600M TerDiT 模型,共进行了 1750k 步,批量大小设置为 256;在 16 个 A100-80G GPU 上训练 4.2B 模型,共进行了 1180k 步,批量大小设置为 512。初始学习率设置为 5 × 1 0 − 4 5 \times 10^{-4} 5×104。在 600M 模型训练 1550k 步后和 4.2B 模型训练 550k 步后,本文将学习率降低到 1 × 1 0 − 4 1 \times 10^{-4} 1×104 以进行更精细的参数更新。

定量结果分析。 评估结果列在下表1中。TerDiT是针对DiT模型的QAT方案,因此在所有全精度模型中,本文特别关注DiT-XL/2(675M)和Large-DiT-4.2B。在没有分类器自由指导的情况下,TerDiT-4.2B在测试结果上与DiT-XL/2非常相似(使用的训练图像数量要少得多)。在有分类器自由指导(cfg=1.5)的情况下,TerDiT-4.2B-G的表现优于LDM-G,同时与两个全精度DiT结构模型相比仅带来了非常轻微的性能下降。此外,TerDiT-4.2B-G的评估结果优于TerDiT-600M-G,这表明参数更多的模型在量化后会带来更小的性能下降。

为了直观地展示TerDiT的有效性,本文在下图4中展示了一些定性比较结果,涉及TerDiT-4.2B、DiT-XL/2和Large-DiT4.2B。从视觉感知的角度来看,TerDiT生成的图像与全精度模型生成的图像之间没有显著差异。

部署效率对比

部署效率的提升是本文提出TerDiT方案的动机。在本小节中,本文对TerDiT-600M/4.2B、DiT-XL/2和Large-DiT-4.2B进行了比较,以讨论TerDiT在实际部署中所能带来的效率提升。下表2展示了四种DiT模型的checkpoint 大小。本文还记录了在单个A100-80G GPU上,总扩散采样循环(步数=250)的内存使用情况和推理时间。

从表格中可以看出,TerDiT大大减少了checkpoint 大小和内存使用。4.2B三值化DiT模型的checkpoint 大小和内存使用显著小于Large-DiT-4.2B,甚至比DiT-XL/2还要小。这为在终端设备(如手机)上部署模型带来了显著优势。尽管由于需要解包操作,本文观察到推理速度较慢,但本文相信,随着未来硬件支持的提升,三值化权重网络的计算优势将会得到充分展示。

RMS归一化AdaLN模块的讨论

TerDiT对DiT模型结构的主要修改是在adaLN模块中的MLP之后增加了RMS Norm。在这一部分,本文与基线三值化模型进行比较,以展示RMS Norm对训练过程和训练结果的影响。

实验设置。 本文在ImageNet数据集上以256×256分辨率训练具有600M和4.2B参数的三值化DiT模型。对于每种参数规模,本文训练了两个模型,一个在adaLN模块中使用了RMS Norm,另一个则没有(本文的基线模型)。本文记录了训练过程中的损失曲线,并每100k训练步测量一次FID-50k分数(cfg=1.5)。

训练细节: 为了进行公平的比较,本文在8个A100-80G GPU上训练所有的三值化DiT模型,批量大小设置为256。整个训练过程中,学习率设置为 5 e − 4 5e^{-4} 5e4

结果分析: 训练损失和评估得分分别显示在下图5和下图6中。如图所示,使用RMS Normalized adaLN模块进行训练将导致更快的收敛速度和更低的FID分数。另一个观察结果是,参数更多的模型相比参数较少的模型能实现更快且更好的训练效果。这在一定程度上也反映了三值化DiT模型的扩展规律。

讨论和未来展望

本文在成功的大语言模型低比特训练方法的基础上,提出了针对大规模三值化DiT模型的量化感知训练(QAT)和高效部署方法。在ImageNet数据集(256×256)上的竞争性评估结果证明了从头开始训练大型三值化DiT模型的可行性,同时实现了与全精度模型相当的结果。据本文所知,这是首个关于DiT模型量化的研究。

虽然本文认为这项工作为DiT模型的低比特量化提供了有价值的见解,但它仍然存在一些局限性。首先,训练三值化DiT比全精度网络更不稳定且耗时。在本文中,尽管本文讨论了通过添加归一化方法来使训练更稳定,但相较于训练全精度网络(如Large-DiT-4.2B),它仍然更耗时,这将在更广泛的背景下导致模型训练期间二氧化碳排放量的增加。

其次,由于计算资源的限制,本文没有进行ImageNet 512×512实验,也没有进行文本到图像生成任务的实验。然而,本文相信ImageNet 256×256基准上的评估结果已经相当具有代表性。剩余的任务将留待本文未来的工作中进行。本文希望本文的工作可以减少图像生成模型的部署需求,并能激励社区在未来加入本文,共同促进这一研究领域的更广泛发展。

参考文献

[1] TerDiT: Ternary Diffusion Models with Transformers

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

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

相关文章

奈飞CEO最新访谈:抢走你饭碗的不是AI,而是能熟练使用AI的人

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

新书推荐:7.5 goto、break、continue语句

本节必须掌握的知识点: 示例二十六 代码分析 汇编解析 示例二十七 代码分析 汇编解析 7.5.1 示例二十六 ■goto语句:无条件转移语句。 语法格式: goto label; label : 代码; ●语法解析: 执行到goto语句时,则无…

Jetpack架构组件_1.基本知识

1.什么是Jetpack? Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。Jetpack 包含一系列 Android 库,它…

pcdn服务器应该怎么配?

要配置PCDN(Private Content Delivery Network)服务器,可以按照以下步骤进行: 需求分析:明确业务需求,确定所需的CDN功能和性能参数。这包括预期的流量、负载、内容类型、目标用户群体等。 硬件选择&#…

VCRUNTIME140_1.dll丢失是怎么回事?vcruntime140_1.dll无法继续执行代码的处理方法

VCRUNTIME140_1.dll丢失是怎么回事?问出这样的问题的人,一般是遇到vcruntime140_1.dll无法继续执行代码的问题了,找不到VCRUNTIME140_1.dll文件,那么程序就肯定是启动不了的,程序的启动是需要VCRUNTIME140_1.dll文件的…

Java进阶学习笔记1——课程介绍

课程适合学习的人员: 1)具备一定java基础的人员; 2)想深刻体会Java编程思想,成为大牛的人员; 学完有什么收获? 1)掌握完整的Java基础技术体系; 2)极强的编…

行为设计模式之状态模式

文章目录 概述定义结构图 2.代码示例小结 概述 定义 状态模式(state pattern)的定义: 允许一个对象在其内部状态改变时改变它的行为。 对象看起来似乎修改了它的类。 状态模式就是用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题.。状态模式将一个对象的状态…

New Phytologist:杨树特有miRNA在调控杨树抗旱中的分子机制

2024年3月6日,林木遗传育种全国重点实验室、北京林业大学生物科学与技术学院尹伟伦与夏新莉教授课题组在New Phytologist(中科院一区,影响因子9.4)期刊发表了题为“The miR6445-NAC029 module regulates drought tolerance by reg…

selenium 学习笔记(一)

pip的安装 新建一个txt curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 把上面的代码复制进去后,把后缀名改为.bat然后双击运行 当前目录会出现一个这个文件 然后在命令行pyhon get-pip.py等它下好就可以了selenium安装 需要安装到工程目…

云计算-Lambda事件 (Lambda Events)

检索事件信息 (Retrieving Event Information) 在上一个主题中,我们已经看到了如何创建一个Lambda函数、添加handler、添加触发器和配置执行策略。在本主题中,我们将对其进行扩展。到目前为止,我们看到的handler应用非常简单,但我…

linux 定时执行shell、python脚本

在linux里设置定时执行一般是用crontab,如果没有的话,可以先安装: 安装 查看是否安装 cron -v # 对于基于Debian的系统(如Ubuntu) sudo apt-get install cron# 对于基于RedHat的系统(如CentOS&#xff…

【5】:三维到二维变换(模型、视图、投影)

观测变换 物体上某一点的坐标变换顺序:M->V->P MVP变换用来描述视图变换的任务,即将虚拟世界中的三维物体映射(变换)到二维坐标中。 1.Model Transformation 模型变换 场景中每个物体上的某一点,从局部坐标系…

YoloV8实战:各种图绘制汇总(mAP50、mAP50-95、loss、PR_curve、F1_curve)|科研必备|绘图神器

摘要 本文的内容是告诉大家如何绘制mAP50、mAP50-95、loss、PR_curve、F1_curve等图像,方便大家写论文。 绘制mAP50、mAP50-95、loss等图。 先上效果,如下图: 首先将,训练的result.csv汇总到一个文件夹下面(这样方便寻找),要不然找起来太麻烦。如下图: 我都放到re…

Pyinstaller打包exe文件解决指南

打包命令 打包 Python 文件 输入如下格式的命令即可 默认命令 Pyinstaller 文件名.py Pyinstaller -option1 -option2 -... 要打包的文件 Pyinstaller 文件名.pyPyinstaller -option1 -option2 -... 要打包的文件 参数选项比较多,这里我列一个表:…

[C#]winform部署官方yolov10目标检测的onnx模型

【框架地址】 https://github.com/THU-MIG/yolov10 【算法介绍】 今天为大家介绍的是 YOLOv10,这是由清华大学研究团队最新提出的,同样遵循 YOLO 系列设计原则,致力于打造实时端到端的高性能目标检测器。 方法 创新 双标签分配策略 众所…

灯塔工厂产业数字化平台解决方案(50页PPT)

方案介绍: 随着工业4.0和智能制造的快速发展,传统工厂正面临着转型升级的迫切需求。为了提升生产效率、优化资源配置、增强市场竞争力,我们推出了灯塔工厂产业数字化平台解决方案。该方案旨在通过先进的信息技术手段,将传统工厂转…

蒙特卡洛法求解机械臂工作空间(以IRB4600型工业机械臂为例)

1. 概念 工作空间是衡量机器人工作能力的一个重要的运动学指标,蒙特卡洛法是一种随机模拟方法,用于在计算机上估计某些统计量,对于要估计的统计量,通过模拟大量的随机抽样,并计算这些样本的随机值来估算这个统计量的值…

数字信号处理实验三:IIR数字滤波器设计及软件实现

一、实验目的 1. 掌握MATLAB中进行IIR模拟滤波器的设计的相关函数的应用; 2. 掌握MATLAB的工具箱中提供的常用IIR数字滤波器的设计函数的应用; 3.掌握MATLAB的工具箱中提供的模拟滤波器转数字滤波器的相关的设计函数的应用。 二、实验内容 本实验为…

CC1310 Debug interface is locked

XDS110连接CC1310板子,打开Smart RF 弹出窗口如下: 解决办法: 1 打开SmartRF Flash Programmer 2 选择连接的设备CC1310, 弹出如下窗口,点击OK。 3 点击Tools图标,选择CC26XX/CC13XX Forced Mass Erase。 4 在弹出的…

Windows11系统安装QEMU虚拟化软件

Windows11系统安装QEMU虚拟化软件 QEMU软件是一个通用的开源机器模拟器和虚拟机。本文档适用于在Windows 11系统平台上安装QEMU软件。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径QEMUQEMU-8.2.93D:\qemu 1.3软件下载 QEMU官网官网下…