DeepSeek技术架构解析:MoE混合专家模型

news2025/3/25 22:25:23

一、前言

2025年初,DeepSeek V3以557万美元的研发成本(仅为GPT-4的1/14)和开源模型第一的排名,在全球AI领域掀起波澜。其核心创新之一——混合专家模型(Mixture of Experts, MoE)的优化设计,不仅突破了传统大模型的算力瓶颈,更以37B激活参数实现671B总参数规模的性能输出,成为开源社区与工业界关注的焦点。本文将从技术原理、工程创新、应用潜力及争议四个维度,深度解析这一架构的设计逻辑与行业意义。

二、什么是混合专家模型?

在有限算力条件下,优化模型架构的参数量通常比增加训练迭代次数更能有效提升模型性能。相比于盲目延长训练周期,合理扩大模型容量往往能以更低的时间成本获得更优的收敛效果。

混合专家架构(MoE)的突破性价值体现在其独特的计算效率优势——该架构通过动态激活专家模块的机制,可在大幅降低算力消耗的同时完成高质量预训练。这使得研发团队在同等硬件资源下,既可尝试构建超大规模语言模型,也能拓展训练数据边界。特别值得关注的是,该架构在基础训练阶段展现出显著的训练速率优势,相较于传统稠密网络结构,能以更短的时间周期达成同等级别的模型能力指标。

混合专家模型(MoE)本质上是一种改进版的Transformer架构,其核心创新点在于引入动态计算的模块化结构,具体可通过以下维度理解:

  • 稀疏 MoE 层:不同于传统Transformer中每个前馈网络(FFN)层采用固定结构的密集计算方式,MoE通过拆分-重组架构实现计算稀疏化。在典型设计中,单层会被拆解为平行的多个专业处理单元(常见如8-128个)。这些单元虽形式上保留FFN的结构特性,但每个单元都会通过参数差异化训练发展出独特的特征处理能力,甚至允许嵌套式MoE架构形成多级专家筛选体系。

  • 门控网络或路由
    模型内部嵌入可训练的决策神经网络作为调度中枢,该子系统在实时推断过程中执行两项关键职能:

    • 语义特征解析:对每个输入的词语切片进行特征解构,分析其潜在语义需求。
    • 动态专家调度:基于语义特征矩阵与专家能力矩阵的匹配度计算,将各词语切片智能分配到最适配的1-2个专家模块进行处理。例如"量子"可能被指向物理学知识专家,而"语法"则分配给语言学专家。

    这种动态路由机制使模型总参数量呈指数级增长的同时,单个样本前向传播的计算量仅需激活约13%-25%的专家模块。这种稀疏激活范式正是MoE在保持模型巨大知识容量的同时,显著降低算力消耗的本质原因。

该图参考论文:https://arxiv.org/pdf/2101.03961
例如,在上图中,“More”这个令牌可能被发送到第二个专家,而“Parameters”这个令牌被发送到第一个专家。有时,一个令牌甚至可以被发送到多个专家。

尽管混合专家模型 (MoE) 提供了若干显著优势,例如更高效的预训练和与稠密模型相比更快的推理速度,但它们也伴随着一些挑战:

  • 训练挑战: 虽然 MoE 能够实现更高效的计算预训练,但它们在微调阶段往往面临泛化能力不足的问题,长期以来易于引发过拟合现象。

  • 推理挑战:
    1)内存黑洞效应

    • 理论参数量陷阱:以Mixtral 8x7B为例,其真实参数量=专家非共享参数(8专家x FFN参数)+共享参数(注意力模块等)。假设标准Transformer中FFN占65%参数,则总参数量=0.65x7Bx8 + 0.35x7B=36.4B + 2.45B≈39B而非表面56B。
    • 显存加载刚性需求:即使每次推理仅激活部分专家,仍需完整加载47B参数的张量图谱(存在参数重复优化空间)。

    2)计算量子隧穿现象

    • 当每个token激活2个专家时,理论计算量=2x7B部分 + 共享7B部分,等效于约(7x2+7x0.35)=16.45B FLOPs。
    • 对比稠密模型:14B模型的FLOPs=14x1.35≈18.9B,实际速度优势达23%(归功于并行计算优化)。

