国内经典多模态大模型工作2——MiniCPM-V系列(MiniCPM-Llama3-V 2.5、MiniCPM-V-2.6解读)(持续更新)

news2024/10/17 4:56:58

MiniCPM-V系列是面壁智能推出的小参数量的开源多模态大模型,没有超过9B的版本。主打小而强。

官方目前只放出了MiniCPM-Llama3-V 2.5的paper,2.0只有技术博客而且主要是效果展示。
目前一共出了以下几代:MiniCPM-V、MiniCPM-V 2.0、MiniCPM-Llama3-V 2.5、MiniCPM-V 2.6。
项目地址:https://github.com/OpenBMB/MiniCPM-V
paper:https://arxiv.org/abs/2408.01800
title:《MiniCPM-V: A GPT-4V Level MLLM on Your Phone》
在这里插入图片描述

MiniCPM-V 2.0

技术博客:https://www.openbmb.cn/community/blogs/blogpage?id=bc30f4ab8f134206be72910a1e596922
没有啥干货。这个版本主要是结合其他工作,训了一个能处理高分辨率的中文多模态大模型。

  1. 将不同分辨率图像划分固定大小的448*448的patch,得到数量不一的块,再对总的图像特征进行采样(LLaVA-UHD)
  2. 通过图文特征对齐+中英文特征对齐,在中文图文数据较少的情况下训练一个中文多模态模型( VisCPM)。

MiniCPM-Llama3-V 2.5

这版有论文了,详细写。
这一版在 OpenCompass 评估中优于强大的 GPT-4V-1106、Gemini Pro 和 Claude 3。

能力

  1. 支持最高1.8M像素的高分辨率图像输入(例如1344*1344),支持任意长宽比图像
  2. 强大的OCR,OCRBench 上优于 GPT-4V、Gemini Pro 和 Qwen-VL-Max,支持table-to-markdown
  3. 可信,基于RLAIF-V技术做了对齐,减少幻觉,更符合人类喜好
  4. 多语言,基于VisCPM技术,支持30多种语言
  5. 系统地集成了一套端侧部署优化技术

模型架构

在这里插入图片描述

基本架构

三部分:visual encoder, 压缩层, LLM
visual encoder:SigLIP SoViT-400m/14
压缩层:单层交叉注意力
LLM:每一代都不同

Adaptive Visual Encoding

关键在与尊重输入的原始纵横比并保留足够的视觉细节(高分辨率),并且来自图像编码的视觉标记的数量应该适中,以在端设备上负担得起。

Image Partition 图像分割
  1. 计算输入图片能分割成多少个slice在这里插入图片描述
    WI和HI是输入图像分辨率,Wv和Hv是ViT的输入大小。
  2. 计算可能的slice的行列数组合m和n
    在这里插入图片描述
  3. 计算每种行列数组合的得分,选择分数最高的。好的分割应该使slice的宽高比尽量接近ViT预训练时的输入大小(这里应该是448*448)
    在这里插入图片描述
    在这里插入图片描述
    当N是素数时,只能得到1*N和N*1两种组合。为了避免这种情况,又引入了在这里插入图片描述
    来引入更多种可能的 m*n 组合。

实践中设置N < 10。最高支持1.8 million pixels。

Slice Encoding 切片编码

虽然图像分割可以保证切片与ViT预训练设置之间的良好匹配,但每个切片的大小并不精确等于(Wv, Hv)。所以首先要按比例调整每个切片的大小,使所得区域大小与ViT输入大小Wv × Hv相匹配。减少patch数量与vit预训练时的差距。
随后,我们对ViT的位置嵌入进行2D插值,以适应切片的比例。具体做法是将原本1D的位置编码在这里插入图片描述先展开为2D在这里插入图片描述,通过二维插值技术将P2调整至与每个slice相匹配的大小。位置编码的处理可以参考:https://blog.csdn.net/qq_44475666/article/details/141462624 。

除了上述对图像进行分割并处理的方法外,还会将原始图像作为一个额外的slice resize后加入到输入数据中。这样做是为了提供关于整个图像的整体信息,有助于模型在处理局部细节的同时也能理解图像的整体结构和上下文。也是这种高分辨率处理的常见操作了。

Token Compression 图像token压缩

