模型蒸馏distill /模型剪枝 论文汇总

文章目录

  • 引言
  • 1. 蒸馏
    • 1)白盒蒸馏
      • DistilBERT
      • Patient Knowledge Distillation
      • TinyBERT 2020
      • MiniLLM
    • 2)黑盒蒸馏
      • Stanford alpaca
      • Vicuna
      • Wizardlm
      • Instruction tuning with gpt-4
      • Minigpt-4
  • 2. 剪枝
      • 16个注意力头比一个好吗
        • Movement pruning
    • 1)结构化剪枝
      • Transformer压缩
      • Ziplm
      • LLM-Pruner
      • GUM
      • Deja vu
    • 2)半结构化稀疏
      • FastBERT
      • SparseGPT
      • 《 A Simple and Effective Pruning Approach for Large Language Models. 》
      • Mini-GPTs
      • Compress, Then Prompt

引言

本文中所有文章来源于综述综述文章
《Towards Efficient Generative Large Language Model Serving: A Survey from Algorithms to Systems》

文章内容丰富,本文主要针对 Knowledge DistillationNetwork Pruning相关部分参考文献进行汇总。
在这里插入图片描述

  • 知识蒸馏:这类方法以大型的教师模型为监督,训练一个小型的学生模型。

    • 白盒蒸馏

    大多数之前的方法都在探索白盒蒸馏,需要访问整个教师模型的参数。

    • 黑盒蒸馏

    由于基于API的LLM服务(如ChatGPT)的出现,一些黑盒蒸馏模型吸引了很多关注,这些模型通常具有更少的模型参数,与原始LLMs(如GPT-4)相比,在各种下游任务上表现出了相当的性能。

  • 网络剪枝:过去几年中,网络剪枝方法已被广泛研究,但并非所有方法都可以直接应用于LLMs,需要考虑重新训练可能带来的过高计算成本,以及评估剪枝是否可以在底层系统实现上取得效率提升。

    大致上可以分为

    • 结构化剪枝

    • 半结构化稀疏

1. 蒸馏

1)白盒蒸馏

DistilBERT

《DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter.》2019

随着迁移学习在NLP领域越来越普及,在有限的GPU算力下用大型的model进行training or inference仍是一项具有挑战性的工作。

在本文的工作中,我们提出了一种更加通用的更轻型的pre-trained language model,DistilBERT。对比其他的大型Model,DistilBERT在下游的fine-tune 任务中,仍具有很好的效果。

前人的大多数研究都是基于蒸馏技术,构建某个具体领域的任务。而在本文的工作中在Pretrained 阶段利用了知识蒸馏技术,在保留97%的模型语言理解能力的条件下,减轻了40%模型的参数量,并且模型的推理速度提升了60%。
在这里插入图片描述

预训练时剪枝,不易复现

知乎笔记

Patient Knowledge Distillation

《Patient Knowledge Distillation for BERT Model Compression》

2019

文章介绍了一种bert模型压缩蒸馏的方法, 在vanilla 知识蒸馏方法的基础上,通过学习teacher网络中间层信息提高student网络表现。

摘要

预训练语言模型,如BERT,已被证明在自然语言处理(NLP)任务中非常有效。然而,在训练中对计算资源的需求很高,因此阻碍了它们在实践中的应用。

为了缓解大规模模型训练中的这种资源需求,本文提出一种Patient知识蒸馏, 将原始(老师)模型变成同样有效的轻量级浅网络(学生)。

以往的知识蒸馏方法:只使用教师网络的最后一层的输出。

不同于之前的方法,本文中学生模型耐心地从教师模型的多个中间层中学习,以实现增量知识提取,遵循以下两种策略:

(i) PKD-Last: 从最后k个中学习层;

(ii) PKD-Skip: 从每k层中学习。

这两个patient蒸馏方案能够利用教师网络隐藏层中的丰富信息,并鼓励学生模型耐心学习从和模仿老师通过一个多层次的蒸馏过程。

实验证明, 这转化为在多个方面的改进结果在不牺牲模型精度的情况下,显著提高训练效率的NLP任务。

知乎笔记

TinyBERT 2020

《TinyBERT:Distilling BERT for Natural Language Understanding》

论文

源码

这项工作的主要贡献如下:

1)我们提出了一种新的Transformer蒸馏方法,以鼓励将以BERT teacher编码的语言知识适当地转移给TinyBERT;

