Llama 3.2 Vision Molmo:多模态开源生态系统基础

编者按: 视觉功能的融入对模型能力和推理方式的影响如何?当我们需要一个既能看懂图像、又能生成文本的 AI 助手时,是否只能依赖于 GPT-4V 这样的闭源解决方案?

我们今天为大家分享的这篇文章,作者的核心观点是:多模态语言模型领域正处于快速发展阶段,Llama 3.2 Vision 和 Molmo 等开源模型的出现为构建开放的多模态生态系统奠定了重要基础。

本文分享了来自 Meta 的 Llama 3.2 Vision 和 AI2 的 Molmo 模型的主要技术架构及其特点,同时比较了它们与众多多模态大模型的性能表现。文中介绍在多数视觉领域测试中, Molmo 表现更优,Llama 3.2 V 在 MMMU 等文本相关任务中表现更好,目前多模态模型的开源定义仍需进一步探讨和完善,但 Molmo 是目前最接近开源的视觉模型。同时还探究了视觉功能的融入对模型能力和推理方式的影响。

尽管目前在评估工具、数据集等方面还存在不足,但开源模型已经展现出与闭源模型相媲美的潜力,这预示着多模态 AI 领域即将迎来新的发展机遇。

作者 | Nathan Lambert

编译 | 岳扬

多模态语言模型领域相比纯语言模型,显得定义更为不明确、未解决的问题更多,同时也有更多空间让人们发挥创意。在语言模型领域,存在一系列明确的任务和行为,那些前沿实验室正试图通过例如 OpenAI o1 这样的创新训练方法,在最为棘手的推理问题上取得突破。然而,无论是前沿实验室(frontier labs)还是小型实验室(small labs),都在探索多模态模型的应用方向。AI如何“感知”和理解外部世界?拥有一系列强大的开放式模型(open models)对于该领域全面且公开、透明的发展至关重要——这是实现积极成果的两个关键条件(译者注:这两个条件应当是指全面、公开透明的发展)。

目前,多模态语言模型研究大多是通过 late-fusion 模型进行的,即基于语言主干网络(language backbone)和图像编码器(image encoder)(很可能也是 GPT-4V 所使用的方法)进行初始化。 这种对基础语言模型的微调方式虽然成本较高,但实际上计算成本并没有人们想象的那么难以承受。虽然存在多种模型架构[1],但由于 late-fusion 这一架构的稳定性和可预测性,成为了当下研究的热门选择。Molmo 和 Llama 3.2 V 就是通过这种方法训练而成的。

通过在多模态数据集上预训练的 early-fusion 模型来扩展数据的预期效果尚未显现。或许只有当这些模型在 GPT-5 级别的计算集群上进行测试时,它们的真正优势才会显现出来。

Late-fusion 的多模态方法激发了我们对如何将基础语言模型转型升级为多样化输出形式的深入探索。回顾过去几年我们在模型微调领域所采用的各种技术,从 RLHF 开始,到多模态 late-fusion 模型,再到像 o1 这样的创新模型,我们意识到模型还有大量表达潜能等待我们去发掘。一些基本问题仍然值得关注,比如“多模态训练会对 GSM8k 或 IFEval 这样的标准文本评测基准造成何种影响?”在对模型进行视觉方面的微调之后,那些主要用于评估模型知识水平的标准测试,例如 MMLU(Massive Multitask Language Understanding)测试,并没有发生较大变化。

这个领域对我来说同样新颖。本文的主要介绍对象是 Ai2 的一个重要模型版本——Molmo[2](开放式多模态语言模型),以及 Meta 的新模型 Llama 3.2 Vision。两者都推出了一套不同规模的四个模型。它们的性能表现相当,但 Molmo 在开放程度上更胜一筹。

Meta 发布了 Llama 3.2 的早期版本,包括 1B、3B、11B-Vision 和 90B-Vision[3],并在博客文章中透露了一些训练过程的细节[4](文章中还有相关链接)。11B 模型可能是基于 Llama 3 8B 模型的改进版,而 90B 模型则是在 Llama 3 70B 模型的基础上发展而来的。

