【笔记】大模型时代下做科研的四个思路 - 论文精读·52

视频地址:大模型时代下做科研的四个思路
在这里插入图片描述

相关大模型
CV: ViT(22B) , ViT-G(2B) from google
多模态:ViT-E(4B) from google
NLP:LLaMA(70B,130B,330B,651B) from Meta

提问:在模型越来越大的时代背景下,如何利用有限的资源做出一些科研工作。

回答:四个方向

1、Efficient(PEFT)
提升训练效率,这里以PEFT(parameter efficient fine tuning)为例
(做效率提升的(哪里慢提升哪里的速度,哪里heavy使其轻量级))

2、Existing stuff(pretrained model)、New directions
使用别人的预训练模型,新的研究方向(做新方向,避免撞车,竞争,刷榜)

3、plug-and-play
做一些即插即用的模块,例如模型的模块、目标函数、新损失函数、数据增强方法等等。(可以在不同领域应用)

4、Dataset,evaluation and survey
构建数据集、发表分析为主的文章或者综述论文。

大模型时代下做科研的四个思路

  • 第一个方向:Efficient(PEFT)
    • 1. AIM论文为例
    • 2. PEFT的方法
      • (1)adapter
      • (2)prompt tuning
    • 3. AIM模型设计
  • 第二个方向:Existing stuff(pretrained model)
    • 一些比较新的Topic
  • 第三个方向:plug-and-play
  • 第四个方向: Dataset,evaluation and survey

第一个方向:Efficient(PEFT)

1. AIM论文为例

通过论文AIM为例讲述如何进行PEFT,即在硬件资源有限时对大模型进行高效微调

论文地址:https://arxiv.org/abs/2302.03024
论文标题:AIM: Adapting Image Models for Efficient Video Action Recognition
标题翻译:调整图像模型以实现高效的视频动作识别

这篇论文是做视频动作识别,即视频理解的工作。

传统模型和论文改进的微调方法对比图:
在这里插入图片描述
之前的做法:

  1. 在已有的模型之上,单独增加时序处理模块,比如
    (1)在TSN中,先将视频劈成几段,然后将从这些视频中抽取出来的特征做一下加权平均。
    (2)在Temporal Shift Module(TSM)中,做的就是把模型的特征在Channel维度上,进行来回的shift操作,从而去模拟时序建模。
    (3)在最近的使用Transformer来做视频理解的工作里,像Time Transformer,就是先做Time Attention,再做Spatial Attention,也就是将Spatial 、Temporal分开来做。
  2. 将时间和空间的特征一起学,这里主要是3D网络,比如i3D,Transformer时代的Video Swing,就是把2D的这个Shifted Window变成3D的Shifted Window,总之,输入是3D的,模型也是3D的,是一个Joint Modeling的过程。

虽然之前的这些方法在效果是都非常的好,但是他们都有一个小小的问题,就是计算代价实在是太大,因为他们的模型,全都是需要Full Fine Tune的,就是整个模型的所有的参数都要拿下来,在这个视频数据集上去做Fine Tune,但是视频数据集的本身就比较大,数据的IO一般都有Bottleneck,然后模型本身也比较大,所以这个训练的Cost非常昂贵。
一般左边这种时间和空间分开的方法还好(一台8卡机需要3、4、5天完成一个模型的训练,但是若Bottleneck特别大的话就需要一周或者十天左右的时间),稍微轻量些。右边这种Joint的Video Model,比如大部分的3D网络或者Video Swing模型,他们的训练时间就非常感人了。但是这些模型还好,是因为他们利用了预训练的图像模型。所以,说白了,他们更多的还是在做一个Fine Tune。如果像视频领域,有些模型是从头开始训练(Train From Sketch),那这些模型就需要更长的时间了,比如MaskFit、Video MAE,这些最近的自监督的视频学习方法,他们的训练代价都是以周为计算单位的。一般情况下,想要复现他们的模型都很困难,更不要说是提出什么新模型且比他们的效果更好了。

这篇论文的研究动机来自于Clip,对比学习,虽然Clip作为一个图像模型,也能做视频动作识别的任务,且效果好的出奇。