2)我们提出了一个新颖的两阶段学习框架,该框架在预训练和微调阶段 均执行提议的transformer蒸馏,从而确保TinyBERT可以吸收teacherBERT的一般领域知识和特定任务知识。

第一阶段:使用原始的BERT模型做完teacher,在通用语料上进行蒸馏得到 通用的 TinyBert

第二阶段: 在特定领域 增强的数据集上 使用finetune 后的BERT模型做为teacher, 继续进行蒸馏训练,得到最终的Tiny BERT
在这里插入图片描述

3)我们在实验中证明,我们的TinyBERT4可以在GLUE任务上实现teacher BERTBASE的性能超过96.8%,而参数(〜13.3%)和推理时间(〜10.6%)却少得多,并且明显优于其他有4层BERT蒸馏的最先进的基线.

4)我们还展示了6层TinyBERT可以与GLUE上的BERTBASE teacher媲美。

知乎笔记

MiniLLM

github: MiniLLM

《Minilm: Deep self-attention distillation for task-agnostic compression of pre-trained transformers》2020

《Minilm: 预训练语言模型通用压缩方法》

https://aka.ms/MiniLLM

预训练模型太大。模型太大对于微调和部署阶段的挑战主要有2点:推理时延大和占用内存空间大。

文章的模型压缩方法做到了通用性。现有方法很多是面向特定任务,而文章所提出的方法可以直接对预训练模型蒸馏,蒸馏后的模型可以直接在下游任务上微调。

提出了一种将基于Transformer预训练模型压缩成较小预训练模型的通用方法:MiniLM。这是一种深度自注意力知识蒸馏(Deep Self-Attention Distillation)方法,核心点:

(1)蒸馏teacher模型最后一层Transformer的自注意力模块

(2)在自注意模块中引入值之间的点积

(3)引入助教帮助模型蒸馏

在各种参数尺寸的student模型中,MiniLM的单语模型优于各种最先进的baselines。

在 SQuAD 2.0和GLUE的多个任务上以一半的参数和计算量,并保持99% accuracy。此外,将深度自注意力蒸馏方法应用到多语种预训练模型上也取得不错的结果。

实验
在这里插入图片描述

从实验结果可以看出,在多数任务上MiniLM都优于DistillBERT和TinyBERT。特别是在SQuAD2.0数据集和CoLA数据集上,MiniLM分别比最先进的模型高出3.0个F1值和5.0个accuracy。不同模型大小的推理时间对比可以参考Table 4。

亮点:直接对预训练模型蒸馏

知乎笔记

《Knowledge Distillation of Large Language Models》2023

知识蒸馏(KD)是一种很有前途的技术,可以减少大型语言模型(LLM)的高计算需求。

然而,以前的KD方法主要应用于白盒分类模型训练小模型来模仿像ChatGPT这样的黑盒模型API

本文主要研究如何有效地从白盒生成LLM中提取知识

论文提出了MINILLM,它从生成的较大语言模型中提取较小的语言模型。

首先将标准KD方法中的前向Kullback-Leibler散度(KLD)目标替换为更适合生成语言模型上的KD的反向KLD,以防止学生模型高估教师分布的低概率区域。

然后,推导出一种有效的优化方法来学习这个目标。在指令跟随设置中的大量实验表明,MINILLM模型生成更精确的响应,具有更高的整体质量、更低的曝光偏差、更好的校准和更高的长文本生成性能。

论文方法也适用于具有120M到13B参数的不同模型族。我们将在https://aka.ms/MiniLLM发布我们的代码和模型检查点

实验

可以看出 miniLLM 的效果还是可以的,提高了 1~3 个点。

官方仓库说的是 16 * 32V100,比较费卡,还是很难复现
 
参考资料

知乎笔记
CSDN博客

2)黑盒蒸馏

Stanford alpaca

《Stanford alpaca: An instruction-following llama model.》2023

项目代码

参考博客资料

Alpaca 是 LLaMA-7B 的微调版本,使用Self-instruct[2]方式借用text-davinct-003构建了52K的数据,同时在其构建策略上做了一些修改。

性能上作者对Alpaca进行了评估,与openai的text-davinct-003模型在self-instruct[2]场景下的性能表现相似。所以比起成本来看,Alpaca更便宜。

https://link.zhihu.com/?target=https%3A//crfm.stanford.edu/2023/03/13/alpaca.html)

Vicuna

《Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality.》2023

相关资料

