LLaMA Adapter和LLaMA Adapter V2

news2024/9/29 23:31:55

LLaMA Adapter论文地址:

https://arxiv.org/pdf/2303.16199.pdf

LLaMA Adapter V2论文地址:

https://arxiv.org/pdf/2304.15010.pdf

LLaMA Adapter效果展示地址:

LLaMA Adapter 双语多模态通用模型 为你写诗 - 知乎

LLaMA Adapter GitHub项目地址:

https://github.com/OpenGVLab/LLaMA-Adapter

LLaMA Adapter V2 GitHub项目地址(包含在LLaMA-Adapter项目中):

https://github.com/OpenGVLab/LLaMA-Adapter/tree/main/llama_adapter_v2_multimodal7b

LLaMA-Adapter简介

LLaMA-Adapter是一个参数高效的多模态指令模型

论文作者提出了 LLaMA-Adapter,一种轻量级的适应方法,可以有效地将 LLaMA 微调为一个跟随指令的模型。LLaMA-Adapter 使用 52K 个自我指示的样例,在冻结的 LLaMA 7B 模型上只引入了 120 万个可学习参数,在 8 个A100 GPU 上进行微调的成本不到 1 小时。

具体来说,作者采用了一组可学习的适应性提示,并将其预置在较高 Transformer 层的输入文本标记上。

然后,作者提出了一个具有零初始(zero-init)的注意力机制,该机制可以自适应地将新的训练线索注入到 LLaMA 中,同时有效地保留了其预训练的知识。通过有效的训练,LLaMA-Adapter 产生了高质量的反应,与具有完全微调的 7B 参数的 Alpaca 相当。

此外,该方法可以简单地扩展到多模态的输入,例如图像,多模态模型在 ScienceQA 上实现了卓越的推理能力。

特点

LLaMA-Adapter具有如下四个特点:

1、掌握多种模态:

LLaMA-Adapter 能够无缝整合多种输入模态,如图像、音频、文本、视频和3D点云等,并提供图像、文本和检测输出。

2、支持双语功能:

LLaMA-Adapter 具有双语功能,能够支持中英双语输入输出。

3、强大的兼容性:

LLaMA-Adapter 有强大的兼容性,兼容LLaMA,Falcon,ImageBind,StableDiffusion,LangChain等,并且目前已得到HuggingFace和Lightning AI 的大力支持。

4、参数高效:

LLaMA-Adapter 在冻结的语言模型上只引入了650M的参数,在8张A100显卡上只需15小时就能完成训练。此外,LLaMA-Adapter提供无需注意力的多模态注入,并支持跨模态缓存检索。

LLaMA-Adapter V2 论文简略解读

摘要

如何有效地将大型语言模型(LLM)转化为指令跟随器是最近一个热门的研究方向,而训练 LLM 进行多模态推理的探索仍然较少。尽管最近的 LLaMA-Adapter 展示了使用 LLM 处理视觉输入的潜力,但它仍然不能很好地泛化到开放式视觉指令,并且落后于 GPT-4。在本文中,作者提出了LLaMA-Adapter V2,一种参数高效的视觉指令模型。具体来说,作者首先通过解锁更多可学习参数(例如范数、偏差和比例)来增强 LLaMAAdapter,这些参数将指令遵循能力分布到整个 LLaMA 模型中,除了适配器之外。其次,作者提出了一种早期融合策略,仅将视觉标记提供给早期的 LLM 层,有助于更好地整合视觉知识。第三,通过优化不相交的可学习参数组,引入了图像-文本对和指令跟随数据的联合训练范式。该策略有效地缓解了图文对齐和指令跟随这两个任务之间的干扰,仅用小规模的图文和指令数据集就实现了强多模态推理。在推理过程中,作者将额外的专家模型(例如字幕/OCR 系统)合并到 LLaMA-Adapter 中,以进一步增强其图像理解能力,而不会产生训练成本。与原始的 LLaMAAdapter 相比,作者的 LLaMA-Adapter V2 只需在 LLaMA 上引入 14M 参数即可执行开放式多模式指令。新设计的框架也展现出更强的纯语言指令跟随能力,甚至在聊天交互方面表现出色” (Gao 等, 2023, p. 1)