Ai2 推出了基于 Qwen 2 72B 打造的 Molmo 72B,基于 Qwen 2 7B 的 Molmo-7B-D,即将问世的基于 OLMo 7B 版本的 Molmo-O,以及基于 OLMoE 并拥有 1B 活跃参数的 Molmo-E。

Molmo 系列模型采用 Apache 2.0 许可协议,而 Meta 模型则采用了 Llama 3.2 社区许可协议,该许可协议对模型的使用施加了一些较为严格的限制。

这不禁让人思考,人工智能领域的发展将何去何从。实际上,重头戏是 1B 和 3B 参数规模的 Llama 模型。小型语言模型的市场需求持续攀升,而且随着这些模型能力的不断提升,市场潜力还在不断扩大。我会反复探讨这一话题,但今天我们聚焦的是多模态。

01 Llama Vision:面向大众开发者的多模态模型

自 Llama 3 报告[5]发布以来,Meta 已经明确表示这些模型不久将面世(欧盟地区除外)。Meta 正在将它们应用到 Meta AI 以及旗下的增强现实(AR)/虚拟现实(VR)设备,例如 RayBan 智能眼镜。这些模型非常可靠,比封闭实验室的小型模型更胜一筹,后者的活跃参数通常估计在 60B 范围内。

关于这些模型的具体信息相对较少。若欧盟地区的用户尝试从 Meta AI 的官方页面下载模型,将会看到我在 HuggingFace 平台上看到的地理限制锁🔒。

其他用户可在 Meta AI 中获取这些模型。不过还有个更重要的消息,还有一些具有更丰富文档和更高开放性的模型可供使用(且不受地理限制)。

02 Molmo:与 Llama Vision 相当的一个(大部分)开源的模型

Molmo 是 Ai2 最新推出的开源语言模型[6],它附有一份初步的技术报告[7],用户可以免费体验模型 demo[8],而且即将公开相应的数据集。该项目的宗旨是构建开源语言模型,让任何人都有机会参与或理解构建现代 AI 模型的最关键部分。Molmo 模型是在 Qwen2 和 OLMo 的架构基础上,结合了 CLIP 编码器[9]进行训练的。但尽管有了这个数据开放的 CLIP 版本[10],研究团队并没有选择这个版本,而是放弃使用它,转而选择另一种版本,因为后者下游性能更卓越。请注意,Mistral 的 Pixtral 模型[11]和 Llama 模型都训练了自己的编码器。相关博客文章清晰地阐述了这些组成部分是如何协同工作的:

该模型架构采用了将语言模型与图像编码器结合的简洁而标准的设计。整个模型由四个主要部分组成: (1) 一个预处理器,将输入的单张图像转换成一系列不同尺度(multiscale)和不同裁剪方式(multi-crop)的图像集合; (2) 一个 ViT 图像编码器,独立地将这些图像转换成一系列视觉 tokens; (3) 一个连接器,负责将视觉 tokens 转换为适合语言模型输入的维度,并通过池化技术减少视觉 tokens 数量; (4) 一个仅包含解码器的 Transformer 大语言模型(LLM)。

论文中对该模型结构进行了详细的概述。

请留意,在这些模型的两个训练阶段中,所有的模型参数都会得到更新,而不是保持不变。此外,这些模型在训练过程中并未采用RLHF(基于人类反馈的强化学习)或偏好调优技术(preference tuning)。就我们针对视觉模型所设定的基准测试而言,Molmo 模型在性能上可与 GPT、Claude 以及 Gemini 模型相媲美。

