【自然语言处理】微调 Fine-Tuning 各种经典方法的概念汇总

【自然语言处理】微调 Fine-Tuning 各种经典方法的概念汇总

  • 前言请看此
  • 微调 Fine-Tuning
    • SFT 监督微调(Supervised Fine-Tuning)
    • 概念:监督学习,无监督学习,自监督学习,半监督学习,强化学习的区别
    • 概念:下游任务
    • 概念:再利用(Repurposing),全参微调(Full Fine-Tuning)和部分参数微调(Partial Fine-tuning)
    • 线性探测(Linear Probing)微调策略
    • 其他一些简单的微调策略
    • 概念:提示(Prompt)和指令(Instruction)
    • 提示微调(Prompt Tuning)微调技术
      • 如何构建好的 prompt 或 instruct
    • 指令微调(Instruction Tuning)微调技术
    • LoRA 低秩自适应(Low-Rank Adaptation)训练技术
    • 适配器学习(Adapter Learning)微调技术
    • 前缀微调(Prefix-Tuning)微调技术
    • P微调(P-Tuning)微调技术
    • PEFT 参数高效微调(Parameter-Efficient Fine-Tuning)开源参数高效微调库
    • RL 强化学习(Reinforcement Learning)
    • RLHF 基于人类反馈的强化学习(Reinforcement Learning from Human Feedback)

前言请看此

(1)一些概念源自LLM(Chatgpt)和网络(百度/知乎等),笔者进行了初步检查。
(2)由于其中的各种知识比较琐碎,为了形成较为结构化的知识体系,且使用最简单的、几乎无公式的介绍,故作此博客。
(3)着重为自然语言处理领域NLP的,CV领域的不是很详细讲述了
上一篇博客:【机器学习与自然语言处理】预训练 Pre-Training 各种经典方法的概念汇总
(4)比较简单或者过于的概念就不介绍了,默认大家都学会了。不然要写的太多了。
比如损失,损失函数,神经网络几个概念,不认识的话单独先去学一下。