1. 介绍

大型语言模型 (LLM) [75] 因其理解、推理和生成人类语言的非凡能力而在 AI 社区中引起了极大的关注。为了使 LLM 的回答更加生动和令人信服,最近的工作 探索了将 LLM 转化为指令遵循模型。例如,Stanford Alpaca [62] 使用从 OpenAI 的 InstructGPT 模型 [48] 生成的指令示例将 LLaMA [63] 微调为指令跟随模型。 Alpaca 的后续工作通过利用更高质量的指令数据(例如 ShareGPT [1] 和 GPT-4 [50] 生成的数据)进一步扩展了 LLaMA。与 Alpaca 和 Vicuna [7] 采用的全微调范式相比,LLaMA-Adapter [72] 引入了对冻结的 LLaMA 进行零初始化关注的轻量级适配器,用于参数有效的微调,以及多模态知识注入。尽管取得了重大进展,但上述方法仍然无法执行更高级的多模态指令,例如像 GPT-4 [47] 这样的视觉理解。” (Gao 等, 2023, p. 1)

最近,MiniGPT-4 [78] 和 LLaVA [38] 等研究引发了新一波研究,将纯语言指令模型扩展为多模式模型,以类似于 LLaMA 的方式赋予 LLM 视觉推理能力-适配器。 MiniGPT-4 通过对 1.34 亿个图像文本对进行预训练来连接冻结视觉编码器和 LLM,然后通过在对齐良好的图像文本数据集上进一步微调来提高模型的性能。 LLaVA 还利用图像-文本对来对齐视觉模型和 LLM。与 MiniGPT4 不同,LLaVA 在 GPT-4 生成的 150K 高质量多模态指令数据上对整个 LLM 进行微调。虽然这些方法展示了令人印象深刻的多模态理解能力,但它们需要更新数十亿个模型参数并精心收集大量多模态训练数据,这些数据要么由人类注释,要么从 OpenAI API 的响应中提取。 (Gao 等, 2023, p. 2)

在本文中,作者的目标是设计一个参数有效的视觉指令模型。作者在流行的参数高效 LLaMA-Adapter 的基础上开发了作者的新方法,作者将其称为 LLaMA-Adapter V2。 LLaMA-Adapter 最初是作为指令跟随模型开发的,并且可以通过将视觉特征纳入适应提示中轻松转换为视觉指令模型。然而,由于缺乏多模态指令调整数据,LLaMAAdapter 的多模态版本作为传统视觉语言模型受到限制。例如,在 COCO Caption [6] 上训练的 LLaMA-Adapter 只能在给出特定提示时生成简短的图像标题,例如“为此图像生成标题”。模型不能适应开放式多模态指令,例如复杂的视觉推理和视觉问答任务” (Gao 等, 2023, p. 2)

虽然作者目前没有利用多模式指令数据,但仍然可以为 LLaMA-Adapter 执行多模式指令调整。作者首先使用冻结的指令跟随 LLaMA-Adapter 模型作为起点,并通过优化图像-文本对上的视觉投影层来改进它,以确保正确的视觉-语言对齐。然而,作者观察到视觉特征往往主导适应提示,导致指令遵循能力迅速恶化。” (Gao 等, 2023, p. 2)