相较于 Llama 3.2 V 模型,Molmo 在多数视觉领域的表现更胜一筹。以下是对各个基准测试得分情况的概述:

  • MMMU 测试中,Llama模型的得分高出6分;
  • MathVista 测试中,Molmo模型的得分领先1分;
  • ChatQA 测试中,Molmo模型的得分高出2分;
  • AI2D 测试中,Molmo模型的得分领先4分;
  • DocVQA 测试中,Molmo模型的得分高出3分;
  • 而在 VQAv2 测试中,两者的得分相近,或者 Molmo 稍占优势(Llama 3.2 的博客文章中对这一处的报告不够明确)。

以下是 Reddit 上的用户 LocalLlama[12] 对评估结果的独立复现。

依我看,这一点也基本符合各组织的追求目标,Llama 3.2 V 在文本方面表现更佳,或许优势还相当明显,但在图像方面,Molmo 则更胜一筹。特别是在识别图像中的指向性特征和读取时钟等任务上,Molmo 的表现尤为出色。

正如我将在本文后续部分进一步探讨的,基准测试并不能全面反映这些模型的实力。Molmo 对开源和科学界做出了巨大贡献,但探讨这些模型的行为特性同样重要。Molmo 具备一项独特的功能,是其同等级模型所不具备的 —— 那就是能够指向参考图片中的特定像素。 例如,我向 Molmo 询问了一张我的照片中自行车的位置[13]。

这种指向性功能是多模态模型在 web agents 应用中最显著的优点。一旦在模型训练时融入了足够的 web 数据,它就能迅速掌握浏览所有常规网页的能力。

当模型被要求对同一张图片进行描述时,它给出了一个相当详尽的描述[14],而且相当标准:

图片是一张 Zoom 通话的截屏,图片被黑色边框和白色内框所环绕。在右上角,有一个小窗口显示另一位参与者,他留着胡须,戴着眼镜和耳机,身穿一件黑色T恤。他坐在壁炉前,壁炉台上摆放着照片和书籍。主画面中的年轻男子有着短短的棕色头发和蓝色的眼睛,面带微笑,穿着一件点缀着白色圆点的蓝色衬衫。他坐在一个白色墙壁、带窗台窗户的房间里,背后是一个黑色的架子。架子上陈列着各式物品,墙上还挂着一个自行车轮胎。屋内还摆放了几幅装框的画作。屏幕顶端显示着文件名……

这种详细的描述得益于新数据集 PixMo 的直接影响,该数据集被用于训练 Molmo 模型。PixMo 的价值远远超出这些早期模型。这个数据集的创新之处在于,它让标注人员通过音频而非文字来对图片做出回应(类似于这篇关于局部化叙述的研究[15]),这使得他们的数据标注更加富有创造性和描述性。事实上,数据标注人员们非常喜欢这些任务(比如提供指向数据),以至于他们主动要求完成更多任务。激发数据标注人员的高度参与度是任何人工数据流程(human data pipeline)的目标,而这在我所见过的案例中是前所未有的。这个数据集有数百万个样例,涉及各种各样的图像。

我们所掌握的有关 Llama 3.2 V 的少数技术细节之一是,它是在 “6B(图像,文本)对” 上进行训练的,其中大部分可能是合成数据。而 Molmo 则是通过主要由人类产生的数百万份数据进行训练。

对于 OLMo 模型,包括 Molmo 在内,最关键的差异化因素和战略是其开放性(openness)。随着对“开源 AI”定义的讨论进行,像这些多模态模型(例如 CLIP)就是很好的案例,可以用来检验或“压力测试”我们对开源 AI 的理解。以下是对 Molmo 模型及其同类模型的开放性比较 —— Llama 3.2 V 的开放性与其他所有权重开源模型(open-weight models)相似。

这些模型都采用了没有开放数据的视觉编码器(主要是 OpenAI 的 CLIP),但也有开源的替代方案。公开图像数据风险较高(可能会涉及像 CSAM 这样的敏感问题),而且过程复杂。Molmo 模型是基于非开源模型进行微调的(并对参数进行了更新),根据开源倡议的最新定义,它们并不能算作开源。但如果 Molmo 只是公开数据的嵌入,而不是原始图像或文本数据,那么这种做法是否能让模型满足开源要求。这就引出了一个问题:当核心权重保持不变并且公开嵌入数据时,模型的开源性是否依旧符合标准?