思考:已经训练好的图像模型是否需要继续微调?

1、clip已经证明了即使ZeroShot(模型不变,直接在各个数据集上进行推理),它的效果也很好。即一个训练很好的图片模型从中提取视觉特征是有泛化性、有效的。

2、继续微调会导致灾难性遗忘。如果使用少量数据在大模型上微调,可能会直接过拟合,或者大模型的很多特征丢失。

结论:预训练的图像模型不需要继续微调。

因此,论文的做法是,尝试将模型参数锁住,在上面加一些时序处理模块、目标函数等修改周边的方式(即PEFT)让图片模型能够做视频理解的任务,不需要重新训练视频模型,省时省力。

接下来介绍两个比较普遍的PEFT的方法

2. PEFT的方法

(1)adapter

最早来自于这篇论文:

论文地址:https://arxiv.org/abs/1902.00751
论文标题:Parameter-Efficient Transfer Learning for NLP
标题翻译:用于NLP的参数高效转移学习

这篇论文是做NLP的。

注:最近,很多视觉和多模态这边使用的技术都是从NLP那边过来的,因为大家都用transformer做backbone,因此NLP这边的方法大概率都能迁移到视觉这边,比如这些parameter
efficient fine tuning的技术、in-context learning、instructor
GPT里的RLHF这些基于reinforcement learning的方法,都可以快速被运用到视觉里面。

Adapter层的结构,如下图右边所示:下采样FC层+非线性激活层+上采样FC层,加上残差连接。

Adapter layer就像一个即插即用的模块,可以插到transformer layer里的任何一个地方。

这里PEFT的方法是指,如下图左边所示,在Transformer中加入了两个adapter,分别是在attention和NLP后面,进行微调时,原来的Transformer的参数都是锁住的,只有adapter层的参数在学习。
在这里插入图片描述
adapter层参数量和大模型相比非常少,例如在175B的GPT3中使用LoRa,需要训练的参数只要万分之一。因此训练成本大幅降低。

(2)prompt tuning

prompt tuning是指可以任意调整提示词,这样的调整对最后的性能会有很大的影响,能否得到想要的结果,取决于有没有选择一个好的提示词。例如下图所示,不同的提示词对准确率的影响很大。

论文地址:https://arxiv.org/abs/2109.01134
论文标题:Learning to Prompt for Vision-Language Models
标题翻译:用于视觉模型的提示学习

在这里插入图片描述
无论是在分类任务还是在图像生成的任务里,prompt tuning对最后的性能影响是非常非常巨大的,你最后能否得到你想要的结果,很大程度上取决于你有没有选择一个很好的Prompt。

Prompt分为两种:
Hard Prompt:人工设置的提示词,不能修改也无法学习。设置这些需要一定的先验知识,但我们并不会总有这样的先验知识。
Soft Prompt:将提示词设置为一个可学习的向量。如上图中的v1,v2,…,vm,这和DETR里的learnable query一样,都是一个可学习的向量。

在整个模型的训练过程中,整个模型是锁住不动的,只根据最后的loss去调整Prompt。最后,希望学到的Prompt能够泛化到各种各样的情形里去。

如下面的总览图所示 ,它跟clip模型之前在做推理的过程中画起来是一模一样的,上面是文本的分支,一个prompt进文本编码器得到很多文本特征,下面是图像进图像编码器得到一个图像特征。然后将图像特征和这些文本特征去做相似度,看哪个最高选哪个。这个模型和clip的区别是,一是图片分支是在训练的,二是文本端(text encoder)的输入不再是固定的,而是一个可以学习的learnable context,模型优化的是这个context部分,而不是模型本身。这样既可以节省很多计算量,也可以避免在下游任务时手动设置提示词。
在这里插入图片描述

上述是prompt tuning或者说是Soft Prompt的最简单、最基本的一个形式。

上述还是在文本端的prompt,实际上还是一个多模态的工作,它有一个图像编码器,一个文本编码器,prompt在文本这边,更多的还是像一个NLP的工作。

将可学习的Prompt方法用到纯视觉任务中,做法如下图所示。