为了应对这一挑战,作者提出了一种简单的视觉知识早期融合策略,解决了图像文本对齐和语言指令调整这两个任务之间的干扰。在 LLaMA-Adapter 中,动态视觉提示被合并到最后 L 层的静态适配提示中。然而,在 LLaMAAdapter V2 中,作者仅将动态视觉提示分发到前 K 层,其中 K < N - L,N 表示 Transformer 层的总数。因此,图像文本对齐不再破坏模型的指令跟随能力。通过这种策略,即使在没有高质量多模态指令数据的情况下,作者也可以通过使用不相交参数与图像字幕数据和指令跟随数据进行联合训练来实现卓越的视觉指令学习。此外,作者通过解锁更多可学习的参数(例如归一化、层偏差和比例)来增强 LLaMA-Adapter,作者将其称为线性层的偏差调整。通过增加模型的可调容量,作者可以在整个 LLM 中传播 instructionfollowing 知识。值得注意的是,这些参数只占整个模型的大约 0.04%,确保 LLaMA-Adapter V2 仍然是一种参数高效的方法。”

为了应对这一挑战,作者提出了一种简单的视觉知识早期融合策略,解决了图像文本对齐和语言指令调整这两个任务之间的干扰。在 LLaMA-Adapter 中,动态视觉提示被合并到最后 L 层的静态适配提示中。然而,在 LLaMA-Adapter V2 中,作者仅将动态视觉提示分发到前 K 层,其中 K < N - L,N 表示 Transformer 层的总数。因此,图像文本对齐不再破坏模型的指令跟随能力。通过这种策略,即使在没有高质量多模态指令数据的情况下,作者也可以通过使用不相交参数与图像字幕数据和指令跟随数据进行联合训练来实现卓越的视觉指令学习。此外,作者通过解锁更多可学习的参数(例如归一化、层偏差和比例)来增强 LLaMA-Adapter,作者将其称为线性层的偏差调整。通过增加模型的可调容量,作者可以在整个 LLM 中传播 instructionfollowing 知识。值得注意的是,这些参数只占整个模型的大约 0.04%,确保 LLaMA-Adapter V2 仍然是一种参数高效的方法。” (Gao 等, 2023, p. 2)

最后,作者引入了额外的专家模型(例如,字幕、检测和 OCR 系统)来增强 LLaMA-Adapter V2 的图像理解能力,使作者的方法有别于依赖海量图像文本的其他方法,例如 MiniGPT-4 和 LLaVA对训练数据。通过与这些专业专家合作,作者的框架获得了更高的灵活性,并允许插入各种专家来完成各种各样的任务,而无需对大量视觉语言数据进行预训练。” (Gao 等, 2023, p. 2)

图 1 和图 4 分别说明了作者的 LLaMA-Adapter V2 的整个训练和生成管道。作者的主要贡献总结如下:

(1)更强的语言指令模型。凭借参数高效的调优策略和高质量的语言指令数据,LLaMA-Adapter V2 在语言指令跟随性能方面超越了其前身 LLaMA-Adapter。此外,LLaMA-Adapter V2 能够进行多轮对话,展示了其作为语言教学模型的更强能力。

(2)平衡的视觉指令调整。作者提出了一种简单的早期融合策略来解决图像文本对齐和指令跟随学习目标之间的干扰。因此,作者将 LLaMA-Adapter V2 转换为视觉指令模型,而不需要多模态指令训练数据。

(3)专家系统的集成。作者采用模块化设计,可以将不同的专家模型集成到作者的框架中,以增强 LLM 的图像理解能力,而不是对大量图像文本对进行端到端预训练。” (Gao 等, 2023, p. 2)

2. Related Work