这里的做法和Qwen-VL相同。
在视觉编码之后,每个slice被编码为1,024个tokens。这太多了。为了压缩Visual tokens,作者引入了一个单层的交叉注意力层,用一组可训练的query emb(64 queries for MiniCPM V1&2 and 96 tokens for MiniCPM-Llama3-V 2.5 )和每个slice的tokens的K,V做交叉注意力。最终压缩后的token数量取决于query emb的长度。
此外这层还会再加一次2D位置编码,而且这里的位置编码不可学习。
代码里这一步也叫attn pool。

Spatial Schema

为了表示每个slice相对于整个图像的位置,还引入了一个两个特殊的标记 < slice> 和<\slice>包装每个slice的tokens,然后使用一个特殊的标记“\n”将不同的行的slice的tokens分开。做法来自

训练

分三个阶段,分别是pre-training,SFT和RLAIF-V。

预训练

预训练又分为三个阶段:
在这里插入图片描述

Stage1

这一阶段的作用是warm up压缩层。
先随机初始化压缩层模型参数,再冻结其他模块进行训练。
Visual Encoder的分辨率设置为224*224。

数据上使用了200M的Image Captioning数据。来自随机选择自表格,并清洗掉了删除相关性差的图像-文本对和格式不良的文本数据,确保数据质量。

Stage2

第二阶段的作用是扩展预训练的视觉编码器的输入分辨率。
这阶段视觉编码器可训练,其他模块冻结。

数据上,为了扩展预训练的分辨率,从表中的Image Captioning数据中额外选择了200M数据。

Stage3

扩展视觉编码器的主输入分辨率后,最后使用自适应视觉编码策略训练视觉模块,该策略可以进一步适应任何宽高比的高分辨率输入。
这阶段压缩层和视觉编码器都进行了适应语言模型嵌入空间的训练。LLM保持冻结状态,以避免相对低质量的预训练数据破坏LLM能力。

Caption Rewriting.

来源于网络的图像-文本对可能存在标题数据的质量问题,包括内容不流畅、语法错误和重复的单词。为了解决这个问题,引入了一个用于低质量caption重写的辅助模型。
重写模型将原始caption作为输入,并要求将其转换为问答对。问答对的答案被作为更新的标题。
在实践中,先利用GPT-4对少量种子样本进行标注,然后将其用于微调一个LLM以完成重写任务。

Data Packing

来自不同数据源的样本通常具有不同的长度。批间样本长度的大差异将导致内存使用效率低下和内存不足(OOM)错误风险。
将多个样本打包成固定长度的单个序列。通过截断序列中的最后一个样本,确保了序列长度的一致性,促进更一致的内存消耗和计算效率。
同时,修改了位置ids和注意掩码,以避免不同样本之间的干扰。在实验中,数据打包策略在预训练阶段可以带来2~3倍的加速。

Multilingual Generalization 多语言

传统的解决方案包括广泛的多模态数据收集和清理,以及针对目标语言的训练。不过,最近来自VisCPM的研究结果表明,通过强大的支持多语言的LLM,MLLM可以有效地跨语言推广。很大程度上减轻了在数据集较少的语言对多模态数据的严重依赖。
在实践中,只在英语和中文多模态数据上预训练模型,然后执行轻量级但高质量的多语言监督微调以与目标语言保持一致。尽管它很简单,但MiniCPM-Llama3-V 2.5与更大的mllm相比,可以在30多种语言中实现良好的性能。

SFT

在从预训练中学习基础能力后,我们对高质量的视觉问答数据集进行监督微调(SFT)
可训练模块:所有模型参数。
在这里插入图片描述
数据主要来自人类标注和GPT-4标注的高质量数据集。

最近的研究表明(Minicpm、Gemini-1.5),接近训练结束的数据在塑造模型的能力和响应风格方面起着更重要的作用。

作者将SFT数据分为两部分。第一部分的重点是增强模型的基本识别能力,而第二部分的重点是增强模型生成详细响应和遵循人类指令的能力。

具体来说,part-1数据由响应长度相对较短的传统QA和caption数据集组成,这有助于增强模型的基本识别能力。

相比之下,part-2部分包含具有复杂交互的长响应的数据集,无论是在文本还是多模态上下文中。

在SFT中,这两个部分数据被连接起来并依次输入到模型中。