这与根据其他语言模型(包括非公开模型)的合成输出训练出的模型可被视为开源的定义是一样的。在同时使用多个模型和数据流的领域,开源 AI 的定义还需要进一步的探讨。 对于仅使用文本进行预训练的模型,其“开源”定义原则上是合理的,只需要在一些细节上做出调整。然而,当涉及到微调和多模态时,情况变得更加复杂,因此还需要更多的讨论。

基于这些原因,我不会直接宣称“Molmo 是开源的”,但它无疑是目前最为接近开源的视觉模型。从定义上讲,生态系统中最开放的实验室在战略上与开源的差距微乎其微。

03 视觉功能的融入对模型能力和推理方式的影响

视觉功能的增加可以被视为一种微调问题,让我不禁要问,当前顶级模型在处理带图像和不带图像的相同提示词时会有怎样的表现。在幕后会将 query 路由给不同的模型。对于那些不是 early fusion 模型的,比如 GPT-4 和 Claude,除了推理成本之外,带有视觉元素几乎肯定会对性能有所影响 —— 否则,所有的模型都将是视觉模型。而对于像 GPT-4o 这样能够原生处理图像数据的模型,这一测试并不适用。

最直接的比较方法就是查看模型的标准版本和视觉版本对文本任务进行评估的差异。然而,在目前已经发布的模型中,进行这种直接比较的寥寥无几。即便有,也通常只限于部分评估。在撰写本文的过程中,我做了一个还算不错但并不完全详尽的调查,发现对比数据不足,因此没法用具体的数字支撑一个有说服力的论点。我的直觉是,在模型中加入视觉处理会使得模型在训练完成之后通过各种方法(如微调、优化等)实现的性能提升(我们在 ChatBotArena 等平台上观察到的)变得更加难以实现。

本实验旨在观察 GPT-4 和 Claude 3.5 Sonnet 在处理中等难度的推理或编程任务时,能否在有图像干扰的情况下正确地忽略非相关信息。实验结果显示,当明确指示模型忽略某些信息时,它们都能轻松做到,并且在后续询问图像相关问题时,仍能准确理解图像内容。图像的引入可能会导致模型更容易出现之前模型在处理类似任务时遇到的那些典型问题或错误。

我首先提出了一个我经常使用的简单推理问题:“月球能装下多少高尔夫球?”无论是附有图像还是无图像的 ChatGPT4 ,它们的推理过程几乎相同,得出的答案也非常接近。

另一方面,Claude 的视觉系统在这个例子中(见下图右侧)显得有些力不从心。Claude 给出的回应,更像是一种巧妙的回避,而不是像往常那样尝试解答这个常见的概念性问题。

这个任务难度似乎不够,于是我决定挑战一个编程问题,要求 LLM 阐述解题思路,然后为其编写一个 Python 脚本 —— 一个语言模型的基本训练脚本。首先未提供给 ChatGPT 相关图像,这也在情理之中,对于实际开发来说,其作用有限。

ChatGPT 对带有图像的提示词的回应不够详尽,也不够周全。

而 Claude 所给出的两次回答在内容上几乎无二致。

这个结论并不让人意外。模型的图像输入不那么成熟,因此我们看到了更多去年常见的典型问题或不足之处。

更值得关注的问题是未来这种情况会有显著改善,还是维持现状?像 o1 这样的特性获得的认可度,明显高于更优质的视觉输入。在 AI 模型领域,语言仍然是核心, 如果没有明确的任务来挑战视觉的极限 ,就很难证明视觉输入具有变革性。语言依然是这个生态系统的命脉。

对于 Molmo 而言,由于缺乏标准的文本指令调优和 RLHF(基于人类反馈的强化学习),在进行推理任务时,给人的感觉与以往熟悉的模型大相径庭。我们清楚,需要在所有 OLMo 模型上不断优化这类任务。

