Deepseek技术浅析(二):大语言模型

DeepSeek 作为一家致力于人工智能技术研发的公司,其大语言模型(LLM)在架构创新、参数规模扩展以及训练方法优化等方面都达到了行业领先水平。

一、基于 Transformer 架构的创新

1.1 基础架构:Transformer 的回顾

Transformer 架构是当前最先进的大语言模型架构,其核心机制是自注意力机制(Self-Attention Mechanism),能够有效捕捉序列中长距离的依赖关系。以下是 Transformer 的主要组件及其工作原理:

(1) 编码器(Encoder)

  • 多头自注意力机制(Multi-Head Self-Attention):

    • 目的: 捕捉输入序列中不同位置之间的依赖关系。
    • 工作原理:
      • 将输入向量 xx 分别线性变换为查询(Query, Q)、键(Key, K)和值(Value, V)矩阵:

        其中,W_{Q},W_{K},W_{V}​ 是可训练的权重矩阵。
      • 计算注意力权重:

        其中,d_{k}​ 是键的维度,用于缩放注意力权重,防止梯度消失。
      • 多头机制: 将输入向量分割成多个头(head),每个头独立计算注意力,然后将多个头的输出拼接起来,并通过线性变换得到最终输出。
  • 前馈神经网络(Feed-Forward Neural Network, FFN):

    • 对每个位置的表示进行非线性变换。
    • 通常由两个线性变换和一个激活函数(如 ReLU)组成:

      其中,W_{1},W_{2},b_{1},b_{2}​ 是可训练的参数。

(2) 解码器(Decoder)

  • 除了多头自注意力机制和前馈神经网络外,解码器还包含一个编码器-解码器注意力机制(Encoder-Decoder Attention),用于捕捉编码器输出与解码器输入之间的关系。
  • 在训练过程中,使用**掩码(Masking)**机制,防止模型在预测当前词时看到未来的词。
1.2 DeepSeek 的创新与改进

DeepSeek 在 Transformer 基础上进行了多项创新和改进,以提升模型性能、效率和可扩展性。

(1) 稀疏注意力机制(Sparse Attention Mechanisms)

  • 问题: 传统的自注意力机制计算复杂度为 O(n2)O(n2),其中 nn 是序列长度。当处理长序列时,计算量和内存需求会急剧增加。
  • 解决方案:

    • 局部注意力(Local Attention):

      • 原理: 只计算相邻位置的注意力权重,例如只计算每个位置与前后 kk 个位置的注意力。
      • 公式表示:

        其中,K_{local},V_{local} 是局部键和值矩阵。
      • 优点: 降低计算复杂度,适用于局部依赖性强的任务。
      • 缺点: 无法捕捉长距离依赖关系。
    • 块状注意力(Blockwise Attention):

      • 原理: 将序列划分为多个块,只计算块内和块间部分位置的注意力权重。
      • 优点: 在一定程度上保留长距离依赖关系,同时降低计算复杂度。
      • 缺点: 块间信息传递效率较低。
    • 随机注意力(Random Attention):

      • 原理: 随机选择部分位置计算注意力权重。
      • 优点: 增加模型的多样性,可能捕捉到一些意想不到的依赖关系。
      • 缺点: 随机性可能导致模型不稳定。
    • 组合策略:

      • DeepSeek 采用多种稀疏注意力机制的组合,例如:
        • 局部 + 块状: 先使用局部注意力捕捉局部依赖关系,再使用块状注意力捕捉长距离依赖关系。
        • 局部 + 随机: 在局部注意力的基础上,添加随机注意力,增加模型的多样性。
  • 优势:

    • 显著降低计算复杂度和内存需求。
    • 在保持模型性能的同时,提高训练和推理效率。