在MiniCPM-Llama3-V 2.5中,作者额外引入了来自Cauldron数据集的2M数据用于多模态知识增强,以及90K覆盖36种语言的多语言数据用于增强多语言对话能力。

RLAIF-V 对齐

在这里插入图片描述
MLLM通常容易出现幻觉问题,产生不符合输入图像的响应。为了解决幻觉问题,作者采用RLAIF-V,关键在于从开源模型中获得可扩展的高质量反馈,用于直接偏好优化(DPO)。

Response Generation

第一步是使用策略模型生成给定指令的多个响应。具体来说,给定一个等待对齐的模型 M,我们使用高温采样解码从 M 中采样 10 个响应Y = {y1, y2, · · · , yn}(sampling decoding with high temperatures)。
有几个好处:(1)反馈收集和学习可以更好地关注可信度,因为避免了来自多个 MLLM 的不同文本样式。(2) 反馈学习更有效,因为偏好直接收集在策略模型的分布上。

Feedback Collection

从开源mllm收集高质量的反馈可能具有挑战性,因为与专有模型相比,它们的功能通常较弱。为了解决这个问题,RLAIF-V使用了分而治之的策略来进行响应评分。

  1. 响应拆分:
    每个响应y_i首先被拆分成多个原子声明 Ci = {c1, c2, · · · , cm}。这些原子声明是构成完整响应的基本单元,通常是比较简单的陈述句。使用 Llama-3 8B 模型来执行这一拆分任务。

  2. 声明验证:
    将每个原子声明c_j 转换为一个是非题(yes/no 问题),例如 “Is it true that [c_j]?”。
    使用开源 MLLM 来评估每个是非题的正确性。具体来说:
    对于 MiniCPM-V 2.0,使用 OmniLMM 12B 模型来评分。
    对于 MiniCPM-Llama3-V 2.5,使用 LLaVA-NeXT-Yi 34B 模型来评分。

  3. 评分计算:
    计算每个响应 y_i的最终得分s_i。得分定义为:−n_{rej},其中n_{rej}是无效原子声明的数量。
    无效原子声明是指那些被评估为错误或不确定的声明。

Direct Preference Optimization

Direct Preference Optimization (DPO) 是一种用于训练模型以优化偏好(preference)的方法。通过这种方法,模型可以学习用户对不同输出的偏好,从而生成更符合用户期望的结果。以下是 DPO 方法的具体步骤和实现细节:

  1. 高质量 AI 反馈的收集:
    在进行偏好学习之前,首先需要收集高质量的 AI 反馈。这一步骤已经在前面提到过,通过分而治之的策略已经得到了每个响应的评分。
  2. 构建偏好数据集
    (1)从每个响应集合Y中抽取中随机抽取响应对。假设我们有 n个响应,从中随机选择两个响应组成一个对。
    (2)根据每个响应的相对评分来确定哪个响应更优。分数更高的记为yw,分数低的记为yl。这样,每个随机抽取的响应对都可以转化为一个偏好对(yw, yl)。
    (3)继续重复上述过程,直到构建出足够大的偏好数据集。在实践中,作者构建一个包含 6,000 个偏好对的数据集,这些偏好对来自 3,000 张独特的图像。
  3. 使用 DPO 算法进行训练
    偏好对训练:
    DPO 算法需要在偏好对上进行训练。每个偏好对表示模型更倾向于生成yw。
    在训练过程中,模型会尝试最大化生成yw的概率同时最小化生成yl的概率。
    损失函数:
    DPO 算法通常使用一种对比损失函数(contrastive loss)来优化模型。这种损失函数鼓励模型生成高评分的响应,同时避免生成低评分的响应:
    在这里插入图片描述

端侧部署

端侧设备(主要是手机)的限制主要来自内存、CPU、GPU的限制。

Quantization量化