(1)Instruction-following Language Models 大型语言模型 (LLM) 使用自回归 Transformer 模型在广泛的文本语料库上进行预训练以预测后续标记。他们在自我监督 [53]、多任务 [54] 和少样本学习者 [4] 方面表现出了强大的能力。最近,InstructGPT [48] 和 FLAN [8, 66] 表明,LLM 可以通过在教学数据集上进行微调来转换为指令跟随模型。为了促进指令跟随示例的生成,Self-Instruct [65] 采用了一种半自动、迭代引导算法,该算法扩展了有限的手动编写指令种子集,并使用现成的 LLM 逐步扩展任务集合. Alpaca [62] 应用 Self-Instruct 策略生成 52K 高质量指令跟随演示,并对开源 LLaMA [63] 模型进行微调,最终获得一个指令跟随语言模型,表现出许多类似于 OpenAI 文本的行为-达芬奇-003。受到 Alpaca 成功的启发,Vicuna [7] 和 GPT-4-LLM [50] 进一步表明,可以通过微调用户共享的 ChatGPT 对话或由GPT-4 API。然而,Alpaca、Vicuna 和 GPT4-LLM 都对 LLM 的全部参数进行了微调,导致无法承受的 GPU 内存使用和训练成本。相比之下,LoRA [26] 和 LLaMA-Adapter [72] 验证了参数有效的微调方法可以在 LLM 的监督微调期间潜在地取代完整的参数更新。在本文中,LLaMA-Adapter V2 更进一步,构建了一个参数有效的 zeroshot 视觉指令模型,该模型重用了 LLaMA-Adapter 的指令跟随能力。” (Gao 等, 2023, p. 3)

(2)Parameter-efficient Fine-tuning 预训练微调范式已被证明在视觉识别、语言理解、文本生成和文本描述的图像合成等各种任务中非常有效。然而,随着模型大小继续呈指数增长,微调庞大模型中的每个参数变得越来越不切实际。相比之下,参数效率微调 (PEFT) 方法 [12,49] 冻结了基础模型的大部分参数,只优化了其中的一小部分。许多成功的 PEFT 方法被提出用于采用流行的预训练模型,例如 BERT [11]、GPT [4、53、54]、ViT [13]、CLIP [52] 和 Stable Diffusion [55] 到各种下游任务。一般来说,这些 PEFT 方法可以分为三类,即前缀调整(例如 [35,76])、重新参数化(例如 [10,26,43])和适配器(例如 [15,24,74])。在本文中,作者介绍了 LLaMA-Adapter V2,这是一种优雅而高效的前缀调整和适配器技术的结合。通过利用早期融合策略和偏差调整,LLaMA-Adapter V2 将视觉特征注入大型语言模型,产生令人印象深刻的多模态指令遵循性能,整个 LLaMA 的参数仅为 0.04%” (Gao 等, 2023, p. 3)

3 LLaMA-Adapter

(1)初始化注意力。作为一种使 LLaMA 获得指令跟随能力的参数高效微调解决方案,LLaMA-Adapter [72] 冻结了整个 LLaMA 模型 [63],并仅引入了一个具有 1.2M 参数的额外轻量级适配器模块。适配器层用于 LLaMA 的较高 Transformer 层,并将一组可学习的软提示连接起来作为单词标记的前缀。为了将新适应的知识整合到冻结的 LLaMA 中,LLaMAAdapter 提出了一种零初始化的注意机制,该机制可以通过学习一个由零初始化的门控因子来自适应地控制适应提示对词标记的贡献。门控幅度在训练过程中逐渐增加,从而逐渐注入.

(2)简单的多模式变体。除了使用纯语言指令进行微调外,LLaMA-Adapter 还可以结合图像和视频输入进行多模态推理。例如,在处理图像时,LLaMAAdapter 使用预训练的视觉编码器(如 CLIP [52])来提取多尺度视觉特征。然后将这些特征聚合成一个全局特征,并通过可学习的投影层传递,以将视觉语义与语言嵌入空间对齐。之后,将全局视觉特征逐元素添加到 Transformer 较高层的每个适配提示中。这允许 LLaMA-Adapter 基于文本和视觉输入生成响应,从而在 ScienceQA 基准 [41] 上具有竞争力的表现。” (Gao 等, 2023, p. 4)