(2) 混合专家模型(Mixture of Experts, MoE)

  • 问题: 大规模模型参数数量庞大,但并非所有参数在所有任务或输入上都发挥作用,导致计算资源浪费。
  • 解决方案:

    • 专家网络(Expert Networks):

      • DeepSeek 将模型划分为多个专家子模型,每个专家网络是一个独立的神经网络,可以是前馈神经网络、注意力机制等。
      • 每个专家网络可以专注于不同的任务或领域,例如:
        • 语言专家: 处理语言相关的任务。
        • 知识专家: 存储和利用知识库信息。
        • 推理专家: 执行推理任务。
    • 门控网络(Gating Network):

      • 根据输入内容,动态选择激活哪些专家网络。
      • 公式表示:

        其中,W_{g},b_{g}​ 是门控网络的参数。
      • 作用: 根据输入的不同,分配不同的计算资源给不同的专家网络。
    • 输出组合:

      • 将激活的专家网络的输出进行加权组合,得到最终输出。
      • 公式表示:

        其中,N 是专家网络的数量,\textrm{Expert}_{i}\left ( x \right )是第 i 个专家网络的输出。
  • 优势:

    • 提高模型的参数利用率和计算效率。
    • 允许模型根据不同的输入动态调整其行为,提高模型的灵活性和适应性。

(3) 多头潜在注意力(Multi-Head Latent Attention, MLA)

  • 问题: 在推理过程中,注意力机制的计算量仍然较大,尤其是当模型规模较大时。
  • 解决方案:

    • 低秩分解:

      • 将键和值矩阵分解为低秩矩阵,从而减少存储和计算需求。
      • 公式表示:

        其中,U_{K},U_{V}​ 是低秩矩阵,S_{K},S_{V}​ 是压缩矩阵。
    • 联合压缩:

      • 对压缩后的键和值矩阵进行联合压缩,进一步减少存储需求。
    • 潜在注意力计算:

      • 在压缩后的表示上进行注意力计算。
      • 公式表示:

  • 优势:

    • 显著降低推理过程中的内存占用。
    • 保持模型性能的同时,提高推理效率。

二、更大规模的参数

2.1 参数规模

DeepSeek 的 LLM 拥有数百亿到数千亿参数,例如:

  • DeepSeek-V3: 拥有 6710 亿参数。
  • DeepSeek-LLM: 在 2 万亿 token 的数据集上进行训练。
  • DeepSeek-V2: 在 8.1 万亿 token 的多样化语料库上预训练。
2.2 关键技术

(1) 分布式训练

  • 数据并行:

    • 将训练数据分配到多个计算节点上,每个节点独立计算梯度,最后进行梯度聚合和参数更新。
    • 优点: 提高数据吞吐量,加快训练速度。
  • 模型并行:

    • 将模型参数分配到多个计算节点上,每个节点负责计算模型的一部分参数。
    • 优点: 解决单个节点的显存限制问题,支持训练更大规模的模型。
  • 流水线并行:

    • 将模型的不同层分配到不同的计算节点上,实现流水线式的并行计算。
    • 优点: 提高计算资源利用率,减少计算等待时间。

(2) 混合精度训练

  • 半精度浮点数:

    • 使用半精度(FP16)浮点数表示模型参数和梯度。
    • 优点: 减少显存占用和计算量。
  • 损失缩放:

    • 对损失值进行缩放,以避免梯度消失。
    • 原理: 半精度浮点数表示范围有限,损失缩放可以防止梯度值过小,导致梯度消失。

(3) 混合专家模型(MoE)

  • 作用: 通过 MoE 架构,DeepSeek 可以有效管理大规模参数,避免计算资源浪费。
  • 具体实现:
    • 每个 token 仅激活部分专家网络,而不是所有专家网络。
    • 例如,DeepSeek-V3 的每个 token 仅激活 370 亿参数,而不是全部 6710 亿参数。

(4) 模型压缩与剪枝

  • 权重共享(Weight Sharing):

    • 共享模型参数,例如在 Transformer 中共享参数矩阵。
    • 优点: 减少参数数量,降低存储和计算需求。
  • 剪枝(Pruning):

    • 删除模型中不重要的参数或神经元,例如:
      • 权重剪枝: 删除权重值较小的参数。
      • 神经元剪枝: 删除激活值较低的神经元。
    • 优点: 进一步减少参数数量,提高模型效率。

三、过程模型公式