三、混合专家模型简史

3.1 萌芽期(1991-2010):模块化思想的觉醒

  • 1991年:Robert Jacobs提出原始MoE框架《Adaptive Mixtures of Local Experts》,通过人工设计的分段函数,让多个"专家网络"分别处理输入空间的不同区域,门控网络基于输入分配权重(类似加权投票机制)
  • 理论基础:Hinton《Adaptive Mixtures of Local Experts》的数学证明(1994),验证专家网络通过"分治策略"提升模型容量的有效性
  • 技术制约:手工特征工程时代,MoE的专家区分难以自动化,需预先定义专家分工(如按图像区域划分)

3.2 探索期(2011-2016):深度学习的催化剂

  • 动态路由突破:Shazeer在《Outrageously Large Neural Networks》(2017预印本)中提出可训练的门控网络,允许专家选择自动演化

  • 硬件红利:GPU算力崛起后,Google首次在LSTM+MoE结构上验证百亿参数规模可行性(4个expert)

  • 初步问题:负载不均衡(某些专家被过度选择)、训练不稳定(门控网络与专家博弈)

3.3 爆发期(2017至今):Transformer时代的重构

3.3.1 阶段1:架构重塑(2017-2021)

  • Transformer嫁接:Google将MoE层嵌入Transformer,替代传统FFN(GShard项目,2020),用2048个专家处理多语言翻译任务
  • 稀疏计算革命:Switch Transformer(2021)证明单个token仅激活1个专家时,可在1T参数量下维持可行计算成本

特别是在 2017 年,Shazeer 等人 (团队包括 Geoffrey Hinton 和 Jeff Dean,后者有时被戏称为 “谷歌的 Chuck Norris”) 将这一概念应用于 137B 的 LSTM (当时被广泛应用于 NLP 的架构,由 Schmidhuber 提出)。通过引入稀疏性,这项工作在保持极高规模的同时实现了快速的推理速度。这项工作主要集中在翻译领域,但面临着如高通信成本和训练不稳定性等多种挑战。

Outrageously Large Neural Network 论文中的 MoE layer

3.3.2 阶段2:工程攻坚(2021-2023)

  • 内存优化:DeepSpeed-MoE提出专家分片存储(ZeRO-Offload)、动态加载策略,使单个GPU可运行万亿级MoE
  • 路由算法革新:
    • BASE Layer(2022):用贝叶斯优化缓解专家负载不均衡
    • 微软引入Dropout式专家随机丢弃,防止门控网络过早固化

3.3.3 阶段3:开放生态(2023至今)

  • 开源引爆点:Mistral AI的Mixtral 8x7B(2023.12)首次在消费级GPU集群证明MoE的高性价比
  • 多模态融合:Google的V-MoE(Vision MoE)将专家划分应用于图像patch处理,在ImageNet上节省30%FLOPs

3.4 未来挑战的冰山一角

  • 动态弹性:如何在运行时自动增减专家数量(类似Kubernetes Pod扩缩容)
  • 量子化困境:专家参数因稀疏激活导致的非稳态分布,使8-bit量化精度损失达4.2倍于稠密模型
  • 伦理风险:门控网络的黑盒机制可能引发知识来源不可追溯性危机

四、模型结构

混合专家模型(MoE)是一种稀疏门控制的深度学习模型,它主要由一组专家模型和一个门控模型组成。MoE的基本理念是将输入数据根据任务类型分割成多个区域,并将每个区域的数据分配一个或多个专家模型。每个专家模型可以专注于处理输入这部分数据,从而提高模型的整体性能。

MoE架构的基本原理非常简单明了,它主要包括两个核心组件:GateNet和Experts。GateNet的作用在于判定输入样本应该由哪个专家模型接管处理。而Experts则构成了一组相对独立的专家模型,每个专家负责处理特定的输入子空间。