(3)开放式多模态推理。作者首先从 LLaMA-Adapter 开始,该适配器在语言指令数据上进行了预训练,以利用其现有的指令遵循功能。然后,作者通过在 COCO Caption [6] 数据集上微调其适配器模块和视觉投影层来进行实验。然而,作者发现新学习的视觉线索往往支配适应提示,压倒固有的指令遵循特征。因此,作者提出了 LLaMAAdapter V2,一种参数高效的视觉指令模型,以充分释放 LLaMA 的多模态潜力。” (Gao 等, 2023, p. 4)

4. LLaMA-Adapter V2

4.1.线性层的偏差调整

LLaMA-Adapter 在冻结的 LLaMA 模型上采用可学习的适应提示和零初始化注意机制,从而可以有效地整合新知识。但是,参数更新受限于自适应提示和门控因子,没有修改LLMs的内部参数,这限制了它进行深度微调的能力。鉴于此,作者提出了一种偏差调整策略,除了适应提示和门控因素之外,进一步将指令提示融合到 LLaMA 中。具体来说,为了自适应地处理指令跟随数据的任务,作者首先解冻 LLaMA 中的所有规范化层。对于 Transformer 中的每个线性层,作者添加一个偏差和一个比例因子作为两个可学习的参数。作者将某个线性层的输入和预训练权重分别表示为 x 和 W。在 LLaMA-Adapter V2 中,作者使用偏置 b 和尺度 s 修改线性层为

与零初始化注意力类似,作者分别用零和一初始化偏差和比例因子,以稳定早期阶段的训练过程。通过结合偏置调整策略和高质量指令数据 [50],LLaMA-Adapter V2 获得了卓越的指令跟随能力。值得注意的是,新增参数的数量仅占整个 LLaMA 的 0.04%(∼5M),表明 LLaMA-Adapter V2 仍然是一种参数高效的方法。” (Gao 等, 2023, p. 5)

讨论。作者的偏差调整策略与先前的参数有效方法有相似之处,例如用于 BERT 微调的BitFit [70] 和用于视觉提示调整的 SSF [36] [28]。然而,BitFit 和 SSF 都是为具有 8000 万个参数规模的理解任务而设计的,而作者的偏差调整证明了它在 70 亿到 650 亿个参数的大型语言模型(例如 LLaMA 和 GPT-3)上的效率。此外,作者的偏差调整策略是输入不可知的,这与使用低秩转换添加输入感知偏差的低秩适应 (LoRA) 不同,进一步降低了微调成本” (Gao 等, 2023, p. 5)

4.2.使用不相交参数进行联合训练

作者的目标是同时赋予 LLaMA-Adapter V2 生成长语言响应和多模态理解的能力。如图 2 所示,作者提出了 LLaMA-Adapter V2 的联合训练范例,以利用图像文本字幕数据和纯语言指令示例。由于 500K 图像文本对和 50K 指令数据之间的数据量差异,天真地将它们组合起来进行优化会严重损害 LLaMA-Adapter 的指令跟随能力,正如第 1 节中所讨论的那样。因此,作者的联合训练策略优化了 LLaMA-Adapter V2 中不相交的参数组,分别用于图像文本对齐和指令跟踪。具体来说,只有视觉投影层和带门控的早期零初始化注意力针对图文字幕数据进行训练,而后期适应提示与零门控、未冻结范数、新添加的偏差和比例因子(或可选的低秩适应[25])被用于从指令跟随数据学习。这种不相交的参数优化自然地解决了图文理解和指令跟随之间的干扰问题,这有助于 LLaMA-Adapter V2 的紧急视觉指令跟随能力

讨论。在作者的联合训练策略的帮助下,LLaMA-Adapter V2 不需要像 MiniGPT-4 [78] 和 LLaVA [38] 这样的高质量多模态指令数据,而只需要图像文本对和指令跟随数据,如表 1 所示。 1. 如图 2 所示,字幕数据扩展了 LLM 的图像理解和简短答案,而仅语言指令数据用于保留 LLaMA 生成详细长句的能力。凭借这种互补性,LLaMA-Adapter V2 仅通过小规模图像文本和指令跟随数据实现了卓越的多模态推理,而无需高质量的多模态指令数据。” (Gao 等, 2023, p. 6)