https://zhuanlan.zhihu.com/p/618389519
https://lmsys.org/blog/2023-03-30-vicuna/

Wizardlm

《Wizardlm: Empowering large language models to follow complex instructions.》2023

利用开放域的指令数据训练大语言模型(LLM)取得了巨大成功。然而,手动创建此类指令数据非常耗时费力。此外,人类可能难以生成高难度的指令。

本文展示了一种利用 LLM 代替人类创建具有不同复杂度的大量指令数据的方法。

从一组初始指令开始,我们使用提出的 Evol-Instruct 逐步将其重写为更复杂的指令。

然后,我们混合所有生成的指令数据,对 LLaMA 进行微调。

我们将生成的模型称为 WizardLM。

在复杂性平衡的测试集和 Vicuna 的测试集上进行的人工评估表明,来自 Evol-Instruct 的指令优于人工创建的指令。

通过分析高难度部分的人工评估结果,我们证明了 WizardLM 的输出结果优于 OpenAI ChatGPT 的输出结果。

在 GPT-4 自动评估中,WizardLM 在 29 个技能中的 17 个技能上实现了超过 ChatGPT 90% 的能力。尽管 WizardLM 在某些方面仍落后于 ChatGPT,但我们的研究结果表明,使用 AI 改进的指令进行微调是增强 LLM 的一个有前途的方向

[论文笔记] WizardLM: Empowering Large Language Models to Follow Complex Instructions

Instruction tuning with gpt-4

《 Instruction tuning with gpt-4.》

2023

Minigpt-4

《Minigpt-4: Enhancing vision-language understanding with advanced large language models.》2023

CoRR abs/2303.08774 》(2023)

相关资料
https://doi.org/10.48550/arXiv.2303.08774
https://zhuanlan.zhihu.com/p/627671257

2. 剪枝

16个注意力头比一个好吗

《 Are sixteen heads really better than one? Advances in neural information processing systems * 32》

(2019)

自Vaswani等人提出transformer模型以来,transformer模型已经成为NLP研究的主要内容。它们被用于机器翻译,语言模型,并且是最新最先进的预训练模型。典型的transformer架构由堆叠的块组成,图1中显示了其中的一块。这种块由一个多头部注意层和一个每个位置的2层前馈网络组成,并与残差连接和层归一化连接在一起。多头注意机制的普遍应用可以说是transformer的核心创新。

在这篇博客文章中,我们将仔细研究这种多头注意力机制,试图理解多头实际上有多重要。

Transformer中16个注意力头一定要比1个注意力头效果好吗?

Movement pruning

《Movement pruning: Adaptive sparsity by fine-tuning. Advances in Neural Information Processing Systems* 33 》(2020)
在这里插入图片描述

1)结构化剪枝

Transformer压缩

《Reducing Transformer Depth on Demand with Structured Dropout》2019

这篇paper是做Transformer压缩的,但其实bert的核心也就是transformer,这篇paper的实验里也做了bert的压缩。作者的主要工作是提出了LayerDrop的方法,即一种结构化的dropout的方法来对transformer模型进行训练,从而在不需要fine-tune的情况下选择一个大网络的子网络。

这篇paper方法的核心是通过Dropout来去从大模型中采样子网络,但是这个dropout是对分组权重进行dropout的,具体而言,这篇paper是layerwise的dropout,可见下图:

o_200427085955image-20200422201225434.png

作者提出的方法是用LayerDrop的方法只 训练一遍网络 ,然后在测试的时候可以根据不同的需求来选择不同的深度。

论文阅读:Reducing Transformer Depth On Demand With Structured Dropout

Ziplm

《 Ziplm: Hardware-aware structured pruning of language models.》2023

LLM-Pruner

《 LLM-Pruner: On the Structural Pruning of Large LanguageModels. 》 2023

剪枝+少量数据+少量训练 = 高效的Large Language Models压缩

大语言模型(LLMs, Large Language Models)在各种任务上展现出了强大的能力,这些能力很大程度上来自于模型巨大的参数量以及海量的训练语料。为了应对这些规模上存在的挑战,许多研究者开始关注大语言模型的轻量化问题。

本文主要讨论一种基于结构化剪枝的方案,它能够“物理地”移除冗余的结构和参数,同时保留大部分原模型已经学习到的参数,实现高效的大语言模型压缩。

NeurIPS 2023 | LLM-Pruner: 大语言模型的结构化剪枝

GUM

《What Matters In The Structured Pruning of Generative Language Models? 》