五、门控网络

混合专家模型中“门”是一种稀疏门网络,它接收单个数据元素作为输入,然后输出一个权重,这些权重表示每个专家模型对处理输入数据的贡献。一般是通过softmax门控函数通过专家或token对概率分布进行建模,并选择前K个。

门控网络的稀疏性设置存在一些挑战。例如,在混合专家模型 (MoE) 中,尽管较大的批量大小通常有利于提高性能,但当数据通过激活的专家时,实际的批量大小可能会减少。比如,假设我们的输入批量包含 10 个令牌, 可能会有五个令牌被路由到同一个专家,而剩下的五个令牌分别被路由到不同的专家。这导致了批量大小的不均匀分配和资源利用效率不高的问题。

那我们应该如何解决这个问题呢?一个可学习的门控网络 (G) 决定将输入的哪一部分发送给哪些专家 (E):

y = ∑ i = 1 n G ( x ) i E i ( x ) y = \sum_{i=1}^{n} G(x)_i E_i(x) y=i=1nG(x)iEi(x)

在这种设置下,虽然所有专家都会对所有输入进行运算,但通过门控网络的输出进行加权乘法操作。但是,如果 G (门控网络的输出) 为 0 会发生什么呢?如果是这种情况,就没有必要计算相应的专家操作,因此我们可以节省计算资源。那么一个典型的门控函数是什么呢?一个典型的门控函数通常是一个带有 softmax 函数的简单的网络。这个网络将学习将输入发送给哪个专家。

G σ ( x ) = Softmax ( x ⋅ W g ) G_\sigma(x) = \text{Softmax}(x \cdot W_g) Gσ(x)=Softmax(xWg)

Shazeer 等人的工作还探索了其他的门控机制,其中包括带噪声的 TopK 门控 (Noisy Top-K Gating)。这种门控方法引入了一些可调整的噪声,然后保留前 k 个值。具体来说:

  1. 添加一些噪声

H ( x ) i = ( x ⋅ W g ) i + StandardNormal() ⋅ Softplus ( ( x ⋅ W noise ) i ) H(x)_i = (x \cdot W_{\text{g}})_i + \text{StandardNormal()} \cdot \text{Softplus}((x \cdot W_{\text{noise}})_i) H(x)i=(xWg)i+StandardNormal()Softplus((xWnoise)i)

  1. 选择保留前 K 个值