为了在端侧设备(如智能手机和计算机)上部署多语言大模型(MLLMs),研究者采用了量化技术来降低内存消耗,并在不同的框架上进行了实证研究。
量化是一种广泛使用的降低内存消耗的技术。其主要思想是通过使用统一的缩放因子将多个权重压缩到一个更窄的范围内,然后进行离散化处理。这一过程可以用数学公式表示为:在这里插入图片描述
通过量化,可以显著减少模型的内存占用。例如,对于 MiniCPM-Llama3-V 2.5 模型,其 fp16 版本通常需要 16~17GB 的内存。
对于 MiniCPM-Llama3-V 2.5 模型,研究者选择了 GGML 框架中的 Q4_K_M 模式进行 4-bit量化。这种量化策略将模型的内存需求从 16~17GB 降低到约 5GB,这在移动设备上是非常友好的。

Deployment Framework 部署框架

研究者调查了多种框架,以找到最适合端侧设备的解决方案。这些框架包括但不限于:
CPU框架:如 llama.cpp、ONNX Runtime 等。
GPU框架:如 TensorRT、CUDA 等。
NPU框架:如 NNAPI、Huawei HiAI 等

研究者优先考虑了CPU框架。在众多CPU框架中,选择了 llama.cpp 框架。
实验在小米14 Pro(搭载高通Snapdragon 8 Gen 3芯片)上进行。
结合4位量化(Q4_K_M模式)和 llama.cpp 框架,对模型进行了优化。
结果:
文本编码延迟:模型的文本编码延迟为64.2秒。
文本解码速度:模型的文本解码速度为1.3个token/秒。
还是太慢。

以下尝试了三种高阶优化:分别针对内存、编译和设置
在这里插入图片描述

Memory Usage Optimization 内存优化

实验结果显示,在没有特定优化的情况下,图像处理可能会成为移动设备上推理速度的瓶颈,主要是由于移动设备有限的内存资源。为了应对这一问题,研究者探索了多种内存使用优化策略。

在移动设备上进行图像处理和推理时,内存资源非常有限。传统的做法是同时加载视觉变换器(ViT)和大型语言模型(LLM)到内存中,这会导致内存占用过高,进而引发频繁的页面交换(paging),即内存中的数据频繁地在内存和磁盘之间交换,严重影响程序的运行效率。

为了解决上述问题,研究者采用了顺序加载的方法,而不是同时加载 ViT 和 LLM 到内存中。具体步骤如下:

  1. 视觉编码阶段:首先加载 ViT 模型,对输入的图像进行视觉编码。在完成视觉编码后,释放 ViT 模型占用的内存。
  2. 文本和视觉令牌编码阶段:接着加载 LLM 模型,对视觉和文本令牌进行编码。在完成编码后,释放 LLM 模型占用的内存。

结果:
图像处理时间:优化前,图像处理时间为 45.2 秒;优化后,图像处理时间减少到 31.5 秒。

Compilation Optimization

通过直接在目标设备上编译模型,可以显著改善编码延迟和解码吞吐量。
指令集架构的一致性:
直接在目标设备上编译模型可以确保编译器生成的代码与目标设备的指令集架构(ISA)高度一致。这种一致性可以充分利用目标设备的硬件特性,提高代码的执行效率。
例如,现代CPU和GPU通常支持特定的SIMD(单指令多数据)指令,这些指令可以并行处理多个数据点,从而加速计算。

优化编译器的选择:
使用针对目标设备优化的编译器可以生成更高效的机器码。这些编译器通常会进行一系列优化,如循环展开、函数内联、内存访问优化等,以提高代码的运行效率。

编码延迟:
编码延迟从64.2秒显著减少到17.0秒,减少了约73.5%。这一显著的减少表明,直接在目标设备上编译模型可以极大地提高编码阶段的效率。
解码吞吐量:
解码速度从1.3个token/秒提升到3.2个token/秒,提升了约146.2%。这表明编译优化不仅减少了延迟,还显著提高了模型的解码能力。

Configuration Optimization 配置优化

在端侧设备上部署多语言大模型(MLLMs)时,单一默认配置可能无法适应不同设备的多样性和特性。为了最大化推理速度,研究者开发了一种自动参数搜索算法,动态确定最适合各个设备的配置(例如,不同CPU核心上的计算分配)。通过这种配置优化,可以显著提高模型的性能。

  1. 自动参数搜索算法
    动态配置:自动参数搜索算法能够根据设备的具体硬件特性,动态调整模型运行时的参数配置。这包括但不限于计算任务在不同CPU核心上的分配。
    优化目标:算法的目标是最大化推理速度,同时保持模型的准确性和稳定性。
  2. 具体优化参数
    计算分配:优化算法会尝试不同的计算任务分配方案,例如将某些计算任务分配给性能更强的CPU核心,而将其他任务分配给性能较弱的核心。
    缓存管理:优化算法还会考虑缓存的使用情况,确保频繁访问的数据能够快速读取。
    并行处理:通过合理分配并行任务,充分利用多核CPU的并行处理能力。