然而,Molmo 还有一些 Claude 和 ChatGPT 所不具备的特殊功能。我们期待这些功能能够证明其使用价值。如果想要体验这些模型,还有一个选择是 Vision Arena[16],但需要注意的是,它的某些功能接口出现了问题,而且其运行速度不及原生的本地应用程序。

04 多模态语言模型:正处于快速发展阶段的前端

Molmo 项目与我之前关注的纯文本模型项目的进展相比,最显著的区别在于多模态模型生态系统的成熟度较低。 尤其是在模型训练完成后的行为研究方面,我们缺少评估工具、数据集、开放的基准模型 —— 总之,一切都非常缺乏。我在今年年初就这个问题发表了自己的看法,特别是对于开放流程(open pipelines)中多模态 RLHF 的不明确性[17],遗憾的是,至今变化不大。这就导致了一个现象:某些可以说是“开源”的模型几乎能与像 GPT-4o 这样的闭源模型相媲美。

需要明确的是,虽然技术报告中对模型的基准测试讨论颇多,但与潜在的研究空间相比,这些讨论仅仅是触及了表面。许多评估工作是将传统语言模型的理念,如解释概念或识别内容,迁移到视觉领域。 而对于视觉模型来说,我们需要的是全新的基准测试方向。对于视觉语言模型,SWE-Bench 的对等基准测试会是什么?我推测可能会出现 SWE-Bench-Vision,但我们还需要开发更多无法与文本模型相对应的新测试类别。

在使用多模态模型时,我发现并不清楚应该用它们来做什么。这些模型在信息提取和加工处理等方面确实强大。我就经常用 Claude 或 ChatGPT 来复制表格内容或重新编写代码生成图表。除了前面提到的用途之外,还有很多功能,特别是场景描述(scene captioning),虽然展示出来的时候非常吸引人,让人印象深刻,但并不是我们日常生活中会经常使用到的功能。

曾经,视觉语言模型的效果并不理想。但现在,它们的性能得到了大大增强,更重要的是,它们现在可以被大规模公开使用,这无疑会促进其被更广泛地采用。而随着使用率的提升,就有了发展的反馈回路。以下是对这一论点的详细解释。

特别是,Meta 采取了将“开源 AI”的品牌与 Llama 模型挂钩的策略,这一行动提升了 Llama 模型在业界的可信度,从而促使更多开发者更加重视此类模型。

在未来的多模态语言模型中,唯一尚未解决但肯定会重要的应用是理解网页元素。 Web agents 成为了阻碍生成式 AI 产品大规模部署的最后几道关卡之一。 我们之所以尚未见到更多的 web agents,可能是因为当前的生态系统过于依赖封闭模型,而这些模型很难获得执行相关操作所需的权限(尤其是在企业级应用中)。随着技术能力的提升,我们有理由相信,权重开源模型(open-weight models)将会得到快速的推广和应用。推动多模态模型发展的原因似乎更多是市场、技术、行业趋势等方面的因素,而非仅仅是为了推广本地多模态模型 —— 这一点我们可以向 Adept 公司进行探讨。随着权重开源模型和近乎开源模型((nearly) open-source models)的增多,AI 领域的加速发展指日可待。

Thanks for reading!

Hope you have enjoyed and learned new things from this blog!

About the authors

Nathan Lambert

ML researcher making sense of AI research, products, and the uncertain technological future. PhD from Berkeley AI. Experience at Meta, DeepMind, HuggingFace.

END

本期互动内容 🍻

❓Molmo 模型的“像素级指向功能”给您带来了哪些启发?您认为这个功能在未来可能催生什么样的创新应用?

🔗文中链接🔗

[1]https://lilianweng.github.io/posts/2022-06-09-vlm

[2]https://molmo.allenai.org/blog

[3]https://huggingface.co/collections/meta-llama/llama-32-66f448ffc8c32f949b04c8cf