2023

自回归大语言模型GPT-3 需要巨大的计算资源,这样会导致巨大的经济损失和环境影响。

结构化的剪枝方法传统上减少资源使用,然而这些剪枝方法对生成语言模型的应用和有效性还没有被研究。

我们分析了gpt这类模型中模型中MLP层的剪枝带来magnitude, random, and movement 方面的影响。

我们发现对这些模型movement 可能表现不佳,而随机剪枝几乎与最好的方法匹配。

移动对这些模型来说可能表现不佳,而随机剪枝几乎可以达到最好的方法。

通过检查神经元水平的冗余量,我们发现了movement 不会根据神经元与其他神经元相比的独特性来选择,因此会留下多余的冗余。

鉴于此,我们引入Globally Unique Movement (GUM),全局独特运动,根据独特性和敏感性来选择神经元。

我们还讨论了这些技术在不同冗余量上的作用,并进行了详细的比较和消融实验。

Deja vu

《Deja vu: Contextual sparsity for efficient llms at inference time》2023

https://github.com/FMInference/DejaVu.

Deja Vu利用上一个layer的activations来预测下一层(实际上为了隐藏这个predictor的开销,文章提到了是异步地预测下层,但是原理上取下层没问题)的sparsity,决定需要保留MLP blocks的哪些neuros和attention block的heads。

该方法是dynamic selection而不是static pruning,比一些unstructured pruning 方法(比如SparseGPT和Wanda)针对hardware有更多的优化。

与最先进的FasterTransformer相比,在OPT-175B上Deja vu可降低2倍的推理时间,
与目前广泛使用的Hugging Face相比,降低6倍的推理时间,同时保证模型的质量。

2)半结构化稀疏

FastBERT

《Exponentially Faster Language Modelling》

github地址

2023

本文提出一种BERT变体FastBERT,在推理时只使用0.3%的神经元,但性能与类似的BERT模型相当。用快速前馈网络(FFFs)替换前馈网络,同时有选择地使用每层12个神经元。虽然目前还没有真正高效的实现方法能够完全释放条件神经执行(CNE)的加速潜力,但作者提供了高效的CPU代码,该代码相对于优化的基础前馈实现(feedforward implementation)可以提升78倍的速度,同时作者还提供了一个PyTorch实现,该实现相对于等效的批量前馈推理(batched feedforward inference)可以提升40倍的速度。

img

训练阶段:we train every model for 1 day on a single A6000 GPU

SparseGPT

《SparseGPT: Massive Language Models Can Be Accurately Pruned in One-Shot》2023

本文提出了首个可以在千亿参数模型上高效准确工作的一次性剪枝算法——SparseGPT。该方法将剪枝问题简化为极大规模的稀疏回归问题,并设计了一个新的近似稀疏回归求解器,也解决分层剪枝问题。

SparseGPT 可以在最大的开源 GPT 模型(1750 亿参数)上仅用单个 GPU 耗时几小时就完成剪枝。同时,在无需任何微调的情况下,修剪上千亿(50~60%)参数后模型的精度几乎不变(甚至提升)。SparseGPT 还可以轻松地推广到半结构化剪枝(2:4 和 4:8),并且与权重量化方法结合。

GPT-3剪枝算法来了!无需微调,1750亿参数模型剪50%还提点

《 A Simple and Effective Pruning Approach for Large Language Models. 》

2023

在人工智能研究中,大型语言模型(LLM)的优化仍然是一个重大挑战,对于推进该领域的实际应用和可持续性至关重要。本文以麻省理工学院宋瀚教授实验室的基础工作为基础,介绍了一种通过上下文剪枝开发 Mini-GPT 的新方法。我们的方法策略性地修剪了传统法学硕士的计算架构,专注于保留核心功能,同时大幅减小模型大小。我们在各种复杂的数据集上采用该技术,包括美国法律、医学问答、天际对话、英台翻译和经济学文章。结果强调了上下文修剪的效率和有效性,不仅作为一个理论概念,而且作为开发特定领域、资源高效的法学硕士的实用工具。上下文修剪是构建特定领域法学硕士的一种有前途的方法,这项研究是未来发展的基石,具有更多的硬件计算、精细的微调和量化。

Mini-GPTs

《 Mini-GPTs: Efficient Large Language Models through Contextual Pruning》2023