优化前后的性能对比
优化前:
解码吞吐量:3.2个token/秒
优化后:
解码吞吐量:8.2个token/秒,超过了典型的人类阅读速度(通常约为4-5个token/秒)

NPU加速

在这里插入图片描述
除了针对CPU的优化技术外,利用其他类型的芯片(如GPU和NPU)也是提高模型在端侧设备上性能的一个有前景的方向。尽管GPU在理论上具有潜力,但实验发现当前移动设备上的GPU框架尚未优化到足以超越CPU性能的程度。因此,研究者转向了神经处理单元(NPU)来解决这一问题。

  1. 视觉编码加速:
    替换后端框架:为了利用NPU加速视觉编码,研究者将视觉变换器(ViT)的后端框架从原来的框架替换为QNN(Quantized Neural Network)框架。QNN框架专门设计用于在NPU上高效运行量化模型。
  2. 保留原有框架:对于语言模型部分,仍然使用 llama.cpp 框架,以保持其在CPU上的高效运行。

实验结果:
视觉编码时间:在配备高通NPU的移动设备上,这一优化显著减少了视觉编码时间。具体来说,视觉编码时间从3.7秒减少到1.3秒,如图所示。

MiniCPM-V 2.6

最新最强的一代。与 MiniCPM-Llama3-V 2.5 相比,它的性能有了显著提升,并引入了用于多图像和视频理解的新功能。

还没有论文和技术博客,等出了再更吧。

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

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

相关文章

探索 OpenAI 的 Swarm:一个用于多代理系统的实验性框架

OpenAI 最近发布了 Swarm,这是一个轻量级且实验性的框架,旨在支持多代理系统的开发(在其 GitHub 上特别提到这是实验性和教育性的)。 与传统方法依赖于底层的大型语言模型 (LLM) API 不同,Swarm 提供了一个无状态的抽象,用于管理多个代理之间的交互和任务交接。 这一发…

比瓴科技应邀出席金融供应链安全研讨会•引领金融软件供应链安全创新实践

9月25日&#xff0c;广东省金融科技协会在广东省地方金融管理局指导下成功在广州隆重召开“筑‘链’安全 护航发展”金融供应链安全研讨会。 随着信息技术的飞速发展和金融行业的数字化转型&#xff0c;软件在金融领域的应用日益广泛。如何保障软件供应链安全已然成为守护供应…

univer实现excel协同

快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><script src&q…

大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 聚合组 RowKeys

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

物联网如何推动工业数字化转型?

全球步入数字经济时代&#xff0c;制造业的数字化转型已成为驱动经济发展的核心引擎。物联网作为工业数字化转型的强力推手&#xff0c;其深度融入不仅促进了生产流程的智能化与自动化&#xff0c;还实现了数据的实时分析与精准决策&#xff0c;为制造业企业带来了前所未有的创…

根据Vue对比来深入学习React 上 函数组件 jsx 事件绑定 响应式数据 条件绑定 列表渲染 表单绑定

文章目录 React项目创建React核心库介绍React组件jsx编写jsx代码的本质jsx里面渲染不同内容 事件绑定事件绑定其他操作特别注意 响应式数据setState 的特性 条件渲染列表循环表单绑定总结 React项目创建 react官网提供了很多生产级的React框架 比如next.js&#xff0c;不过你还…

python+selenium工具UI自动化全功能介绍(包括工具本身及配合RobotFramework框架和pytest框架应用)

文章较长&#xff0c;各位志同道合的朋友们&#xff0c;感谢关注收藏。 书山有路勤为径&#xff0c;学海无涯苦作舟。 ——韩愈&#xff0c;以山川学海比喻学习的艰辛与努力的方向。 明天的我们&#xff0c;必将会感谢昨日的自己。 1 UI自动化测试 UI自动化测试&#xff08…

ACwing题目分享 756