论文地址:https://arxiv.org/abs/2203.12119
论文标题:Visual Prompt Tuning
标题翻译:视觉提示调整

在这里插入图片描述
图中蓝色部分是原来训练好的模型,红色是需要微调的prompt,加入Prompt tuning有两种方式:

1、VPT: Shallow,在输入端加入learnable的prompt。这和文本那边的处理方法相似。
具体来说,就是当你拥有一个图片的时候,先使用VIT将其打成patch,这些patch通过Embedding层的到输入的sequence。比如一开始是224*224的图片,达成patch之后,变成一个长度为196的token sequence,这个就是准备喂给transformer的输入,也就是图片中的E0。将E0看成文本端的class 那么或者是photo of class,我们很容易可以想到prompt应该加到它之前,这跟文本那边一模一样。此时,只有input的prompt是在学习的,剩下所有过程中的模型参数都是锁住的,最后的目标函数只用来优化这跟prompt,即图片中的P0.

2、VPT: Deep,在每一层的输入输出都加入learnable的prompt。

上述进行PEFT的共通性就是,当你有一个已经训练好的大模型的时候,是希望这个模型是锁住不动的,这样不光有利于训练,还有利于做部署,做下游任务的transfer,而且它的性能还不降,很多时候还不降反升。

huggingface上传了一个专门用来做PEFT的包:https://github.com/huggingface/peft

当你只有很少量的硬件或者当你的GPU内存不高的时候,如何去FineTune或者使用这些Billion scale的模型,可以试一下PEFT。

近期PEFT方法总结,从统一的观点进行归纳:
论文地址:https://arxiv.org/abs/2110.04366

回归正题

3. AIM模型设计

在这里插入图片描述

做视频理解的工作大致为以下三个方向:
(1)在SpatialBackbone上下文章(如上图c),
(2)在TemporalAnalysis上下文章(如上图d),
(3)怎么去学Joint Spatial Temporal Modeling(如上图e),
因此本文也是按照上述套路加的Adapter。

如上图所示,AIM模型就是在图b的ViT模型中加入图a的Adapter,共有图c、d、e三种方式:

1、Spatial Adaptation,只在S-MSA层后面加入Adapter,即不增加视频理解能力,只加一些学习的参数。
2、Temporal Adaptation,复用一个MSA层,在两个MSA层后面都加入Adapter,即让模型从Spatial和Temporal两个方向上进行学习,从而有时序建模的能力。
3、Joint Adaptation,在Temporal Adaptation的基础上,在MLP边上也加入Adapter,即让三个Adapter各司其职,使得优化问题更简单一些。