KeepTopK ( v , k ) i = { v i if  v i  is in the top  k  elements of  v , − ∞ otherwise. \text{KeepTopK}(v, k)_i = \begin{cases} v_i & \text{if } v_i \text{ is in the top } k \text{ elements of } v, \\ -\infty & \text{otherwise.} \end{cases} KeepTopK(v,k)i={viif vi is in the top k elements of v,otherwise.

  1. 应用 Softmax 函数

G ( x ) = Softmax ( KeepTopK ( H ( x ) , k ) ) G(x) = \text{Softmax}(\text{KeepTopK}(H(x), k)) G(x)=Softmax(KeepTopK(H(x),k))

这种稀疏性引入了一些有趣的特性。通过使用较低的 k 值 (例如 1 或 2),我们可以比激活多个专家时更快地进行训练和推理。为什么不仅选择最顶尖的专家呢?最初的假设是,需要将输入路由到不止一个专家,以便门控学会如何进行有效的路由选择,因此至少需要选择两个专家。

在这里插入图片描述

从DeepSeek V3的技术报告中看到的架构图中,MoE中的门控网络对应的是DeepSeekMoE的Router模块,也可以得知DeepSeek是采用的带噪声的TopK门控网络。

5.1 传统门控网络与DeepSeek路由器模块的设计差异

在这里插入图片描述

举例说明:

在Google的Switch Transformer中,门控网络采用Top-1严格稀疏(每个输入只需激活一个专家),而DeepSeek可能的路由器模块可能更灵活(如动态负载均衡)。

5.2 DeepSeek路由器模技术创新点

  • 分布式路由:将路由决策拆解到多个子模块(如分层次专家集群)。
  • 轻量化设计:用低秩矩阵分解(Low-Rank Factorization)压缩路由器参数。
  • 混合路由信号:结合输入特征与外部元信息(如用户ID、任务类型)联合决策。

5.3 为什么要添加噪声呢?

这是为了专家间的负载均衡!正如之前讨论的,如果所有的令牌都被发送到只有少数几个受欢迎的专家,那么训练效率将会降低。在通常的混合专家模型 (MoE) 训练中,门控网络往往倾向于主要激活相同的几个专家。这种情况可能会自我加强,因为受欢迎的专家训练得更快,因此它们更容易被选择。为了缓解这个问题,引入了一个 辅助损失,旨在鼓励给予所有专家相同的重要性。这个损失确保所有专家接收到大致相等数量的训练样本,从而平衡了专家之间的选择。

六、专家

6.1 专家类型定义

  • Share专家(全时激活的共享专家)
    • 角色:全局特征处理器
    • 行为:每个输入Token必须流经Share专家,类似于一个"基础服务层"(Base Layer)
    • 特点:参数固定参与所有计算,捕获通用语义模式
  • Router专家(动态路由选择的领域专家)
    • 角色:特化特征增强器
    • 行为:仅激活与当前Token最相关的k个Router专家
    • 特点:每个专家专注不同语义域,形成分治协作的增强网络

6.2 双轨计算流程

6.2.1 Share路径的基础处理

每个Token自动经过Share专家的前向传播:

Output Share = ShareExpert ( TokenEmbedding ) \text{Output}_{\text{Share}} = \text{ShareExpert}(\text{TokenEmbedding}) OutputShare=ShareExpert(TokenEmbedding)

6.2.2 Router路径的动态筛选

Phase 1 - 亲和度分组预选

  • 将全部Router专家划分为 n_groups \text{n\_groups} n_groups个组(例如每个组含8个专家)

  • 对每个组执行局部打分:

    GroupScore i = ∑ j ∈ Group i LinearProjection ( TokenEmbedding ) j \text{GroupScore}_i = \sum_{j \in \text{Group}_i} \text{LinearProjection}(\text{TokenEmbedding})_j GroupScorei=jGroupiLinearProjection(TokenEmbedding)j

    其中线性投影层将Token隐空间映射到专家匹配度空间

  • 选择总分最高的 top_k_group \text{top\_k\_group} top_k_group个组(例如前4组)

Phase 2 - 组内专家精筛

  • 在预选组中独立计算各专家的原始亲和度

    RawAffinity j = LinearProjection ( TokenEmbedding ) j , j ∈ SelectedGroups \text{RawAffinity}_j = \text{LinearProjection}(\text{TokenEmbedding})_j, \quad j \in \text{SelectedGroups} RawAffinityj=LinearProjection(TokenEmbedding)j,jSelectedGroups

  • 对各组内的专家执行组内排序,选取局部 top-2 \text{top-2} top-2专家

  • 跨组合并所有候选专家,保留全局 top-k \text{top-k} top-k个高亲和力专家

Phase 3 - 激活与加权

  • 对被选中的k个Router专家执行前向计算

  • 对它们的输出按亲和度进行Softmax加权:

    w j = exp ⁡ ( RawAffinity j / τ ) ∑ m = 1 k exp ⁡ ( RawAffinity m / τ ) w_j = \frac{\exp(\text{RawAffinity}_j / \tau)}{\sum_{m=1}^k \exp(\text{RawAffinity}_m / \tau)} wj=m=1kexp(RawAffinitym/τ)exp(RawAffinityj/τ)

    其中 τ \tau τ为温度系数,控制分布锐度

  • 生成Router路径的集成输出:

    Output Router = ∑ j = 1 k w j ⋅ RouterExpert j ( TokenEmbedding ) \text{Output}_{\text{Router}} = \sum_{j=1}^k w_j \cdot \text{RouterExpert}_j(\text{TokenEmbedding}) OutputRouter=j=1kwjRouterExpertj(TokenEmbedding)

6.3 双路径融合

最终MoE层输出的合成策略:

Output MoE = Output Share + α ⋅ Output Router \text{Output}_{\text{MoE}} = \text{Output}_{\text{Share}} + \alpha \cdot \text{Output}_{\text{Router}} OutputMoE=OutputShare+αOutputRouter

其中 α \alpha α为可学习的融合系数或在训练中渐进增长的增强因子(例如从0到1的线性缩放)

6.4 DeepSeekMoE架构

在这里插入图片描述

通过上面专家类型定义、双轨计算流程、双路径融合的讲解,再结合DeepSeekMoE的架构图,对于DeepSeek的专家设计也就清晰了。

6.4 创新设计要点

  • 分层路由机制
    通过分组粗筛降维(例如从64专家到4组),减少了全局排序的计算代价。数学上,筛选复杂度从 O ( N ) O(N) O(N)降为 O ( N / group_size + group_size ) O(N/\text{group\_size} + \text{group\_size}) O(N/group_size+group_size)
  • 共享基底稳定性
    Share专家作为默认通路,即使Router路径完全失效(如亲和度全为0),模型仍保有基础表征能力
  • 硬件友好设计
    分组筛选适合GPU的SIMD并行结构(组内可并行计算),同时降低GPU显存的峰值占用量

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

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

相关文章

【正点原子】AI人工智能深度学习(RV1126/RK3568/RK3588)-第1期 准备篇

1.1SDK编译后的目录 1、真正的根文件系统镜像存放目录 2、非必须,负责系统升级等,kerneldtbramdisk组成的根文件系统 1.2文件系统分区 1.3开机自启动 1.6设置静态ip地址 1.8RKMedia框架/编译测试SDK自带RKMedia例程 出厂系统以下内容都是默认…

靶场(十五)---小白心得思路分析---LaVita

启程: 扫描端口,发现开放22,80端口,发现ws.css可能存在exp,经查发现无可利用的exp PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5deb11u2 (protocol 2.0) | ssh-hostkey: | 3072 c9…

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek 通义万相制作AI视频流程 4.1 D…

Pi型隶属函数(Π-shaped Membership Function)的详细介绍及python示例

我们前文已经深度解读了三角形、梯形、高斯、S型和Z型隶属函数,现在转向Pi型。当然我们先简要回顾不同隶属函数的特点和曲线效果。了解每种隶属函数的特性是为了更好的应用。 一、回顾五种隶属函数的特点 1.从每种隶属函数的结构和特点角度对比。三角形隶属函数&am…

MySQL 入门大全:常用函数

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

SpringBoot3实战(SpringBoot3+Vue3基本增删改查、前后端通信交互、配置后端跨域请求、数据批量删除(超详细))(3)

目录 一、从0快速搭建SpringBoot3工程、SpringBoot3集成MyBatis、PageHelper分页查询的详细教程。(博客链接) 二、实现前端与后端通信对接数据。(axios工具) &#xff08;1&#xff09;安装axios。(vue工程目录) &#xff08;2&#xff09;封装请求工具类。(request.js) <1&…

JVM垃圾回收笔记02-垃圾回收器

文章目录 前言1.串行(Serial 收集器/Serial Old 收集器)Serial 收集器Serial Old 收集器相关参数-XX:UseSerialGC 2.吞吐量优先(Parallel Scavenge 收集器/Parallel Old 收集器)Parallel Scavenge 收集器Parallel Old 收集器相关参数-XX:UseParallelGC ~ -XX:UseParallelOldGC-…

Linux上位机开发实战(编写API库)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们自己编写linux上位机软件的时候&#xff0c;尽量都是通过框架库的形式来开发。这就是所谓的低耦合&#xff0c;高内聚。相似的功能、模块和算法…

器件功耗模型原理

器件功耗模型原理 谷歌提供了一套通用的器件耗电模型和配置方案&#xff0c;先对器件进行耗电因子拆解&#xff0c;建立器件功耗模型&#xff0c;得到一个器件耗电的计算公式。通过运行时统计器件的使用数据&#xff0c;代入功耗模型&#xff0c;就可以计算出器件的功耗。例如…

拥抱成长型思维:解锁持续进步的人生密码

我强烈推荐4本可以改变命运的经典著作&#xff1a; 《寿康宝鉴》在线阅读白话文《欲海回狂》在线阅读白话文《阴律无情》在线阅读白话文《了凡四训》在线阅读白话文 一、什么是成长型思维&#xff1f; 成长型思维&#xff08;Growth Mindset&#xff09;由斯坦福大学心理学家卡…

Ubuntu上查看GPU使用情况并释放内存

先用nvidia-smi查看GPU当前使用情况 再用fuser 命令查找对应显卡上占用 GPU 的进程 最后查到了用kill -9强制杀掉进程&#xff08;PID&#xff09;即可

解决思科交换机无法访问局域网外设备

问题背景 有时&#xff0c;我们需要远程连接来管理一台思科交换机&#xff0c;例如使用SSH协议。然而交换机运作在链路层&#xff0c;这就需要交换机有一个网络层地址&#xff0c;来接纳基于IP协议的远程访问请求。于是&#xff0c;我们依靠设置一个带有IP地址的交换机虚拟接口…

什么是张量计算

以下是对张量计算的详细介绍&#xff0c;结合数学、物理学及计算机科学等多领域视角&#xff1a; 一、张量的基本定义与性质 1. 张量的数学定义 张量是向量空间及其对偶空间的笛卡尔积上的多重线性映射&#xff0c;可视为多维数组或几何对象。其核心特征在于&#xff1a; 坐…

【1】Java 零基础入门学习(小白专用)

【1】Java 零基础入门学习 &#x1f4da;博客主页&#xff1a;代码探秘者 ✨专栏&#xff1a;《JavaSe从入门到精通》 其他更新ing… ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;作者水…

[c语言日寄]枚举类型

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…

【氧化镓】​​​​掺杂在β-Ga2O3材料中引入的深能级缺陷

1. 引言 1.1 β-Ga2O3材料的特性与应用前景 β-Ga2O3作为一种新型的宽禁带半导体材料,具有约4.6-4.8 eV的宽带隙、高击穿场强(约8 MV/cm)和优异的热稳定性,适用于高功率和射频电子器件。其独特的物理特性使其在高电压、高频率以及高功率应用场景中具有巨大的潜力。例如,…

仅靠prompt,Agent难以自救

Alexander的观点很明确&#xff1a;未来 AI 智能体的发展方向还得是模型本身&#xff0c;而不是工作流&#xff08;Work Flow&#xff09;。还拿目前很火的 Manus 作为案例&#xff1a;他认为像 Manus 这样基于「预先编排好的提示词与工具路径」构成的工作流智能体&#xff0c;…

Playwright + MCP:用AI对话重新定义浏览器自动化,效率提升300%!

一、引言&#xff1a;自动化测试的“瓶颈”与MCP的革新 传统自动化测试依赖开发者手动编写脚本&#xff0c;不仅耗时且容易因页面动态变化失效。例如&#xff0c;一个简单的登录流程可能需要开发者手动定位元素、处理等待逻辑&#xff0c;甚至反复调试超时问题。而MCP&#xf…

计算机操作系统(五) 前趋图和程序执行与进程的描述(附带图谱表格更好对比理解))

计算机操作系统&#xff08;五&#xff09; 前趋图和程序执行与进程的描述 前言一、前趋图和程序执行1.1前趋图1.2程序的顺序执行1.3程序的并发执行 二、进程的描述2.1进程的定义与特征2.2进程的基本状态与转换2.3挂起的操作系统和进程的转换2.4进程管理中的数据结构 总结&…

C/C++静态库的理解和制作

1.什么是库 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复用的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个人的代码都从零开始&#xff0c;因此库的存在意义非同寻常。 本质上来说库是⼀种可执行代码的二进制形式&#xff0c;可以被操作系统…