[4]https://ai.meta.com/blog/llama-3-2-connect-2024-vision-edge-mobile-devices/?utm_source=twitter&utm_medium=organic_social&utm_content=video&utm_campaign=llama32

[5]https://arxiv.org/abs/2407.21783

[6]https://www.interconnects.ai/p/olmo

[7]https://molmo.allenai.org/paper.pdf

[8]https://molmo.allenai.org/

[9]https://huggingface.co/openai/clip-vit-large-patch14-336

[10]https://github.com/mlfoundations/open_clip

[11]https://mistral.ai/news/pixtral-12b/

[12]https://www.reddit.com/r/LocalLLaMA/comments/1fpb4m3/molmo_models_outperform_llama_32_in_most_vision/

[13]https://molmo.allenai.org/share/963de0d0-9069-4a14-ad5a-8e4bc0863136

[14]https://molmo.allenai.org/chat/d1917496-1581-4ca5-8bda-1f4216d1ea1e

[15]https://arxiv.org/abs/1912.03098

[16]https://huggingface.co/spaces/WildVision/vision-arena

[17]https://www.interconnects.ai/i/140525309/multimodal-rlhf-questions-ideas-and-resources

原文链接:

https://www.interconnects.ai/p/molmo-and-llama-3-vision

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

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

相关文章

el-table 滚动条重置 手动控制滚动条

最近在使用 el-table 的时候,出现一个问题: 表头过长的时候,会有左右滑动的操作,当我们把表格拉到最右侧,这个时候重新请求数据的话,表格位置还是在最右侧,不会恢复原位。 那我们想恢复原位&a…

Windows的MySQL开机自动启动问题

标题 问题描述 问题描述 在Windows系统中,我设置好了MySQL服务为自动启动,但在开机后发现MySQL服务任没有自动运行。我有点苦恼,每次连接MySQL,都要进入计算机管理,手动打开。 解决方法: 1.前提安装好MySQ…

私有化视频平台EasyCVR视频汇聚平台接入RTMP协议推流为何无法播放?

私有化视频平台EasyCVR视频汇聚平台兼容性强、支持灵活拓展,平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 有用户反馈,项目现场使用RTMP协议接入EasyCVR平台,但是视频却不…

Python小白学习教程从入门到入坑------第二十三课 封装(语法进阶)

面向对象的三大特征:封装、继承、多态 一、封装 1.1 何为封装 封装:在Python中指的是隐藏对象中一些不希望被外部所访问到的属性或者方法。将复杂的信息、流程给包起来,内部处理,让使用者只需要通过简单的操作步骤,…

Rust 力扣 - 643. 子数组最大平均数 I

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历长度为k的窗口&#xff0c;我们只需要记录窗口内的最大和即可&#xff0c;遍历过程中刷新最大值 结果为窗口长度为k的最大和 除以 k 题解代码 impl Solution {pub fn find_max_average(nums: Vec<…

Vscode使用launch.json进行传参调试代码

