当前位置: 首页 > news >正文

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

一、前言

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显存的峰值占用量

相关文章:

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

一、前言 2025年初,DeepSeek V3以557万美元的研发成本(仅为GPT-4的1/14)和开源模型第一的排名,在全球AI领域掀起波澜。其核心创新之一——混合专家模型(Mixture of Experts, MoE)的优化设计,不…...

Ubuntu实时读取音乐软件的音频流

文章目录 一. 前言二. 开发环境三. 具体操作四. 实际效果 一. 前言 起因是这样的,我需要在Ubuntu中,实时读取正在播放音乐的音频流,然后对音频进行相关的处理。本来打算使用的PipewireHelvum的方式实现,好处是可以直接利用Helvum…...

2025年2月-3月后端go开发找工作感悟

整体感悟 目标 找工作首先要有一个目标,这个目标尽可能的明确,比如我要字节、拼多多之类的公司,还是要去百度、滴滴这样的,或者目标是创业公司。但是这个目标是会动态调整的,有可能我们的心态发生了变化,一…...

OpenCV图像拼接(1)自动校准之校准旋转相机的函数calibrateRotatingCamera()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::calibrateRotatingCamera 是OpenCV中用于校准旋转相机的函数。它特别适用于那种相机相对于一个固定的场景进行纯旋转运动的情况&…...

【极速版 -- 大模型入门到进阶】快速了解大型语言模型

文章目录 🌊 大模型作为一种生成式人工智慧,厉害在哪儿?-> 通用能力🌊 LLM 如何生成输出:简而言之就是文字接龙🌊 GPT 之前 ...:模型规模和数据规模概览🌊 ChatGPT 有三个训练阶段…...

MySQL 锁机制详解

MySQL 锁机制详解 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、 RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有 效性是所有数…...

牛客网【模板】二维差分(详解)c++

题目链接:【模板】二维差分 1.题目分析 类比一下,因为差分因为差分是在数组里的某一段同时加上一个K二维是在二维数组中选择一个词矩阵,让词矩阵中每一个元素都加上一个K 2.算法原理 解法-:暴力解法 -> 模拟 你告诉我一个左上角和右下…...

从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!

我正在参加Trae「超级体验官」创意实践征文, 本文所使用的 Trae 免费下载链接: www.trae.ai/?utm_source… 前言 大家好,我是小Q,字节跳动近期推出了一款 AI IDE—— Trae,由国人团队开发,并且限时免费体…...

【清华大学】AIGC发展研究(3.0版)

目录 AIGC发展研究报告核心内容一、团队简介二、AI哲学三、国内外大模型四、生成式内容(一)文本生成(二)图像生成(三)音乐生成(四)视频生成 五、各行业应用六、未来展望 AIGC发展研究…...

Kafka--常见问题

1.为什么要使用 Kafka,起到什么作用 Kafka是一个高吞吐量、分布式、基于发布订阅的消息系统,它主要用于处理实时数据流 Kafka 设计上支持高吞吐量的消息传输,每秒可以处理数百万条消息。它能够在处理大量并发请求时,保持低延迟和…...

maptalks图层交互 - 模拟 Tooltip

maptalks图层交互 - 模拟 Tooltip 图层交互-模拟tooltip官方文档 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>图层交互 - 模拟 Tooltip</title><style typet…...

【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作

文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看&#xff01; 一、Visual Studio Code下载 下载官网&#xff1a;https://code.visualstudio.com/ 进入官网后点击右上角的Download &…...

datetime“陷阱”与救赎:扒“时间差值”证道

时间工具陷阱&#xff0c;其实是工具引用的误解。 笔记模板由python脚本于2025-03-23 23:32:58创建&#xff0c;本篇笔记适合时间工具研究的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Pyth…...

3DMAX曲线生成器插件CurveGenerator使用方法

1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具&#xff0c;用户可以通过简单的UI界面输入参数&#xff0c;快速生成多条样条线。每条样条线的高度值随机生成&#xff0c;且可以自定义以下参数&#xff1a; 顶点数量&#xff1a;每条…...

Apache漏洞再现

CVE-2021-41773路径穿越漏洞 1、开环境 sudo docker pull blueteamsteve/cve-2021-41773:no-cgid sudo docker run -dit -p 8082:80 blueteamsteve/cve-2021-41773:no-cgid 2、访问8082端口 3、打开工具 4、输入网址&#xff0c;检测漏洞...

git,openpnp - 根据安装程序打包名称找到对应的源码版本