在人工智能研究中,优化大型语言模型(LLMs)仍然是一个重大挑战,对于推进该领域的实际应用和可持续性至关重要。本文在麻省理工学院韩松教授实验室的基础研究基础上,介绍了一种通过上下文修剪来开发Mini-GPTs的新方法。我们的方法有策略地修剪传统LLMs(如Phi-1.5)的计算架构,重点保留核心功能,同时大幅减小模型大小。我们在包括美国法律、医学问答、天际之城对话、英台翻译和经济文章等多样复杂的数据集上采用了这种技术。结果强调了上下文修剪的效率和有效性,不仅仅是一个理论概念,而是一个开发特定领域、资源高效的LLMs实用工具。上下文修剪是构建特定领域LLMs的一种有前途的方法,本研究是未来更多硬件计算、精细调整和量化开发的基石。

Compress, Then Prompt

《 Compress, Then Prompt: Improving Accuracy-Efficiency Trade-off of LLM Inference with Transferable Prompt》2023

虽然LLM模型巨大的参数量带来优秀的性能,但这种大规模使它们低效且需要内存。

因此, LLM模型很难部署在商用硬件上,例如单个GPU。

给定内存和设备的功耗限制,模型压缩方法被广泛采用,可以以降低功耗模型大小和推理延迟,这本质上在模型精度和模型效率做了权衡。

因此想要在普通硬件上的部署,优化这种精度-效率的权衡对LLM至关重要。

本文引入了一种新的视角来优化压缩模型。

具体来说,我们首先注意到针对特定的问题,压缩的LLM的生成质量可以通过添加精心设计的硬提示 显著提高,但并非所有问题都是如此。

基于这样的观察,本文提出一种soft prompt学习方法,针对提示学习过程暴露压缩模型,目的是提高prompt的性能。

实验结果表明,soft prompt策略极大地提高了8×文本的性能压缩的lama - 7b模型(具有联合的4位量化和50%的权重修剪压缩),使它们能够在流行的基准上匹配未压缩的对应模型。

此外,证明了这些学习到的提示可以在各种数据集之间迁移,任务和压缩级别。

因此,有了这种可迁移性,可以将soft prompt缝合到一种新的压缩模型以"原地"的方式提高测试时的精度。

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

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

相关文章

【实习】深信服防火墙网络安全生产实习

一、实习概况 1.1实习目的 1.掌握防火墙规则的作用2.掌握代理上网功能的作用3.掌握端口映射功能的作用 1.2实习任务 1.防火墙的WEB控制台 2.需要在防火墙上配置dnat …

【设计模式】23中设计模式笔记

设计模式分类 模板方法模式 核心就是设计一个部分抽象类。 这个类具有少量具体的方法,和大量抽象的方法,具体的方法是为外界提供服务的点,具体方法中定义了抽象方法的执行序列 装饰器模式 现在有一个对象A,希望A的a方法被修饰 …

CVE-2021-44915 漏洞复现

CVE-2021-44915 路由/admin/admin.php是后台,登录账号和密码默认是admin、tao,选择管理栏目菜单。 点击编辑,然后随便改点内容,提交时候抓包。 id是注入点。直接拿sqlmap跑就行了。

20240210使用剪映识别字幕的时候的GPU占比RX580-RTX4090

20240210使用剪映识别字幕的时候的GPU占比RX580-RTX4090 2024/2/10 17:54 【使用剪映识别不同的封装格式,不同的音视频编码,对GPU的占用率可能会有比较大的不同!】 很容易发现在在WIN10下使用剪映的时候,X99RX550组合。 GPU部分&…

探索C语言的内存魔法:动态内存管理解析

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C语言学习 贝蒂的主页:Betty‘s blog 1. 静态开辟内存 通过前面的学习,我们已经掌握了两种开辟内存的方…

ChatGPT高效提问—prompt常见用法(续篇八)

ChatGPT高效提问—prompt常见用法(续篇八) 1.1 对抗 ​ 对抗是一个重要主题,深入探讨了大型语言模型(LLM)的安全风险。它不仅反映了人们对LLM可能出现的风险和安全问题的理解,而且能够帮助我们识别这些潜在的风险,并通过切实可行的技术手段来规避。 ​ 截至目前,网络…

4核8g服务器能支持多少人访问?2024新版测评

腾讯云轻量4核8G12M轻量应用服务器支持多少人同时在线?通用型-4核8G-180G-2000G,2000GB月流量,系统盘为180GB SSD盘,12M公网带宽,下载速度峰值为1536KB/s,即1.5M/秒,假设网站内页平均大小为60KB…