目录 1 操作2 后记 1 操作 {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","…

Fooocus图像生成软件本地部署教程:在Windows上快速上手AI创作

文章目录 前言1. 本地部署Fooocus图像生成软件1.1 安装方式1.2 功能介绍 2. 公网远程访问Fooocus3. 固定Fooocus公网地址 前言 本篇文章将介绍如何在本地Windows11电脑部署开源AI生图软件Fooocus&#xff0c;并结合Cpolar内网穿透工具轻松实现公网环境远程访问与使用。 Foooc…

#渗透测试#SRC漏洞挖掘#自动化脚本的编写01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

python 使用进程池并发执行 SQL 语句

这段代码使用了 Python 的 multiprocessing 模块来实现真正的并行处理&#xff0c;绕过 Python 的全局解释器锁&#xff08;GIL&#xff09;限制&#xff0c;从而在多核 CPU 上并发执行多个 SQL 语句。 from pyhive import hive import multiprocessing# 建立连接 conn hive.…

SpringBoot+VUE2完成WebSocket聊天(数据入库)

下载依赖 <!-- websocket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><!-- MybatisPlus --><dependency><groupId>com.ba…

电子电气架构 --- 车载诊断的快速入门

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所有人的看法和评价都是暂时的&#xff0c;只有自己的经历是伴随一生的&#xff0c;几乎所有的担忧和畏惧…

继承的内容

封装&#xff1a; 1.在类中&#xff0c;把数据和方法放在一起&#xff0c;只展示成员函数&#xff0c;不展示定义的数据为私有。 2.一个类型放到另一个类型里面&#xff0c;通过typedef成员函数调整&#xff0c;封装另一个全新的类型。相当于是一个包装。 继承&#xff1a; st…

设计模式之结构型模式---装饰器模式

目录 1.概述2.类图3.应用场景及优缺点3.1 应用场景3.2 优缺点3.2.1 优点3.2.2 缺点 4.实现4.1 案例类图4.2 代码实现4.2.1 定义抽象构建角色4.2.2 定义具体构建角色4.2.3 定义抽象装饰器角色4.2.4 定义具体装饰角色4.2.5 装饰器模式的使用 1.概述 装饰器模式是指在不改变现有对…

接口测试(十一)jmeter——断言

一、jmeter断言 添加【响应断言】 添加断言 运行后&#xff0c;在【察看结果树】中可得到&#xff0c;响应结果与断言不一致&#xff0c;就会红色标记

vue-i18n国际化多国语言i18n国际语言代码对照表

uniapp是自带有i18n这个插件 需要自己去给每一个需要国际化的字符去手动配置key&#xff0c;所以如果是已经完成的项目可能工作量就稍微有点大了 第一步&#xff1a; 语言命名是有规范的不能乱取名&#xff0c;具体可以参考国际语言代码 i18n国际语言代码对照表 zh_CN 中文(简体…

GitHub | 发布到GitHub仓库并联文件夹的方式

推送到Github 推送步骤如果你只想更新单个文件&#xff0c;只需在第 4 步中指定该文件的路径即可。可能问题一 效果 推送步骤 更新 GitHub 仓库中的文件通常涉及以下步骤&#xff1a; 克隆仓库&#xff1a; 首先&#xff0c;你需要将 GitHub 上的仓库克隆到本地。使用 git …

Docsify文档编辑器:Windows系统下个人博客的快速搭建与发布公网可访问

文章目录 前言1. 本地部署Docsify2. 使用Docsify搭建个人博客3. 安装Cpolar内网穿透工具4. 配置公网地址5. 配置固定公网地址 前言 本文主要介绍如何在Windows环境本地部署 Docsify 这款以 markdown 为中心的文档编辑器&#xff0c;并即时生成您的文档博客网站&#xff0c;结合…

杂货 | 每日资讯 | 2024.11.1

注意&#xff1a;以下内容皆为AI总结 2024年11月1日&#xff0c;人工智能&#xff08;AI&#xff09;领域发生了多项重要事件&#xff0c;标志着技术发展的新阶段。本文将详细探讨以下三大事件&#xff1a; OpenAI为ChatGPT新增搜索功能IEEE发布《2025年及以后的技术影响》报…

RuoYi 样例框架运行步骤(测试项目自用,同学可自取)

目录 后台 API 运行导入&#xff0c;下载包端口号mysql 准备运行 PC&#xff08;电脑端&#xff09;运行安装 nodejs安装 yarn 及其依赖&#xff0c;启动服务登录admin(admin123) 或 ry(admin123) App&#xff08;移动&#xff09;运行下载 HBuilderX运行app运行注意&#xff1…

Puppeteer点击系统:解锁百度流量点击率提升的解决案例

在数字营销领域&#xff0c;流量和搜索引擎优化&#xff08;SEO&#xff09;是提升网站可见性的关键。我开发了一个基于Puppeteer的点击系统&#xff0c;旨在自动化地提升百度流量点击率。本文将介绍这个系统如何通过模拟真实用户行为&#xff0c;优化关键词排名&#xff0c;并…