这个题看起来比较简单&#xff0c;但实际上有些思维难度&#xff0c;现在想到的是模拟法&#xff0c;我们可以设好边界&#xff0c;然后从左上角开始遍历&#xff0c;沿着题目要求的顺序&#xff0c;沿着top left right bottom这四个边依次来做。 模拟过程有很多坑&#xff0c…

基于Python Django的在线考试管理系统

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

【花卉识别系统】Python+卷积神经网络算法+人工智能+深度学习+图像识别+算法模型

一、介绍 花朵识别系统。本系统采用Python作为主要编程语言&#xff0c;基于TensorFlow搭建ResNet50卷积神经网络算法模型&#xff0c;并基于前期收集到的5种常见的花朵数据集&#xff08;向日葵、玫瑰、蒲公英、郁金香、菊花&#xff09;进行处理后进行模型训练&#xff0c;最…

(31)非零均值信号的时域分析:均值、方差、与功率

文章目录 前言一、使用MATLAB生成余弦波并画图二、计算信号的均值、方差、与功率三、结果分析 前言 本文对叠加了直流分量的一段整周期余弦信号进行时域分析&#xff0c;使用MATLAB进行信号生成&#xff0c;并计算其均值、方差、与功率。最后给出对计算结果的分析&#xff0c;…

Docker 教程二 (架构)

Docker 架构 Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器&am…

【HKIE】2011 The HKIE Structural Examination

文章目录 2011 The HKIE Structural ExaminationQuestion 1 商业大厦 | Commercial Tower客户要求 | Clients Requirements荷载要求 | Imposed Loading场地条件 | Site Conditions不考虑的内容 | Omit from ConsiderationSection ASection B Question 2 办公大楼 | Office Buil…

管家婆-本地化-无法打开处理,链接失败

一、首先检测sql是否正常 二、检测管家婆svr是否正常 三、检测管家婆服务正常 阿雪技术观 拥抱开源与共享&#xff0c;见证科技进步奇迹&#xff0c;畅享人类幸福时光&#xff01; 让我们积极投身于技术共享的浪潮中&#xff0c;不仅仅是作为受益者&#xff0c;更要成为贡献…

前端开发攻略---使用css实现滚动吸附效果

实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title><style>…

【工具】音视频翻译工具基于Whisper+ChatGPT

OpenAI推出的开源语音识别工具Whisper&#xff0c;以其卓越的语音识别能力&#xff0c;在音频和视频文件处理领域大放异彩。与此同时&#xff0c;ChatGPT也在翻译领域崭露头角&#xff0c;其强大的翻译能力备受赞誉。因此&#xff0c;一些字幕制作团队敏锐地捕捉到了这两者的结…

Ubuntu卸载Mysql【ubuntu 24.04/mysql 8.0.39】

一、准备工作 查看ubuntu版本号 查看mysql版本号(如果没有安装mysql,这一步省略) 二、Ubuntu上卸载mysql(如果没有安装mysql这一步省略) 在Ubuntu上卸载MySQL可以通过以下步骤进行&#xff0c;确保完全移除MySQL相关的包和数据&#xff1a; 1. 停止MySQL服务 在卸载之前…

MySQL(B站CodeWithMosh)——2024.10.12(15)

ZZZZZZ目的ZZZZZZ代码ZZZZZZ重点ZZZZZZ操作&#xff08;非代码&#xff0c;需要自己手动&#xff09; 4- WITH OPTION CHECK子句 | THE WITH OPTION CHECK Clause_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1UE41147KC?p66&vd_sourceeaeec77dfceb13d96cce76cc2…

RabbitMQ 入门(三)SpringAMQP

一、Spring AMQP 简介 SpringAMQP是基于RabbitMQ封装的一套模板&#xff0c;并且还利用SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。 SpringAmqp的官方地址&#xff1a;https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能&#xff1a; - 自动…

搭建`mongodb`副本集-开启权限认证 mongo:7.0.5

搭建mongodb副本集-开启权限认证 mongo:7.0.5 1.5.1、创建文件 创建配置文件保存目录和数据保存目录 mkdir -p /data/mongodb/{/conf,/data,/logs}生成和设置权限 这个文件一定要在一个服务里面生成然后复制到其它服务器&#xff0c;所有服务器的这个key一定是相同的。 op…