注:MSA是多头自注意力(MultiHead Self-Attention,S-MSA和T-MSA共享权重,但维度不同。

效果如下图所示,只用14M参数的AIM模型效果已经高过之前121M的模型。
在这里插入图片描述
总之,在视频工作中,使用PEFT(parameter efficient fine tuning)后,大部分的实验一台8卡机就能完成,短则半天,长则三四天。

除了PEFT(parameter efficient fine tuning),其实前几年比较火的,就是怎么把Attention做成Efficient Attention,比如Learn FormerPerformer等这些Attention的近似,最近还出了一个更好的,叫Flash Attention,更省内存,而且效果也非常的好。

第二个方向:Existing stuff(pretrained model)

有两点:
1、不要碰预训练模型。巧妙使用别人的预训练模型,从而达到去做FewShot,ZeroShot,或者最多Fine Tuning的实验。
2、新的研究方向。

通过这篇论文讲述这两点是如何运用的:

论文地址:https://arxiv.org/abs/2207.05027
论文标题:Unsupervised Semantic Segmentation with Self-supervised Object-centric Representations

从标题就可以看出这两点技巧:

1、这里的Self-supervised是指使用了预训练好的DINO、DeepUSPS、BASNet等网络
2、这里做的方向是Object-centric Learning,属于蓬勃发展的题目,玩家不多、数据集不大。
在这里插入图片描述

我们也知道,这些所谓的Unsupervised其实都不是真的Unsupervised,实际上是通过认为设计了一些任务或者label,让模型去学习。
这里也不例外,你如果想学习一个Segmentation的网络,肯定是需要某种程度上的Mask Information。这个Mask Information是借鉴了Saliency Detection的工作,如DeepUSPS,即可以直接给定一张图片,然后它可以给你生成这张图片里那些比较有显著性物体的Mask是长什么样,虽然有些糙,也不准确,但也算是有个起始点了,有一些Mask信息了。

上图展示了如何使用几个预训练好的模型,在无监督的情况下找到新的物体,步骤如下:

1、通过预训练模型DeepUSPS找到一些显著性物体的Mask。
例如,图片中的篮球可以得到一个圆形的Mask

2、根据Mask将图片中的对应物体抠出来,并调整大小为224*224。
例如,将图片中的篮球抠出来并放大

3、然后将步骤2得到的图片通过预训练模型DINO返回一个1024*1024的特征(global representation)。

4、将所有的特征进行聚类Clustering,这样就可以通过无监督学习得到这些物体的分类ID。
注:聚类只能将相同的物体分类到一起,但并不知道具体是什么物体。

5、将图片和对应的分类ID去训练一个语义分割网络(Semantic segmentation network)。(可以是PSP.NET、DeepLab V3)
注:这里相当于一个有监督的学习,标签来自于步骤4

6、一张图片可能有多个物体,所以加一个Self-training,多做几个轮回。

这样就可以从图片中找到物体了。

一些比较新的Topic

(1)Causality Learning (因果学习)
(2)Hinton之前提出的Feedforward Network,FFNet
(3)Language 那边的In-Context Learning
(4)Chain of Thought Prompting,就是Aston前几期讲过的AI鼓励师,COT

第三个方向:plug-and-play

做一些通用的、即插即用的模块,在一个设定的范围内,加入了这样的模块后,能够有一个统一的涨点,并且能给出合适的分析,就非常有说服力了。通过MixGen论文讲述如何加入模块:

论文地址:https://arxiv.org/abs/2206.08358
论文标题:MixGen: A New Multi-Modal Data Augmentation

文本的模型都很大,图片的模型相对来说小一些,但是自注意力的参数是可以共享的,所以尝试用文本大模型来蒸馏图片小模型

注:模型蒸馏:使用训练集训练出来一个完整复杂的teacher模型,然后设计一个小规模的student模型,再固定teacher模型的权重参数,然后使用训练集和teacher模型的输出同时对student模型进行训练,此时就需要设计一系列loss,让student模型在蒸馏学习的过程中逐渐向teacher模型的表现特性靠拢,使得student模型的预测精度逐渐逼近teacher模型。

为什么之前图片模型不做数据增强?

1、图片模型训练时已经用了很多图片了,不需要再做数据增强。
’2、或者做了数据增强,但是将其中的Color Jittering和Random Filp去掉了,因为这两个对图片的变化会导致图片和文本不匹配。

例如:图片有白色的狗和绿色的树,只对图片做Color Jittering会导致颜色变化,图片中不再是白色的狗,但是文本依然是白色的狗,这样文本和图片就不匹配了。

图片这边的做法,如果想保留所有的信息,尽量不去毁坏他原来的东西,一个比较天然的选择就是Mixup,Mixup就是把两张图片线性地插值到一起。

论文的做法:既然目标是尽可能保留更多信息,这里的做法很简单粗暴,就是直接将两个句子拼接在一起,这样就可以做到不丢失信息的情况下得到新的训练样本。

例如下图,将两个图片通过数据增强得到第三个图片,同时将两个图片的文本进行拼接得到第三个图片的文本。即在图片上做Mixed Up,在文本上做Concate。
在这里插入图片描述
这个是在数据处理的时候做的,即在Data Loader里完成的,无论你换什么方法,比如Vilt、ALBAF、BEIT等,或者换什么Codebase,比如Pytorch、TensorFlow等都无所谓,只要在Data Loader把这一步加进去就行,其他什么都不用改,真的算是即插即用,而且能获得普遍的提升。

审稿人的建设性提议:在下游任务只有少量数据时进行数据增强。

第四个方向: Dataset,evaluation and survey

这个方向是对计算资源要求最少的。
构建数据集、发表分析为主的文章或者综述论文,这里举了两篇论文为例。

以数据集为主的big detection,将三个数据集整合到一起:

论文地址:https://arxiv.org/abs/2203.13249
论文标题:BigDetection: A Large-scale Benchmark for Improved Object Detector Pre-training

上述论文是一个非常大的目标检测的数据集,目标检测是一个非常实用的任务。这篇论文是将三个已有的数据集(LVIS、Open Image、Object 365)合到一起,当然不是简单的合到一起,因为每个数据集的class也不是完全一样的,所以需要考虑怎么去merge这些class或者怎么去重新分布这些类别。而且根据你的这个任务需求,你到底是想做预训练还是下游任务,你到底是想target哪一个domain,这个也决定了你这个物体的类别到底该多细粒度,这些都是可以做的研究方向。总之,这个big detection最后处理完,就是一个有600类的目标检测数据集,里面有超过340万的训练图片,有3600万个bounding box annotation,算是当时最大的一个目标检测数据集了,而且在上面可以预训练各种各样的目标检测器。因为训练数据多,所以训练出来的目标检测器的泛化能力和few shot的能力都非常好。

这个数据集比较新,刷的人也比较少,可以在这个数据集上面做一些out of distribution的分析、robustness的分析、few shot zero shot的各种各样的分析或者测评,都是不错的研究方向。

视频动作检测的综述论文:

论文地址:https://arxiv.org/abs/2012.06567
论文标题:A Comprehensive Study of Deep Video Action Recognition

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

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

相关文章

Maven编译java及解决程序包org.apache.logging.log4j不存在问题

1、首先新建一个文件夹&#xff0c;比如hello Hello里新建pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi…

【网络编程】IO多路复用

IO多路复用是一种高效的I/O处理方式&#xff0c;它允许单个进程能够同时监视多个文件描述符&#xff08;sockets、文件等&#xff09;&#xff0c;并在其中任何一个文件描述符准备好进行I/O操作时进行处理。它的核心在于使用少量的线程或进程来管理多个I/O操作&#xff0c;以提…

BCSP-玄子Share-Java框基础_工厂模式/代理模式

三、设计模式 3.1 设计模式简介 软件设计中的三十六计是人们在长期的软件开发中的经验总结是对某些特定问题的经过实践检验的特定解决方法被广泛运用在 Java 框架技术中 3.1.1 设计模式的优点 设计模式是可复用的面向对象软件的基础可以更加简单方便地复用成功的设计和体系…

一维数组笔试题及其解析

Lei宝啊 &#xff1a;个人主页 愿所有美好不期而遇 前言&#xff1a; 数组名在寻常情况下表示首元素地址&#xff0c;但有两种情况例外&#xff1a; 1.sizeof(数组名)&#xff0c;这里的数组名表示整个数组&#xff0c;计算的是整个数组的大小 2.&数组名&#xff0c;这里的…

方差分析的核心概念“方差分解“

方差是统计学中用来衡量数据集合中数值分散或离散程度的一种统计量。它表示了数据点与数据集合均值之间的差异程度&#xff0c;即数据的分散程度。方差越大&#xff0c;表示数据点更分散&#xff0c;而方差越小&#xff0c;表示数据点更集中。 方差的计算公式如下&#xff1a;…

Vue+NodeJS上传图片到腾讯云Cos

一.前端Vue 1.选择图片 --HTML <input type"file" accept"image/*" change"handleFileChange"> <el-button size"large" click"changeAvatar">上传头像</el-button> //选择图片 function handleFileC…

【杂】环形时钟配色笔记

配色网站笔记 coolorsflatuicolorscolordrophttps://www.webdesignrankings.com/resources/lolcolors/ 配色2

Unity中的场景加载

1、同步场景 2、异步加载 public class TestScenesLoad : MonoBehaviour {// Start is called before the first frame updatevoid Start(){StartCoroutine(Load());}// Update is called once per framevoid Update(){}private IEnumerator Load() { //异步加载&#xff0c;常…

【腾讯云Cloud Studio实战训练营】戏说cloud studio

文章目录 前言产品概述项目体验登录空间模板模板项目体验 总结 前言 在奇幻世界中&#xff0c;存在着一片神秘的云海&#xff0c;被人们称为腾讯云云端开发环境 Cloud Studio。这片云海是一座巨大的浮岛&#xff0c;上面漂浮着一个集成式开发环境&#xff08;Integrated Devel…

【STM32RT-Thread零基础入门】8. 基于 CubeMX 移植 RT-Thread Nano

硬件&#xff1a;STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、cubemx配置二、board.c文件修改2.rtconfig.h文件修改 三、主程序1. main函数2. task函数 总结 前言 利用RT_Thread操作系统实现三种不同的…

常见的旅游类软文类型分享

假期将至&#xff0c;越来越多人选择出门旅游度过假期&#xff0c;那么各大旅游品牌应该怎么让自己的旅游软文在众多品牌中脱颖而出呢&#xff1f;接下来媒介盒子就给大家分享几个最能吸引受众的旅游类型软文。 一、攻略类软文 和普通的攻略不一样&#xff0c;普通的攻略以用户…

Python函数的概念以及定义方式

一. 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 二. 什么是函数&#xff1f; 假设你现在是一个工人&#xff0c;如果你实现就准备好了工具&#xff0c;等你接收到任务的时候&#xff0c; 直接带上工…

LeetCode141:环形链表

给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;…

数学建模:回归分析

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;回归分析 文章目录 数学建模&#xff1a;回归分析回归分析多元线性回归案例 多项式回归一元多项式回归多元二项式回归 非线性回归逐步回归 回归分析 多元线性回归 案例 首先进行回归分…

无涯教程-Flutter - Dart简介

Dart是一种开源通用编程语言&#xff0c;它最初是由Google开发的&#xff0c; Dart是一种具有C样式语法的面向对象的语言&#xff0c;它支持诸如接口&#xff0c;类之类的编程概念&#xff0c;与其他编程语言不同&#xff0c;Dart不支持数组&#xff0c; Dart集合可用于复制数据…

【Github】git本地仓库建立与远程连接

文章目录 前言一、git简介二、git下载2.1下载地址 三、git安装3.1安装3.2 配置3.3 config设置&#xff08;增删改查&#xff09; 四.github与git连接——本地Git仓库4.1 建本地的版本库4.2 源代码放入本地仓库4.3提交仓库 五、github与git的连接——远程连接5.1 创建SSH Key5.2…

网络地址转换技术NAT(第九课)

一 什么是NAT? NAT是网络地址转换的缩写,是一种在计算机网络中使用的技术,可以将私有地址转换为公共地址,从而实现本地网络与公共网络的互联。NAT工作在网络层,可以隐藏内部网络中的IP地址和端口号,从而增强网络的安全性和灵活性。在家庭网络、企业网络、公共WIFI热点等…

虹科方案|HK-Edgility利用边缘计算和VNF降本增效

一、边缘计算和 VNF 在当今瞬息万变的数字环境中&#xff0c;边缘虚拟化网络功能&#xff08;VNF&#xff09;是一个既能够优化网络基础设施&#xff0c;又能控制成本的创新型解决方案。它使客户能够将多个基于软件的 VNF 整合到一个专用计算设备上。更值得高兴的是&#xff0c…

模型压缩-对模型结构进行优化

模型压缩-对模型结构进行优化 概述 模型压缩通常都是对推断过程而言&#xff0c;训练过程的计算代价通常不考虑&#xff0c;因为GPU可以快速完成任意复杂度模型的训练对于推断过程来说&#xff0c;模型应用才是对于速度敏感的场景多数情况下 希望使用尽可能少的能耗完成京可能…

SpringBoot——整合Mongodb

简单介绍 Mongdb是一个开源&#xff0c;高性能&#xff0c;无模式的文档型数据库&#xff0c;NoSQL数据库产品中的一种&#xff0c;是最像关系型数据库的非关系型数据库。 使用场景 用户数据 存储位置&#xff1a;数据库特征&#xff1a;永久性存储&#xff0c;修改频率极低游…