4.3 视觉知识的早期融合

为了避免视觉和语言微调之间的干扰,作者提出了一种简单的早期融合策略,以防止输入视觉提示和适应提示之间的直接交互。在 LLaMA-Adapter 中,输入的视觉提示由具有可学习视觉投影层的冻结视觉编码器顺序编码,然后在每个插入层添加到自适应提示。在 LLaMA-Adapter V2 中,作者将编码的视觉标记和自适应提示注入不同的 Transformer 层,而不将它们融合在一起,如图 3 所示。对于数据集共享的自适应提示,作者遵循 LLaMA-Adapter,将它们插入到最后 L 层(例如,L=30)。对于输入的视觉提示,作者直接将它们与单词标记连接起来,这是具有零初始化注意力的 Transformer 层,而不是将它们添加到自适应提示中。与提出的联合训练一起,这种简单的视觉标记早期融合策略可以有效地解决两类微调目标之间的冲突。这有助于参数高效的 LLaMA-Adapter V2 具有卓越的多模态推理能力。” (Gao 等, 2023, p. 6)

4.4.与专家集成

最近的视觉指令模型,如 MiniGPT4 [78] 和 LLaVA [38] 需要大规模的图像文本训练来连接视觉模型和 LLM。相比之下,作者的 LLaMA-Adapter V2 对更小规模的常见图像字幕数据 [6] 进行了微调,使其数据效率更高。然而,作者的方法的图像理解能力相对较弱,导致偶尔出现不准确或无关的响应。作者建议集成字幕、OCR 和搜索引擎等专家系统,以补充 LLaMA-Adapter V2 额外的视觉推理能力,而不是收集更多的图像文本数据或采用更强大的多模态模块。如图 4 所示,作者利用字幕、检测和 OCR 等专家系统来增强 LLaMA-Adapter V2 的视觉指令遵循能力。

给定一张输入图像,作者使用预训练的视觉编码器对其视觉上下文进行编码,并要求专家系统生成标题作为文本上下文。在作者的默认实现中,作者采用在 COCO Caption [6] 上预训练的 LLaMA-Adapter 作为专家系统,因为它可以生成简短而准确的图像描述。然而,值得注意的是,任何图像到文本模型甚至搜索引擎都可以作为这里的专家系统。作者的方法使作者能够根据手头的特定下游任务轻松地在不同的专家系统之间切换。” (Gao 等, 2023, p. 7)

5. 结论

在这项工作中,作者提出了 LLaMA-Adapter V2,一种参数高效的视觉指令调整系统。通过对图像文本对和指令跟随数据的联合训练,作者观察到 LLaMA-Adapter V2 可以将预训练的 LLM 转换为零镜头视觉指令模型。借助简单的偏置调整策略和视觉特征的早期融合,LLaMA-Adapter V2 的零样本视觉指令跟随能力通过减轻图像-文本对和指令跟随数据之间的干扰进一步提高。同时,LLaMA-Adapter V2 实现了更强的语言指令跟随性能,甚至具备聊天机器人般的多轮对话能力。针对 LLaMAAdapter V2 图像描述不准确的问题,作者集成了 OCR 和 Image captioner 等专业视觉系统,以提供更准确的图像相关信息。虽然 LLaMA-Adapter V2 可以结合专家视觉系统并以零样本的方式执行视觉指令跟随,但它在视觉理解能力方面仍然落后于 LLaVA,并且容易受到专家系统提供的不准确信息的影响。未来,作者计划探索更多专家系统的集成,并使用多模态指令数据集或其他 PEFT 方法(例如 LoRA)对 LLaMA-Adapter V2 进行微调,以进一步增强其视觉指令跟随能力。” (Gao 等, 2023, p. 11)

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

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