文章目录 git,openpnp - 根据安装程序打包名称找到对应的源码版本概述笔记备注 - 提交时间不可以作为查找提交记录的依据END git,openpnp - 根据安装程序打包名称找到对应的源码版本 概述 想在openpnp官方最新稳定版上改一改&#xff0c;首先就得知道官方打包的安装程序对应的…...

SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)

7.3. 查询计划相关操作符 98&#xff09;Table Scan&#xff1a;该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词&#xff0c;则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。 图 7.3-…...

编译原理——词法分析

文章目录 词法分析&#xff1a;从基础到自动构造一、词法分析程序的设计一、词法分析程序的设计二、PL/0编译程序中词法分析程序的设计与实现1. 语法特定考量2. 通过状态转移表运用有限状态自动机3. 示例代码片段&#xff08;用于说明的伪代码&#xff09; 三、单词的形式化描述…...

Linux内核,内存分布

x86_64的物理地址范围为64bit&#xff0c;但是因为地址空间太大目前不可能完全用完&#xff0c;当前支持57bit和48bit两种虚拟地址模式。 地址模式单个空间用户地址空间内核地址空间32位2G0x00000000 - 0x7FFFFFFF0x80000000 - 0xFFFFFFFF64位(48bit)128T0x00000000 00000000 …...

AI鸟类识别技术革新生态监测:快瞳科技如何用“智慧之眼”守护自然?

在生态环境保护日益受关注的今天&#xff0c;“鸟类识别”已从专业科研工具演变为推动生态治理数字化的核心技术。无论是湿地保护区的珍稀候鸟监测&#xff0c;还是城市机场的鸟击风险预警&#xff0c;AI技术的精准赋能正在改写人类与自然的互动方式。作为行业领先的智能解决方…...

c++之set

一、set特性及用途&#xff1f; 唯一性&#xff1a;set 中的元素是唯一的&#xff0c;不会存在重复的元素。自动排序&#xff1a;set 中的元素会自动按照默认的升序规则进行排序。底层实现&#xff1a;set 通常基于红黑树实现&#xff0c;具有自平衡功能&#xff0c;因此插入、…...

【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…...

【操作系统】自旋锁和互斥锁

自旋锁和互斥锁是用于多线程同步的两种常见锁机制&#xff0c;主要区别在于等待锁的方式和适用场景。以下是它们的对比分析&#xff1a; 1. 等待机制 自旋锁&#xff08;Spinlock&#xff09;互斥锁&#xff08;Mutex&#xff09;线程通过 忙等待&#xff08;Busy-Wait&#x…...

人工智能在医疗影像诊断中的应用与实践

引言 随着人工智能技术的飞速发展&#xff0c;其在医疗领域的应用逐渐成为研究和实践的热点。特别是在医疗影像诊断方面&#xff0c;人工智能技术凭借其强大的数据处理能力和模式识别能力&#xff0c;为提高诊断效率和准确性带来了新的希望。本文将探讨人工智能在医疗影像诊断中…...

Java中synchronized 和 Lock

1. synchronized 关键字 工作原理 对象锁&#xff1a;在Java中&#xff0c;每个对象都有一个与之关联的监视器锁&#xff08;monitor lock&#xff09;。当一个线程尝试进入由 synchronized 保护的代码块或方法时&#xff0c;它必须首先获取该对象的监视器锁。如果锁已经被其…...

【C语言系列】数据在内存中存储

数据在内存中存储 一、整数在内存中的存储二、大小端字节序和字节序判断2.1什么是大小端&#xff1f;2.2练习2.2.1练习12.2.2练习22.2.3练习32.2.4练习42.2.5练习52.2.6练习6 三、浮点数在内存中的存储3.1练习3.2浮点数的存储3.2.1 浮点数存的过程3.2.2 浮点数取的过程 3.3题目…...

qt 对QObject::tr()函数进行重定向

在 Qt 中&#xff0c;QObject::tr() 函数用于国际化&#xff08;i18n&#xff09;&#xff0c;它用于标记需要翻译的字符串。通常情况下&#xff0c;tr() 函数会从翻译文件&#xff08;如 .qm 文件&#xff09;中查找对应的翻译字符串。如果你希望重定向 tr() 函数的行为&#…...

C#基础学习(三)值类型和引用类型:编程世界的“现金“ vs “银行卡“,以及string这个“渣男“的叛变行为