3.1 稀疏注意力机制
  • 局部注意力:

  • 块状注意力:

  • 随机注意力:

  • 组合策略:

    其中,\alpha ,\beta ,\gamma 是权重系数。

3.2 混合专家模型(MoE)
  • 门控网络:

  • 专家网络输出:

  • 最终输出:

3.3 多头潜在注意力(MLA)
  • 低秩分解:

  • 潜在注意力计算:

四、训练方法

4.1 预训练
  • 目标: 让模型学习语言的通用表示和知识。
  • 方法: 使用海量的文本数据进行训练,模型通过预测文本序列中的下一个词或字符来学习语言模式。
  • 数据: 包含互联网上的各种文本数据,如书籍、文章、网页等。
  • 训练目标: 例如,**掩码语言模型(Masked Language Model, MLM)**任务,即随机遮蔽文本中的部分词,让模型预测被遮蔽的词。
4.2 监督微调
  • 目标: 针对特定任务或应用场景,对预训练模型进行微调。
  • 方法: 使用特定任务的数据集对模型进行训练,例如:
    • 文本分类: 对文本进行分类,例如情感分析、主题分类等。
    • 问答系统: 根据用户的问题生成相应的答案。
    • 机器翻译: 将一种语言翻译成另一种语言。
  • 训练目标: 根据具体任务设计相应的损失函数,例如交叉熵损失(Cross-Entropy Loss)。
4.3 人类反馈的强化学习
  • 目标: 利用人类反馈信息,进一步优化模型输出。
  • 方法: 将人类对模型输出的反馈作为奖励信号,使用强化学习算法调整模型参数。
  • 优势: 使模型生成的结果更符合人类的期望和需求,提高模型的质量和实用性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

13JavaWeb——SpringBootWeb之事务AOP

1. 事务管理 1.1 事务回顾 在数据库阶段我们已学习过事务了,我们讲到: 事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功&am…

Hive:struct数据类型,内置函数(日期,字符串,类型转换,数学)

struct STRUCT(结构体)是一种复合数据类型,它允许你将多个字段组合成一个单一的值, 常用于处理嵌套数据,例如当你需要在一个表中存储有关另一个实体的信息时。你可以使用 STRUCT 函数来创建一个结构体。STRUCT 函数接受多个参数&…

【Redis】List 类型的介绍和常用命令

1. 介绍 Redis 中的 list 相当于顺序表,并且内部更接近于“双端队列”,所以也支持头插和尾插的操作,可以当做队列或者栈来使用,同时也存在下标的概念,不过和 Java 中的下标不同,Redis 支持负数下标&#x…

鸢尾花书01---基本介绍和Jupyterlab的上手

文章目录 1.致谢和推荐2.py和.ipynb区别3.Jupyterlab的上手3.1入口3.2页面展示3.3相关键介绍3.4代码的运行3.5重命名3.6latex和markdown说明 1.致谢和推荐 这个系列是关于一套书籍,结合了python和数学,机器学习等等相关的理论,总结的7本书籍…

【unity游戏开发之InputSystem——06】PlayerInputManager组件实现本地多屏的游戏(基于unity6开发介绍)

文章目录 PlayerInputManager 简介1、PlayerInputManager 的作用2、主要功能一、PlayerInputManager组件参数1、Notification Behavior 通知行为2、Join Behavior:玩家加入的行为3、Player Prefab 玩家预制件4、Joining Enabled By Default 默认启用加入5、Limit Number Of Pl…

[C语言日寄] 源码、补码、反码介绍

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

记录 | 基于Docker Desktop的MaxKB安装

目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章:如何利用智谱全模态免费模型,生成大家都喜欢的图、文、视并茂的文章! MaxKB的Github下载地址 参考视频:【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…

元宇宙下的Facebook:虚拟现实与社交的结合

随着科技的不断进步,虚拟现实(VR)技术逐渐从科幻走入现实,成为人们探索未来社交方式的重要工具。在这一浪潮中,Facebook(现为Meta)作为全球领先的社交平台,正在积极布局虚拟现实和元…

DeepSeek-R1 本地部署模型流程