相关文章

PSN 两步验证解除2023.10.9经验贴

背景 本人10月1号收到Sony邮件&#xff0c;说是不规律登录&#xff0c;需修改密码后登录&#xff0c;然后我10月8日登录PS4的时候&#xff0c;提示两步验证。当时就想坏了&#xff0c;然后找B站相关经验贴&#xff0c;10月9号电话香港客服&#xff0c;解除了两步验证&#xff0…

IOT 围炉札记

文章目录 一、蓝牙二、PAN1080三、IOT OS四、通讯 一、蓝牙 树莓派上的蓝牙协议 BlueZ 官网 BlueZ 官方 Linux Bluetooth 栈 oschina 二、PAN1080 pan1080 文档 三、IOT OS Zephyr 官网 Zephyr oschina Zephyr github 第1章 Zephyr简介 第2章 Zephyr 编译环境搭建&#…

云管理平台基本功能有哪些?适配国产化平台吗?

随着云计算的大力发展&#xff0c;越来越多的企业需要云管理平台了。但很多其他对于云管理平台不是很了解&#xff0c;有小伙伴问&#xff0c;云管理平台基本功能有哪些&#xff1f;适配国产化平台吗&#xff1f;这里我们小编就给大家解答一下。 云管理平台基本功能有哪些&am…

【Java】中小学智慧校园管理系统源码 SaaS模式+电子班牌系统

智慧校园电子班牌系统&#xff0c;主要针对中小学校园研发&#xff0c;为校园管理提供智慧管理方案&#xff0c;提供校园智慧管理平台&#xff0c;在大数据平台下&#xff0c;对应用系统进行统一、集中管理&#xff0c;囊括校园管理全方面&#xff0c;实现对校园、班级、教师、…

商城系统选型:Java商城系统还是PHP商城系统好?

电子商务的不断发展&#xff0c;商城系统成为了企业建设在线销售平台的重要组成部分。 可是在选择合适的商城系统时&#xff0c;许多企业面临着一个重要的决策&#xff1a;是选择Java商城系统还是PHP商城系统呢&#xff1f;下面就对这两种常见的商城系统进行比较&#xff0c;并…

jump server是什么

Jump Server&#xff08;跳板服务器&#xff09;是一种安全的中间服务器&#xff0c;用于管理和控制对其他服务器的访问。它提供了一种安全的方式&#xff0c;允许管理员通过跳板服务器来管理和连接其他服务器&#xff0c;而无需直接从外部网络访问内部服务器。 跳板服务器的主…

seata分布式事务理论概述

分布式事务产生的原因&#xff1a; 数据库分库分表 应用的SOA化。就是业务的服务化(面向服务架构) 分布式事务的解决方案&#xff1a; 1、两阶段提交协议2PC 这里的两阶段提交和redolog binlog的两阶段提交不是一个东西&#xff0c;redo log和bin log的两阶段提交保证的是…

vulnhub靶场 Kioptrix-level-1

简介&#xff1a; vulnhub是一个提供靶场环境的平台。而Kioptrix-level-1就是一个对新手比较友好的靶场。初学渗透的同学可以做做试试看&#xff0c;项目地址如下。 项目地址&#xff1a;Kioptrix: Level 1 (#1) ~ VulnHub 信息收集 查看本机IP&#xff0c;靶机跟kali都是使用…

sqli-lab靶场通关

文章目录 less-1less-2less-3less-4less-5less-6less-7less-8less-9less-10 less-1 1、提示输入参数id&#xff0c;且值为数字&#xff1b; 2、判断是否存在注入点 id1报错&#xff0c;说明存在 SQL注入漏洞。 3、判断字符型还是数字型 id1 and 11 --id1 and 12 --id1&quo…

C++中的对象切割(Object slicing)问题