酷开系统 | 拓展内容营销边界,酷开科技大屏价值全面升维

丰富的内容是智能大屏吸引消费者的关键。随着智能大屏各类垂直应用的增多,和长、短视频等多元内容的加入,使消费者的使用需求进一步激发和释放,这些流量的加入,也使大屏成为了营销的天然宝藏。酷开科技一直致力于OTT大屏营销&…

《杨绛传:生活不易,保持优雅》读书摘录

目录 书简介 作者成就 书中内容摘录 良好的家世背景,书香门第为求学打基础 求学相关 念大学 清华研究生 自费英国留学 法国留学自学文学 战乱时期回国 当校长 当小学老师 创造话剧 支持钱锺书写《围城》 出任震旦女子文理学院的教授 接受清华大学的…

分享关闭Windows自动更新的六种方法。

方法一:禁用Windows Update服务 同时按下键盘的“WinR”键,打开“运行”窗口,输入“services.msc”并点击“确定”。 在打开的服务列表中找到“Windows Update”选项,双击打开其属性窗口。 在“启动类型”下拉菜单中选择“禁用”…

Linux系统基础 03 IP地址虚拟网络、Linux软件包管理、ssh服务、apache服务和samba服务的简单搭建

文章目录 一、IP地址虚拟网络二、Linux软件包管理1、rpm包管理器2、yum包管理器3、源码安装 三、ssh服务四、apache服务五、samba服务 一、IP地址虚拟网络 1、IP地址格式是点分十进制,例:172.16.45.10。即4段8位二进制 2、IP地址分为网络位和主机位。网…

备战蓝桥杯---动态规划(基础3)

本专题主要介绍在求序列的经典问题上dp的应用。 我们上次用前缀和来解决,这次让我们用dp解决把 我们参考不下降子序列的思路,可以令f[i]为以i结尾的最大字段和,易得: f[i]max(a[i],a[i]f[i-1]); 下面是AC代码: #in…

Linux应用 进程间通信之共享内存(System V)

1、定义 System V共享内存是一种在Unix和类Unix操作系统上用于进程间通信的机制。它允许多个进程共享同一块物理内存区域,从而可以在这些进程之间传递数据。 应用场景: 数据共享:多个进程需要共享大量数据,如数据库缓存、图像处…

队列---数据结构

定义 队列(Queue)简称队,也是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队或进队;删除元素称为出队或离队。 队头(Front)&a…

上位机图像处理和嵌入式模块部署(利用python开发软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 开发windows和linux软件的时候,大家一般都是习惯于用c/c语言进行开发,但是目前来说很多的开发板都是支持python语言开发的。…

防火墙USG6000V配置接口实验

要求:防火墙向下使用子接口分别对应生产区和办公区,所有分区设备可以ping通网关 最终效果部分示例:client1,Server1,PC2都能ping通网关 实现流程: 云要添加虚拟网卡ip(此处用的是创建的虚拟环回ip),更改端口映射为双向通道且更改编号 SW1:#要先登录防火墙初始账号和密码,然后…

尝新果未熟,探新途未尽。寒冬凝锐气,雷鸣蓄神力——小康师兄的2023年度总结

文章目录 一、前言二、工作总结2.1 我期望的,而公司想要的2.2 公司利益VS员工利益2.3 这个问题问得很有问题 三、生活总结3.1 一胎3.2 二胎 四、其他总结4.1 博客4.2 无人自助台球馆4.3 我要出书了 五、OKR 一、前言 又是一年除夕夜,万家灯火同团圆。 老…

|Python新手小白低级教程|第十九章:函数(1)

文章目录 前言一、概说二、方法def简介1.示例:使用def关键字制作功能函数——找最大最小2.代码剖析示例代码Part 1示例代码Part 2示例代码Part 3练习1.1制作函数 三、灵活使用函数1.制作一种函数,函数名和格式为even_num(a,b),输入a&#xff…

数据结构——单向链表和双向链表的实现(C语言版)

目录 前言 1. 链表 1.1 链表的概念及结构 1.2 链表的分类 2. 单链表接口实现 2.1 数据结构设计与接口函数声明 2.2 创建结点,打印,查找 2.3 尾插,头插,尾删,头删 2.4 插入或删除 2.4.1在指定位置后 2.4.2在…

防疫物资管理新篇章:Java+SpringBoot实战

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…