DeepSeek-R1 本地部署模型流程 ***************************************************** 环境准备 操作系统:Windows11 内存:32GB RAM 存储:预留 300GB 可用空间 显存: 16G 网络: 100M带宽 ********************************************…

实验三---基于MATLAB的二阶系统动态性能分析---自动控制原理实验课

一 实验目的 1、观察学习二阶控制系统的单位阶跃响应、脉冲响应 2、记录单位阶跃响应曲线、脉冲响应曲线 3、掌握时间响应分析的一般方法 4、掌握系统阶跃响应曲线与传递函数参数的对应关系 二 实验仪器 计算机 MATLAB软件 三 实验内容及步骤 1、作以下二阶系统的单位阶跃响应…

爬虫基础(一)HTTP协议 :请求与响应

前言 爬虫需要基础知识,HTTP协议只是个开始,除此之外还有很多,我们慢慢来记录。 今天的HTTP协议,会有助于我们更好的了解网络。 一、什么是HTTP协议 (1)定义 HTTP(超文本传输协议&#xff…

ZZNUOJ(C/C++)基础练习1011——1020(详解版)

1011 : 圆柱体表面积 题目描述 输入圆柱体的底面半径r和高h,计算圆柱体的表面积并输出到屏幕上。要求定义圆周率为如下宏常量 #define PI 3.14159 输入 输入两个实数,表示圆柱体的底面半径r和高h。 输出 输出一个实数,即圆柱体的表面积&…

【电工基础】2.低压带电作业定义,范围,工作要求,电工基本工具

一。低压带电作业 1.低压带电作业定义 低压带电作业是指在不停电的低压设备或低压线路上的工作。对于一些可以不停电的工作,没有偶然触及带电部分的危险工作,或作业人员使用绝缘辅助安全用具直接接触带电体及在带电设备外壳上的工作,均可进行…

SpringSecurity:There is no PasswordEncoder mapped for the id “null“

文章目录 一、情景说明二、分析三、解决 一、情景说明 在整合SpringSecurity功能的时候 我先是去实现认证功能 也就是,去数据库比对用户名和密码 相关的类: UserDetailsServiceImpl implements UserDetailsService 用于SpringSecurity查询数据库 Logi…

如何解压rar格式文件?8种方法(Win/Mac/手机/网页端)

RAR 文件是一种常见的压缩文件格式,由尤金・罗谢尔(Eugene Roshal)开发,因其扩展名 “rar” 而得名。它通过特定算法将一个或多个文件、文件夹进行压缩,大幅减小存储空间,方便数据传输与备份。然而&#xf…

锁升级过程与优化操作

前文我们学习了CAS自旋锁知道CAS对应的就是一条指令操作,属于一种轻量级锁,那么有轻必有重,从无锁到轻量级锁到重量级锁是一个升级过程,此文我们对锁升级的过程以及一些优化锁的操作一探究竟。 1. 锁升级 从前文 《程序员不可能不…

IoTDB 2025 春节值班与祝福

2025 春节快乐 瑞蛇迎吉庆,祥光映华年,2025 春节已近在眼前。社区祝福 IoTDB 的所有关注者、支持者、使用者 2025 新年快乐,“蛇”来运转! IoTDB 团队的春节放假时间为 2025 年 1 月 27 日至 2 月 4 日,1 月 25 日、26…

neo4j-community-5.26.0 install in window10

在住处电脑重新配置一下neo4j, 1.先至官方下载 Neo4j Desktop Download | Free Graph Database Download Neo4j Deployment Center - Graph Database & Analytics 2.配置java jdk jdk 21 官网下载 Java Downloads | Oracle 中国 path: 4.查看java -version 版本 5.n…

matlab中,fill命令用法

在 MATLAB 中,fill 命令用于创建填充多边形的图形对象。使用 fill 可以在二维坐标系中绘制填充的区域,通常用于绘制图形的背景或显示数据分布。 基本语法 fill(X, Y, C)X 和 Y 是同样长度的向量,定义了多边形的顶点坐标。C 是颜色&#xff0…

ThinkPHP 8 操作JSON数据

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…