开场白 各位程序猿/媛们&#xff0c;今天我们来聊一聊编程世界里的"金钱观"。 你以为只有人类会纠结现金和存款的区别&#xff1f;不不不&#xff0c;C#中的值类型和引用类型每天都在上演这场大戏&#xff01; 而我们的string同学&#xff0c;表面是…...

自动驾驶背后的数学:多模态传感器融合的简单建模

上一篇博客自动驾驶背后的数学:特征提取中的线性变换与非线性激活 以单个传感器为例,讲解了特征提取中的线性变换与非线性激活。 这一篇将以多模态传感器融合为例,讲解稍复杂的线性变换和非线性激活应用场景。 (一)权重矩阵的张量积分解 y = W x + b = [ w 11 ⋯ w 1 n ⋮…...

如何设置sudo权限

打开终端&#xff1a;按 Ctrl Alt T 打开终端。 编辑 sudoers 文件&#xff1a; 使用 visudo 命令编辑 /etc/sudoers 文件&#xff08;visudo 会检查语法&#xff0c;避免错误&#xff09;&#xff1a; sudo visudo 添加用户权限&#xff1a; 在文件中找到以下行&#xff1…...

Codeforces Round 1012 (Div. 2) 3.23

文章目录 2025.3.23 Div2B. Pushing Balls&#xff08;暴力&#xff09;代码 C. Dining Hall题意思路代码 2025.3.23 Div2 Dashboard - Codeforces Round 1012 (Div. 2) - Codeforces B. Pushing Balls&#xff08;暴力&#xff09; 题意很好懂&#xff0c;每一行每一列从左…...

langfuse追踪Trace

介绍 &#x1f9e0; Langfuse 是什么&#xff1f; Langfuse 是一个专门为 LLM 应用&#xff08;如 OpenAI / LangChain / 自定义 Agent&#xff09; 设计的 观测与追踪平台&#xff08;Observability Platform&#xff09;。 简单说&#xff0c;它就像是你为 AI 应用插上的 “…...

Java-模块二-2

整数类型 byte&#xff1a;在 Java 中占用8位&#xff08;1字节&#xff09;&#xff0c;因此它的取值范围是从 -128 到 127。这是最小的整数类型&#xff0c;适合用于节省空间的情况。 short&#xff1a;这种类型的大小是16位&#xff08;2字节&#xff09;&#xff0c;允许的…...

使用VS2022编译CEF

前提 选择编译的版本 CEF自动编译&#xff0c;在这里可以看到最新的稳定版和Beta版。 从这里得出&#xff0c;最新的稳定版是134.0.6998.118&#xff0c;对应的cef branch是6998。通过这个信息可以在Build requirements查到相关的软件配置信息。 这里主要看Windows下的编译要…...

大模型RLHF训练-PPO算法详解:Proximal Policy Optimization Algorithms

一、TL&#xff1b;DR 提出了一种新的策略梯度方法家族&#xff0c;用于强化学习&#xff0c;这些方法交替进行与环境交互采样数据提出了一个新的目标函数&#xff0c;使得能够进行多个小批量更新的多轮训练这些新方法为近端策略优化&#xff08;Proximal Policy Optimization…...

【STM32实物】基于STM32的扫地机器人/小车控制系统设计

基于STM32的扫地机器人/小车控制系统设计 演示视频: 基于STM32的扫地机器人小车控制系统设计 简介:扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采…...

【C++初阶】从零开始模拟实现vector(含迭代器失效详细讲解)

目录 1、基本结构 1.1成员变量 1.2无参构造函数 1.3有参构造函数 preserve()的实现 代码部分&#xff1a; push_back()的实现 代码部分&#xff1a; 代码部分&#xff1a; 1.4拷贝构造函数 代码部分&#xff1a; 1.5支持{}初始化的构造函数 代码部分&#xff1a; …...

AI比人脑更强,因为被植入思维模型【21】冯诺依曼思维模型

定义 冯诺依曼思维模型是一种基于数理逻辑和系统分析的思维方式&#xff0c;它将复杂的问题或系统分解为若干个基本的组成部分&#xff0c;通过建立数学模型和逻辑规则来描述和分析这些部分之间的关系&#xff0c;进而实现对整个系统的理解和优化。该模型强调从整体到局部、再…...

Keil5调试技巧

一、引言 Keil5作为一款广泛应用于嵌入式系统开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;在微控制器编程领域占据着重要地位。它不仅提供了强大的代码编辑和编译功能&#xff0c;还具备丰富的调试工具&#xff0c;帮助开发者快速定位和解决代码中的问题。本文…...

Web PKI现行应用、标准

中国现行 Web PKI 标准 中国在 Web PKI&#xff08;公钥基础设施&#xff09;领域制定了多项国家标准&#xff0c;以确保网络安全和数字证书管理的规范性。以下是一些现行的重要标准&#xff1a; 1. GB/T 21053-2023《信息安全技术 公钥基础设施 PKI系统安全技术要求》 该标…...

ROS多机通信(四)——Ubuntu 网卡 Mesh 模式配置指南

引言 使用Ad-hoc加路由协议和直接Mesh模式配置网卡实现的网络结构是一样的&#xff0c;主要是看应用选择&#xff0c; Ad-Hoc模式 B.A.T.M.A.N. / OLSR 优点&#xff1a;灵活性高&#xff0c;适合移动性强或需要优化的复杂网络。 缺点&#xff1a;配置复杂&#xff0c;需手动…...

【实用部署教程】olmOCR智能PDF文本提取系统:从安装到可视化界面实现

文章目录 引言系统要求1. 环境准备&#xff1a;安装Miniconda激活环境 2. 配置pip源加速下载3. 配置学术加速&#xff08;访问国外资源&#xff09;4. 安装系统依赖5. 安装OLMOCR6. 运行OLMOCR处理PDF文档7. 理解OLMOCR输出结果9. 可视化UI界面9.1 安装界面依赖9.2 创建界面应用…...

STM32单片机uCOS-Ⅲ系统11 中断管理

目录 一、异常与中断的基本概念 1、中断的介绍 2、和中断相关的名词解释 二、中断的运作机制 三、中断延迟的概念 四、中断的应用场景 五、中断管理讲解 六、中断延迟发布 1、中断延迟发布的概念 2、中断队列控制块 3、中断延迟发布任务初始化 OS_IntQTaskInit() 4…...

CTF【WEB】学习笔记1号刊

Kali的小工具箱 curl www.xxx.com&#xff1a;查看服务器响应返回的信息 curl -I www.xxx.com:查看响应的文件头 一、cmd执行命令 ipconfig&#xff1a;ip地址配置等&#xff1b; 二、 Kali操作 1.sudo su&#xff1b; 2.msfconsole 3.search ms17_010 永恒之蓝&#xff…...

cpp-友元

理解 C 中的友元&#xff08;Friend&#xff09; 在 C 语言中&#xff0c;封装&#xff08;Encapsulation&#xff09; 是面向对象编程的重要特性之一。它允许类将数据隐藏在私有&#xff08;private&#xff09;或受保护&#xff08;protected&#xff09;成员中&#xff0c;…...

Spring AOP 核心概念与实践指南

第一章&#xff1a;AOP 核心概念与基础应用 1.1 AOP 核心思想 ​面向切面编程&#xff1a;通过横向抽取机制解决代码重复问题&#xff08;如日志、事务、安全等&#xff09;​核心优势&#xff1a;不修改源代码增强功能&#xff0c;提高代码复用性和可维护性 1.2 基础环境搭…...

利用ffmpeg库实现音频Opus编解码

一、编译与环境配置 ‌libopus库集成‌ 需在编译FFmpeg时添加--enable-libopus参数&#xff0c;编译前需先安装libopus源码并配置动态库路径‌。最新FFmpeg 7.1版本默认支持Opus的浮点运算优化和VBR/CVBR模式‌。 ‌多平台兼容性‌ Opus支持Windows/Linux/macOS平台&#xff0…...

深入理解指针(1)(C语言版)

文章目录 前言一、内存和地址1.1 内存1.2 究竟该如何理解编址 二、指针变量和地址2.1 取地址操作符&2.2 指针变量和解引用操作符*2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针-整数3.3 voi…...

计算机网络——通信基础和传输介质

物理层任务&#xff1a;实现相邻节点之间比特&#xff08;0或1&#xff09;的传输 到了数据链路层之后&#xff0c;它会以帧为单位&#xff0c;把若干个比特交给物理层&#xff0c;物理层需要把这些比特信息转化成信号&#xff0c;在物理传输媒体上进行传输 通信基础基本概念 信…...

【橘子网络】关于网络分层以及协议的全局讲解

一、网络设备 1、硬件网络设备 1.1、主机(host) 主机的定义比较广泛&#xff0c;所有的接收流量或者发送流量的设备都可以被称之为主机。可以是电脑&#xff0c;手机&#xff0c;服务器。在当今云服务大行其道的局面下&#xff0c;各种云设备也可以被称之为主机。 基于这个…...