在C中&#xff0c;当我们把派生类对象向上强制转型为基类对象时&#xff0c;会造成对象切割&#xff08;Object slicing&#xff09;问题。  请看下面示例代码&#xff1a; #include <iostream> using namespace std;class CBase { public:virtual ~CBase() default;v…

nginx交叉编译移植-基于nuc980开发板的笔记

目录 一、nginx的介绍 二、开发环境 三、交叉编译开发过程 四、开发板测试 五、问题 一、nginx的介绍 nginx是一个高性能的Web服务器软件&#xff0c;它可以作为反向代理服务器、负载均衡器、HTTP缓存和安全策略等多种用途。nginx的设计目标是高并发、高性能、高可靠性和低内存…

postgresql中的近一周,近一月,近三月,近一年日期段拆分

统计中经常会遇到,近一周,近一月,近三月,近一年数据统计,下面提供了postgresql拆分日期段的sql -- 近一周,每一天起止时间 select generate_series startDate,generate_series interval 1 day endDate from generate_series( NOW()::date interval -6 day, now()::timest…

揭秘 Go 中的 new() 和 make() 函数

Go&#xff08;或 Golang&#xff09;是一种现代、静态类型、编译型的编程语言&#xff0c;专为构建可扩展、并发和高效的软件而设计。它提供了各种内置的函数和特性&#xff0c;帮助开发人员编写简洁高效的代码。其中包括 new() 和 make() 函数&#xff0c;这两个函数乍看起来…

财务明细一目了然,颜色标记记录轻松掌握个人账目!

无论您是想更好地理清个人收支&#xff0c;还是希望在财务管理中更加高效&#xff0c;我们为您推荐一款绝佳的财政管理神器&#xff1a;颜色标记记录&#xff01; 第一步&#xff0c;首先&#xff0c;我们要先进入【晨曦记账本】主页面&#xff0c;并点击上方功能栏里的“添加…

开发日志:企业微信实现扫码登录(WEB)

一&#xff1a;获取扫码登陆所需的参数&#xff1a;appid,secret,agentid 登录企业微信&#xff1a;https://work.weixin.qq.com/ 扫码登录文档&#xff1a;https://work.weixin.qq.com/api/doc/90000/90135/90988 1&#xff1a;获取appid 点击我的企业就可以看到企业ID信息&am…

【AIGC】如何在使用stable-diffusion-webui生成图片时看到完整请求参数

文章目录 背景开搞使用遇到的问题 背景 通过代码调用Stable Diffusion的txt2img、img2img接口时&#xff0c;很多时候都不知道应该怎么传参&#xff0c;比如如何指定模型、如何开启并使用Controlnet、如何开启面部修复等等&#xff0c;在sd-webui上F12看到的请求也不是正式调用…

java生成验证码返回前端图片,后端通过redis存储和校验

目录 1.导入maven 2.编写config类 3.编写controller 4.验证 1.导入maven <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version> </dependency> 2.编写config类 …

Mac 文件设置默认展示和排列方式

点击 现在默认展示方式是分栏方式&#xff0c;因我我勾选了 点击这里就可以修改 始终以xx打开&#xff0c;这里我选择了图标视图。 有快捷键 commandJ 修改默认配置。

烟雾文字动画效果

效果展示 CSS 知识点 transform 属性运用transform-origin 属性运用烟雾文字实现 整体页面结构布局实现 <section><p class"text">Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero dolorevoluptas incidunt exercitationem. Consecte…

编程初学者的“天然呆”时光

初学编程的时候&#xff0c;仿佛进入了一个全新的世界&#xff0c;兴奋之余难免迷茫。这个过程中&#xff0c;总是伴随着一些令人哭笑不得的“天然呆”瞬间。本文将回溯我刚开始学写代码时的一些愚蠢但难忘的经历&#xff0c;与读者分享那段独特的学习时光。 一、“Hello Worl…