微调 Fine-Tuning

  • 微调 是指在已经经过预训练的模型基础上,通过使用任务特定的数据集进行额外的训练,以使模型适应特定的任务或领域。通常情况下,微调是在一个相对较小的数据集上进行的,该数据集与模型最初预训练的数据集可能有所不同。
  • 迁移学习 是一种机器学习范畴,旨在将从一个任务(源任务)中学到的知识应用到另一个任务(目标任务)上。
  • 我们发现,微调的概念和机器学习中的迁移学习概念比较类似,分析一下我们为什么要微调,或者迁移学习。
    即【微调的优势
    (1)站在巨人的肩膀上:前人花很大精力训练出来的模型在大概率上会比你自己从零开始搭的模型要强悍,没有必要重复造轮子
    (2)训练成本可以很低,任务特定的数据集可以几千或者几万条,这远远低于预训练的数据集大小。
    (3)适用于小数据集:对于数据集本身很小的情况,从头开始训练具有几千万参数的大型神经网络是不现实的,因为越大的模型对数据量的要求越大,过拟合无法避免。这时候如果还想用上大型神经网络的超强特征提取能力,只能靠迁移学习。(减少过拟合现象

SFT 监督微调(Supervised Fine-Tuning)

  • 监督微调 是一种利用带有标签的数据对预训练模型进行进一步训练的方法。
    其实就是监督学习微调阶段的应用

概念:监督学习,无监督学习,自监督学习,半监督学习,强化学习的区别

  • 强化学习涉及一个智能体(agent)与环境的交互。智能体通过在环境中采取动作来达到某个目标,通过环境的反馈(奖励或惩罚)来调整其行为。
  • 区分其他几个学习方式,可以按照训练阶段 和 标签进行区分分类
    • 无监督学习:预训练阶段,大规模无标签语料
    • 监督学习:微调阶段,小规模有标签语料
    • 自监督学习:预训练或微调阶段都可,语料本身没有标签,但可以通过算法/神经网络/模型等,去计算出标签
    • 半监督学习:在预训练阶段使用大规模无标签语料,在微调阶段使用小规模有标签语料。是横跨两个阶段的

概念:下游任务

  • 下游任务是指在迁移学习或微调中,模型在预训练之后,通过额外的训练适应于特定任务或领域的任务。下游任务的选择取决于应用的需求和目标。
  • 我们微调肯定是首先得确定下游任务,然后按照具体的任务,使用某些模型、算法与数据集进行微调模型。
  • 下面列了一些比较常见的下游任务。
    可以看到,基本上分为判别式任务生成式任务
    (1)文本分类:
    对文本进行分类,如情感分析、主题分类、垃圾邮件过滤等。
    (2)命名实体识别 (NER):
    从文本中标注和提取特定实体的信息,如人名、地名、组织名等。
    (3)文本生成:
    生成自然语言文本,包括文章摘要、对话生成、文章创作等。
    (4)目标检测:
    在图像中检测和标注出现的对象,并用边界框表示。
    (5)语义分割:
    将图像中的每个像素分配给特定的语义类别,以实现像素级的语义分割。
    (6)图像分类:
    将图像分为不同的类别,通常通过预测图像中出现的主要对象或场景。
    (7)机器翻译:
    将源语言的文本翻译成目标语言的文本。
    (8)问答系统:
    回答用户提出的自然语言问题,通常在给定的上下文中查找答案。
    (9)语音识别:
    将音频信号转换为文本,通常用于语音助手和语音命令的应用。
    (10)图像生成:
    生成新的图像,如图像合成、风格迁移等。
    (11)推荐系统
    为用户推荐特定的商品、内容或服务,基于用户行为和兴趣。

概念:再利用(Repurposing),全参微调(Full Fine-Tuning)和部分参数微调(Partial Fine-tuning)

  • 在迁移学习中,按照微调模型的全部参数,还是部分参数,我们分为如下两类。
  • 全参微调(Full Fine-Tuning)
    指在预训练模型的基础上,对整个模型的所有参数进行微调。在这个过程中,模型权重会根据目标任务的数据进行全面调整,而不仅仅是最后几层或最后一层的权重。
    这意味着预训练模型的所有层都能够适应新任务,但可能需要较大的目标任务数据集来防止过拟合
  • 部分参数微调(Partial Fine-tuning)
    只对模型的部分参数进行微调,通常是最后几层或最后一层的参数。这种方式在目标任务数据较少的情况下更常见,以防止过拟合并提高模型的泛化能力。
  • 重新利用(Repurposing)或者叫再利用
    指的是将预训练模型应用于一个新的任务,而这个过程可能包括对模型的一部分参数进行微调。
    再利用可以分为全参微调和部分参数微调。

线性探测(Linear Probing)微调策略

  • 在自然语言处理(NLP)领域中,“linear probing” 是一种用于微调预训练模型的方法。该方法的目标是通过 添加一个简单的线性层(线性分类器) 来微调模型,以适应特定的任务。这个线性层是一个全连接层,它的输出维度等于目标任务的类别数(对于分类任务)或任务特定的输出维度。
  • **它冻结之前的所有参数,只训练该线性分类器层的参数。**所以是部分参数微调。
    注:区别与hash碰撞检测的线性探测法。

其他一些简单的微调策略

  • Prompt Tuning
    • Partial-k
      只微调模型的最后k层,冻结其他层
    • MLP-k
      增加一个k层的MLP(多层感知机)作为分类器
    • Side-Tuning
      训练一个 side 网络,添加和调整辅助任务(side tasks)来提高模型性能。
      在这里插入图片描述
    • Bias
      只微调网络的 bias 参数

概念:提示(Prompt)和指令(Instruction)

  • ChatGPT/InstructGPT详解
    实话实说,这是两个非常令人搞混的概念,弄清他们,有助于弄明白后面的提示微调和指令微调技术。
  • 提示(Prompt)和指令(Instruction)都是用户对LLM的输入的详细上下文的描述。
    区别在于
    • 提示:类似于MLM技术,构造好提示后,把用户希望获得的内容变成MLM中[MASK]的token或留白,让模型去回答补全。类似于完型填空
      例子:给女朋友买了这个项链,她很喜欢,这个项链太____了。
    • 指令:即通过指令或命令, 告诉模型需要做什么,我需要得到什么。
      例子:请告诉我一个英语双关冷笑话。
  • 注意:有时候人们提到的 prompt 的概念包含了 instruction 的概念
    但最好还是分清这两个概念,毕竟不大一样。
    在这里插入图片描述

提示微调(Prompt Tuning)微调技术

  • 实际案例说明AI时代大语言模型三种训练技术及其区别——Prompt-Tuning、Instruction-Tuning和Chain-of-Thought
  • 由于BERT的预训练使用了MLM,所以这类模型对于提示微调训练来说比较合适
  • 我们发现,比如BERT它本来就是做完形填空比较合适的,预训练中也没有做比如情感分析之类的任务。
    但是当我们构建出 今天天气真好。这句句子的情感是 __ 的。 的 prompt 之后,BERT 根据完形填空的方法,自然倾向于填入 积极的/正面的就可以迁移到情感分析的下游任务去了!
  • 比较重要的是如何构建 prompt,以及如何构建好的prompt
    但我们发现跟如何构建好的instruction方法是类似的,所以统一写在这里了。

如何构建好的 prompt 或 instruct

(1)清晰和简洁
Prompt 应该明确和简洁,避免模糊或复杂的语言。清晰的 prompt 有助于模型正确理解任务。
糟糕的 prompt:请解释一下这个问题的背景和相关内容,以及它的历史。
好的 prompt:简要解释这个问题的背景和历史。
(2)任务导向
prompt 应该明确指导模型执行特定的任务,避免过于开放式的描述。任务导向的 prompt 有助于模型集中精力解决特定问题。
糟糕的 prompt:谈谈你对这个主题的看法。
好的 prompt:根据给定的数据,预测下个月的销售额。
(3)关键词和实体
使用关键词和实体有助于引导模型关注任务的核心内容。这可以通过在 prompt 中强调关键词或提到实体来实现。
糟糕的 prompt:介绍一下这个产品。
好的 prompt:描述这个产品的特性和优势,特别关注 [产品名称] 的创新点。
(4)多样性和变化性
为了提高模型的鲁棒性,可以设计多样性的 prompt,涵盖任务的不同方面,以及各种可能的输入方式。
不同形式的好 prompts:
给定一段文本,总结其中的关键观点。
在给定的图像上标记出所有出现的物体。
用简短的话语回答:[问题]。
(5)验证和调整
在应用 prompt 前,可以通过试验和验证来不断调整。观察模型对不同 prompt 的表现,以确保 prompt 对任务的影响是积极的。
尝试不同的 prompt 表达方式,比如在问句中加入否定词、使用不同的关键词等,观察模型的响应。

指令微调(Instruction Tuning)微调技术

  • 对于指令微调,就感觉是提示微调的一个进一步的版本。
    从简单的完形填空上升到了基于单个或多个指令,让模型进行复杂操作。
    即,指令微调可以应对多个下游任务,而不是单单的一个简单任务。
  • 对于训练集,我们可以这样构建:
  • 准备一组指令集,比如 “该文本的情感是正面的还是负面的?”
  • 准备带标签数据集,比如 情感分类任务的标签可以是“正面”或“负面”
  • 把指令集和数据集的提问进行拼合,比如 “该文本的情感是正面的还是负面的?这家餐厅的食物很好吃。”
  • 若回答效果比较差,则对指令进行微调。之后进行模型训练即可。

LoRA 低秩自适应(Low-Rank Adaptation)训练技术

  • 大模型微调(finetune)方法总结-LoRA,Adapter,Prefix-tuning,P-tuning,Prompt-tuning
  • LoRA认为,随着LLM参数不断增多,全参微调的消耗时间和资源较多,而其他一些微调效果不佳
    LoRA还认为,LLM过度参数化了,可以通过其内在的低纬度参数进行任务适配
    LoRA允许我们通过优化适应过程中密集层变化的秩分解矩阵来间接训练神经网络中的一些密集层,同时保持预先训练的权重不变。
  • 在原始预训练语言模型PLM(Pertrained Language Model)旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的内在秩
  • 训练的时候固定PLM的参数,只训练降维矩阵A与升维矩阵B。
  • 模型的输入输出维度不变,输出时将BA与PLM的参数叠加。
  • 用随机高斯分布初始化A,用0矩阵初始化B,保证训练的开始此旁路矩阵依然是0矩阵
  • 因此,LoRA 的训练成本很低,且比较通用,也有一定的效果(但是想要很好的效果还得全参微调或者其他方法)
    在这里插入图片描述

适配器学习(Adapter Learning)微调技术

  • Parameter-efficient transfer learning系列之Adapter
    更详细介绍了 adapter 与 adapter fusion。
  • Adapter引入NLP领域,作为全模型微调的一种替代方案。
    在预训练模型每一层(或某些层)中添加Adapter模块微调时冻结预训练模型主体,由Adapter模块学习特定下游任务的知识
  • 每个Adapter模块由两个前馈子层组成,第一个前馈子层将Transformer块的输出作为输入,将原始输入维度d投影到m,通过控制m的大小来限制Adapter模块的参数量,通常情况下m<<d。在输出阶段,通过第二个前馈子层还原输入维度,将m重新投影到d,作为Adapter模块的输出。通过添加Adapter模块来产生一个易于扩展的下游模型,每当出现新的下游任务,通过添加Adapter模块来避免全模型微调与灾难性遗忘的问题。Adapter方法不需要微调预训练模型的全部参数,通过引入少量针对特定任务的参数,来存储有关该任务的知识,降低对模型微调的算力要求。
    在这里插入图片描述

前缀微调(Prefix-Tuning)微调技术

  • 深入理解Prefix Tuning
    LLM微调方法:Prompt Tuning And Prefix Tuning
  • 相比与离散的 prompt,需要人工寻找比较合适的提示
    为何不提出连续的 prompt
  • 前缀微调在输入token之前构造一段任务相关的virtual tokens作为Prefix
    然后,在训练的时候只更新Prefix部分的参数,而 PLM 中的其他部分参数固定。
    不同任务就对应不同的 Prefix
  • 这样的话,需要在 transformer 中的每层稍作修改,不同任务就可以获得不同的 Prefix 头了。
    在这里插入图片描述
    在这里插入图片描述

P微调(P-Tuning)微调技术

  • 大模型参数高效微调技术实战(三)-P-Tuning
    该方法将 Prompt 转换为可以学习的 Embedding 层,并用MLP+LSTM的方式来对Prompt Embedding进行一层处理。
  • 相比Prefix Tuning,P-Tuning加入的可微的virtual token,但仅限于输入层,没有在每一层都加;另外,virtual token的位置也不一定是前缀,插入的位置是可选的。这里的出发点实际是把传统人工设计模版中的真实token替换成可微的virtual token。
    在这里插入图片描述

PEFT 参数高效微调(Parameter-Efficient Fine-Tuning)开源参数高效微调库

  • HF-PEFT
    详细操作看HF社区吧。
  • PEFT 是 Huggingface 开源的一个参数高效微调库,它提供了最新的参数高效微调技术,并且可以与 Transformers 和 Accelerate 进行无缝集成。
  • PEFT 目前支持
    LoRA
    Prefix Tuning & P-Tuning v2
    P-Tuning
    Prompt Tuning
    AdaLoRA
    IA3

RL 强化学习(Reinforcement Learning)

  • 一般强化学习在博弈、游戏、棋类中,比较常见
    但是在自然语言处理领域用到语言模型微调中, 使用则不大相同了。
  • 在模型微调阶段,一般使用SFT监督微调
    但现在有一些人提出了基于强化学习的一些微调方式,且有一些浪潮迹象。
    目前最火的就是RLHF

RLHF 基于人类反馈的强化学习(Reinforcement Learning from Human Feedback)

  • 一文读懂ChatGPT中的强化学习
    图解大模型RLHF系列之:人人都能看懂的PPO原理与源码解读
    这一篇比较推荐阅读。
  • RLHF是为了引入人类反馈,使用人类偏好数据进行训练,让模型产生符合人类喜好的回答。
  • 经典RLHF一般就如下图所示三个阶段
    • 第一步,收集带标签数据,训练一个SFT模型,这里也被叫做策略(Policy)
    • 第二步,收集偏好数据,训练一个RM奖励模型(Reward Model)
    • 第三步,用一个强化学习的算法来微调该SFT模型,比如经典的PPO算法。
      在这里插入图片描述
  • RL中,有经典概念 智能体、环境、状态、动作
    在NLP语境下,如何对应呢
    智能体:指语言模型
    环境:指上下文
    状态:指语言模型已经输出的前文
    动作:指接下来选择输出的内容

    总收益:语言模型输出完后,人们对该文本的偏好程度
    即时收益:语言模型输出下一个token的暂时收益。
  • 在RLHF-PPO中,一共有四个主要模型
    Actor Model:演员模型,这就是我们想要训练的目标语言模型
    Critic Model:评论家模型,它的作用是预估总收益
    Reward Model:奖励模型,它的作用是计算即时收益
    Reference Model:参考模型,它的作用是在RLHF阶段给语言模型增加一些“约束”,防止语言模型训歪(朝不受控制的方向更新,效果可能越来越差)
  • 其中,Actor/Critic Model(在RLHF阶段是需要训练的)
    在RLHF中,我们不仅要训练模型生成符合人类喜好的内容的能力(Actor),也要提升模型对人类喜好量化判断的能力(Critic)
  • Reward/Reference Model 是参数冻结的。
    再次说明下,其中的各种复杂的损失函数可以在上述提到的博文中阅读。
  • 现在PPO已经出了很多新的替代方案了(由于RLHF-PPO运用起来比较复杂),比如DPO等。更新的内容需要阅读相关论文。

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

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

相关文章

Jetpack之RadionBtton、Switch、Checkbox组件介绍

Jetpack Compose系列(9) - RadionBtton、Switch、Checkbox组件介绍 RadioButton 跟View体系一样&#xff0c;Compose也有RadioButton单选按钮组件&#xff0c;遵从Material Design风格。 其构造函数如下&#xff1a; Composable fun RadioButton(selected: Boolean,onClick…

uniapp+uView 【详解】录音,自制音频播放器

效果预览 代码实现 <template><view class"btnListBox"><view class"audioBox" v-if"audioLength"><u-row><u-col span"2"><u--text aligncenter :text"currentTime"></u--text>…

YOLOv8改进 | 检测头篇 | 独创RFAHead检测头超分辨率重构检测头(适用Pose、分割、目标检测)

一、本文介绍 本文给大家带来的改进机制是RFAHead,该检测头为我独家全网首发,本文主要利用将空间注意力机制与卷积操作相结合的卷积RFAConv来优化检测头,其核心在于优化卷积核的工作方式,特别是在处理感受野内的空间特征时。RFAConv主要的优点就是增加模型的特征提取能力,…

arcgis各种版本下载

arcgic 下载&#xff01;&#xff01;&#xff01; ArcGIS是一款地理信息系统软件&#xff0c;由美国Esri公司开发。它提供了一系列完整的GIS功能&#xff0c;包括地图制作、空间数据管理、空间分析、空间信息整合、发布与共享等。ArcGIS是一个可扩展的GIS平台&#xff0c;提供…

恒创科技:服务器内存不足影响大吗?

​  服务器在为网站、应用程序和在线服务提供支持方面发挥着关键作用。这些服务器需要提供最佳性能&#xff0c;以确保正常无缝的用户体验&#xff0c;而RAM是显著影响服务器性能的关键配置之一。 RAM 是一种随机存取存储器&#xff0c;计算机和服务器使用它来临时存储正在使…

【AG32VF407】国产MCU+FPGA,更新官方固件解决8Mhz内部晶振不准,Verilog实测7.9Mhz!

视频讲解 [AG32VF407]国产MCUFPGA&#xff0c;更新官方固件解决8Mhz内部晶振不准&#xff0c;Verilog实测7.9Mhz&#xff01; 实验过程 之前出现的双路pll不同频率的测试中&#xff0c;提出了内部晶振输出不准的问题&#xff0c;和官方沟通后得到极大改善&#xff0c;方法如下…

探索Web API SpeechSynthesis:给你的网页增添声音

Web API SpeechSynthesis是一项强大的浏览器功能&#xff0c;它允许开发者将文本转换为语音&#xff0c;并通过浏览器播放出来。本文将深入探讨SpeechSynthesis的控制接口&#xff0c;包括其功能、用法和一个完整的JavaScript示例。 参考资料&#xff1a;SpeechSynthesis - Web…

Python程序设计 函数

简单函数 函数&#xff1a;就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。 函数的使用包含两个步骤&#xff1a; 定义函数 —— 封装 独立的功能 调用函数 —— 享受 封装 的成果 函数的作用&#xff0c;在开发程序时&#xff0c;使用…

2024年第九届信号与图像处理国际会议(ICSIP 2024)

2024第九届信号与图像处理国际会议&#xff08;ICSIP 2024&#xff09;将于2024年7月12-14日在中国南京召开。ICSIP每年召开一次&#xff0c;在过去的七年中吸引了1200多名与会者&#xff0c;是展示信号和图像处理领域最新进展的领先国际会议之一。本次将汇集来自亚太国家、北美…

LeetCode:13.罗马数字转整数

13. 罗马数字转整数 - 力扣&#xff08;LeetCode&#xff09; 目录 思路&#xff1a; 官解代码&#xff1a; 作者辣眼代码: 每日表情包&#xff1a; 思路&#xff1a; 思路已经很明了了&#xff0c;题目已经给出一般规则和特殊规则&#xff08;而且题目确保给定的是正确的…

活动图(Activity Diagram)

一、定义 动态图。显示人或对象的活动&#xff0c;其方式类似于流程图 二、构成 包含有&#xff1a; 初始节点(开始)最后一个节点(结束)活动转换判定(决策),同步条分岔或汇合泳道 1、 初始节点(开始) 实心圆表示初始节点 2、最后一个节点(结束) 圆圈内加一个实心圆来表…

C语言之字符逆序(牛客网)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 字符逆序__牛客网 题目&#xff1a; 思路&#xff1a;既然有空格就不能用scanf函数来接收字符了。因为scanf函数遇到空格会停止读取。我们可以用get…

UE5 获得频谱让nigara随音乐律动

参考视频:UE - Niagara实现可视化音乐动态粒子效果 案例演示及教程_哔哩哔哩_bilibili 先创建一个Niagara 在Properties的Sim Target改为GPU,Calculate Bounds Mode改为Fixed模式 生成的数量改为1000 这里的BoxSize可以选择修改,具体作用是粒子初始生成的范围 Drag,阻力,用来限…

Java上(2024尚硅谷)

day01.[环境变量,HelloWorld] 1.会常用的dos命令 2.会安装java所需要的环境(jdk) 3.会配置java的环境变量 4.知道java开发三步骤 5.会java的入门程序(HelloWorld) 6.会三种注释方式 7.知道Java入门程序所需要注意的地方 8.知道println和print的区别第一章 Java概述 1.1 JavaS…

【自定义序列化器】⭐️通过继承JsonSerializer和实现WebMvcConfigurer类完成自定义序列化

目录 前言 解决方案 具体实现 一、自定义序列化器 二、两种方式指定作用域 1、注解 JsonSerialize() 2、实现自定义全局配置 WebMvcConfigurer 三、拓展 WebMvcConfigurer接口 章末 前言 小伙伴们大家好&#xff0c;上次做了自定义对象属性拷贝&#x…

Dijkstra算法(求最短路)

简介&#xff1a; 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959年提出的&#xff0c;因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法&#xff0c;解决的是有权图中最短路径问题。 特点&#xff1a; 迪杰斯特拉算法采用的是一种贪心策略&a…

【Java基础】关于Java基础的一些有趣的常识!

前言 今天看到了一篇文章&#xff0c;是关于茶余饭后的Java常识的一些有趣解答&#xff0c;我觉得写的很有趣很易懂&#xff0c;所以截取了其中我觉得比较有趣的问题分享给大家。原文&#xff1a;饭后茶余的java常识 - 知乎 (zhihu.com) 1. Java语言的特点有哪些&#xff1f; …

【并发编程】手写线程池阻塞队列

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳重求进&#xff0c;晒太阳 示意图 步骤1&#xff1a;自定义任务队列 变量定义 用Deque双端队列来承接任务用ReentrantLock 来做锁并声明两个条件变量 Condition fullWai…

网站不收录,与服务器不备案有关吗

随着互联网的快速发展&#xff0c;网站已经成为企业、个人和机构宣传和展示自己的重要平台。然而&#xff0c;许多网站在建设完成后却面临着不收录的问题&#xff0c;这给网站的管理者和拥有者带来了很大的困扰。其中&#xff0c;一些人认为&#xff0c;网站不收录的原因与服务…

什么是Instagram Reels?用好Reels 让你的流量暴涨!

Instagram Reels是Instagram在2020年全新推出的短视频功能&#xff0c;旨在与TikTok展开竞争。作为跨境卖家的你&#xff0c;利用 Reels 这一神器&#xff0c;将为你带去更多的流量。那该如何利用好这一神器呢&#xff1f;本篇文章&#xff0c;大白将带大家深入了解 Reels 并用…