本文是对deekseek的一个总结。作为参考文档。
1. Deekseek的一些介绍
1.1 PTX (Parallel thread execution)
Parallel thread execution,PTX 是CUDA的一部分。关系图如下:
目前,deepseek的训练还是绕不过PTX模块,因为PTX是CUDA的一个组件,所以,Deepseek的训练还是要用英伟达的GPU芯片。
1.2 个例不是常规
deepseek 成为国人的骄傲,但我们还需保持冷静。不管怎么样,我们既不能妄自菲薄,也不要过于自信。 deepseek不是我们制度的产物,因为deepseek不是出自于我们的举国体制中科院。deepseek的产生目前还是个例,不是一种常规。美国依然保持对中国在AI领域的绝对领先。
1.3 deepseek 的特色
Deepseek 的几大创新点,使得deepseek 训练和推理都非常高效。 比如 MoE,MTP,MLA算子。。。我们一一介绍。
1.3.1 MoE(Mixture of Expert)
MoE:(Mixture of Expert)大白话就是模块的专业性,不是一个模块做所有的事,就如全栈工程师。 而是术业有专攻,每个模块有专门的,特定的任务。路由模块路由数据给专业模块。
1.3.2 MTP (Multi-Token Prediction)
MTP:(Multi-Token Prediction)传统的大型语言模型(如GPT、LLaMA等)通常采用“下一个token预测”作为训练目标,即每次只预测文本序列中的下一个词。这种方法虽然有效,但训练效率相对较低。MTP允许模型在一次前向传播中预测多个未来的token,而不是仅仅预测下一个token。这灵感来源于人类在理解语言时,通常会考虑多个词之间的关系,而不是只关注单个词。能够显著提升模型的推理速度并降低成本。
1.3.3. MLA 算子(Multi-head Latent Attention)
MLA算子的支持:(Multi-head Latent Attention)在DeepSeek模型中,MLA算子就像是一个聪明的速记员,它学会了如何只关注文章中的核心信息,也就是“潜在向量”,从而大幅减少了需要处理的数据量。
MLA算子就像是一个智能的过滤器,帮助模型从大量的输入数据中筛选出最重要的信息,从而提高了模型的效率和性能。具体来说,MLA通过低秩压缩技术,将高维的键值(Key-Value)矩阵投影到低维的潜在空间中,生成压缩的潜在向量。这些潜在向量在推理阶段被缓存和使用,从而大幅减少了所需的显存容量和计算复杂度。
1.3.4 deep EP (Expert Parallelism)
DeepSeek中的DeepEP是一种专为MoE(专家混合)模型训练和推理打造的开源EP(Expert Parallelism,专家并行)通信库。以下是关于DeepEP的详细介绍:
一、技术特点
-
高效优化的全对全(all-to-all)通信:DeepEP能够实现专家之间的高效数据交换,这对于提高MoE模型的训练和推理速度至关重要。
-
支持节点内和节点间通信:DeepEP兼容NVLink【1】和RDMA【2】等高速通信协议,能够在不同的硬件架构上实现高效的通信。
-
高吞吐率与低延迟计算核:针对训练和推理的不同阶段,DeepEP提供了高吞吐率的预填充计算核和低延迟的推理解码计算核,以满足不同的性能需求。
-
原生支持FP8数据调度:DeepEP支持低精度计算操作,如FP8,这有助于减少内存占用和计算开销,提高能效比。
-
灵活的GPU资源控制:DeepEP能够实现计算与通信的重叠处理,从而充分利用GPU资源,提高整体性能。
二、应用场景
DeepEP主要应用于MoE模型的训练和推理过程中,特别是在需要高效通信和大规模并行计算的场景下。通过优化专家之间的数据交换,DeepEP能够显著提高MoE模型的训练和推理速度,降低计算资源消耗。
三、技术意义
DeepEP的推出标志着在MoE模型通信效率优化方面取得了重要进展。它不仅能够提高MoE模型的训练和推理速度,还能够降低计算资源消耗,为大规模AI应用的发展提供了有力支持。同时,DeepEP的开源特性也有助于推动AI技术的普及和发展,促进技术创新和产业升级。
总之,DeepEP是一种高效、灵活、支持低精度计算的MoE模型通信库,对于推动AI技术的发展和应用具有重要意义。
1.3.5 DeepGEMM
DeepSeek的DeepGEMM技术,简单来说,就是一个专门为NVIDIA的Hopper架构GPU优化的矩阵乘法库【1】。它就像是一个超高效的计算工具,专门用于大模型中最常见的数学运算:矩阵乘法。
DeepGEMM有几个特别厉害的地方:
-
它很快:在Hopper GPU上,DeepGEMM能飙出1350+ FP8 TFLOPS的惊人速度。这意味着它能在很短的时间内完成大量的计算任务。
-
它很省:DeepGEMM使用了FP8(8位浮点数)格式进行计算,这种格式可以大大减少内存的使用,同时提高计算速度。虽然精度会降低一些,但DeepGEMM通过精细的技术解决了这个问题,让计算既快又准。
-
它很简单:DeepGEMM的核心逻辑只有约300行代码,设计得非常简洁。这使得它很容易学习和使用,不像其他一些复杂的库那样让人头疼。
-
它很灵活:DeepGEMM采用了即时编译技术,这意味着它不需要在安装时进行编译,而是在实际运行时进行编译。这使得它能够根据当前的任务自动选择最佳的参数配置,从而提高性能。
DeepGEMM还针对混合专家模型(MoE)进行了优化,提供了两种特殊的数据排列方式:连续排列和掩码排列。这两种排列方式分别适用于训练和批量推理阶段以及实时推理阶段,能够进一步提高计算效率。
总的来说,DeepGEMM就像是一个专为Hopper【2】架构GPU打造的“计算加速器”,它让矩阵乘法运算变得更快、更省、更简单、更灵活。
1.3.6 Dual Pipe
-
简介:DualPipe是一种创新的双向流水线并行(Pipeline Parallelism)算法,首次在DeepSeek-V3技术报告中提出。该算法能够实现前向/后向计算与通信阶段的完全重叠,可显著减少流水线空泡(Pipeline Bubbles)。
-
作用:
通过重叠计算与通信阶段来提升训练效率。当一个GPU忙于处理数据时,另一个则负责传输信息,从而保持所有设备的高效运转,减少闲置时间,加速整体流程。
在跨节点通信中表现出色,解决了多台机器(节点)间训练时相互通信可能成为瓶颈的问题。
1.3.7 EPLB (Expert Parallelism Load Balancer)
-
简介:EPLB是DeepSeek-V3训练框架中实际使用的专家并行负载均衡算法。该算法基于对专家负载的估算,计算出一个平衡的专家复制和分配方案。
-
作用:
专门用于AI模型中专家并行的负载平衡,确保混合专家模型中计算负载均匀分布,降低通信开销。
- 注意:
开源代码库不包含专家负载预测的确切方法,常规方法是使用历史统计数据的移动平均值来预测。
1.3.8 Profile-data(DeepSeek Infra中的性能分析数据)
-
简介:为了帮助开发者更深入地了解通信-计算策略以及底层技术细节,DeepSeek选择开源其训练和推理框架中收集的性能分析数据。
-
作用:
这些数据是通过PyTorch Profiler采集的,开发者下载后可直接在Chrome浏览器(chrome://tracing)或Edge浏览器(edge://tracing)中进行可视化分析,从而优化训练效率。
DeepSeek开源的DualPipe、EPLB和Profile-data这三个技术创新项目,它们都聚焦于优化并行策略,旨在通过并行策略最大化计算资源的利用效率,从而加快模型训练的速度,降低计算成本。
1.3.9 Fire-Flyer文件系统(3FS)
-
是什么:3FS就像一个超级高效的数据仓库,专门为处理大量数据和快速访问数据而设计。它特别适用于需要处理大量数据的人工智能(AI)和高性能计算(HPC)任务。
-
特点:
· 读取速度快:在180个节点(可以理解为180个数据处理单元)组成的集群中,3FS的总读取吞吐量达到了惊人的6.6 TiB/s(相当于每秒可以读取6.6万亿字节的数据),这远远超过了传统的数据存储解决方案。
· 数据一致性好:确保了在分布式环境中,即使数据分散在不同的地方,也能保持一致性和准确性。
· 灵活可扩展:随着数据量的增加,3FS可以轻松扩展,满足不断增长的数据存储需求。
· KVCache功能强大:在每个数据处理单元上,都有一个叫做KVCache的功能,它的峰值吞吐量超过40 GiB/s,这意味着在需要快速查找或推理数据时,可以迅速得到结果。
-
用途:3FS可以用于AI训练、数据处理、检查点存储、向量搜索等多个环节,为AI和高性能计算任务提供稳定的数据支持。
1.3.10 Smallpond数据处理框架
-
是什么:Smallpond是一个与3FS配套使用的数据处理框架,它进一步优化了3FS的数据处理能力。
-
特点:
· 轻量化PB级数据处理:Smallpond能够处理海量的数据,即使数据量达到PB(拍字节)级别,也能轻松应对。
· 无服务化数据工程:依托DuckDB【3】技术,实现了无需复杂服务配置的数据工程,简化了数据处理流程。
· 与3FS协同工作:与3FS一起,形成了一个从存储到计算的完整生态闭环,提升了数据处理的效率和灵活性。
- 用途:Smallpond框架适用于需要处理大量数据的场景,如大数据分析、AI训练等。它可以帮助开发者更高效地管理和处理数据,提升工作效率。
总的来说,Deepseek的这两项创新技3FS,SmallPond技术,都是针对大数据处理和AI训练而设计的。它们通过提升数据访问速度、优化数据处理流程等方式,为AI和高性能计算领域提供了更强大的支持。
1.4 deepseek 未来趋势
未来,Sparse-Attention 是否会被采用?会不会有其他创新降低训练和推理成本?
1.4.1 NSA
NSA:即用稀疏注意力机制(Native Sparse-attention)来读全文。 这个创新机制可以阅读长文。
NSA算法是DeepSeek最近提出的,全称是Native Sparse Attention(原生稀疏注意力)。这个算法主要解决的是传统注意力机制在处理长文本时计算量过大的问题。
传统方法在处理长序列时,每个词都要和其他所有词计算关联,导致计算复杂度非常高。比如处理64k长度的文本时,资源消耗会非常大,就像读一本500页的小说,如果每读一页都要回忆前面所有页的内容,人很快就会感到疲惫不堪,机器也是这样。
而NSA算法通过引入稀疏性来减少不必要的计算,同时保持模型性能。它的核心创新点包括三个处理路径:压缩(Compression)、选择性保留(Selection)和滑动窗口(Sliding Window)。
-
压缩:类似于将多个段落合并成一个块,减少处理的数量。可以理解为把长文本按段落切块,每块总结成一句话,快速抓住全局框架,忽略细节。
-
选择性保留:评估这些块的重要性,只保留关键部分。就像是判断哪些段落更重要,只保留关键段落的具体细节,避免全盘记忆。
-
滑动窗口:关注当前正在读的部分和邻近段落,确保上下文连贯,不遗漏局部信息。这好比在读某一章节时,重点关注前几章提到的相关线索。
这三个步骤结合,既保留了全局信息,比如故事的主线,又减少了计算量,不用逐字分析所有内容。而且,NSA还针对硬件进行了优化,确保算法在现代GPU等硬件上高效运行。
在处理64k长度的文本时,NSA在解码、前向传播和反向传播上都有显著的速度提升。这样AI既能理解故事主线,处理长文本的效率又大幅提升,成本还降低了。
1.5 deepseek的意义
Deepseek的出现的意义如下:
-
打破算力的神话。 大大降低训练和推理的成本。但是,价格还不是那么低到中小企业都可以接受的地步。所以,后续,deepseek 还会继续降低算力的要求。
-
兼容更多GPU的厂家。 目前训练还离不开Nvidia(英伟达)的GPU,但推理已经可以用国产的GPU。但国产GPU的性价比赶不上英伟达的芯片。以华为昇腾NPU为例,因为不支持FP8精度,有以下的缺点:
A. 计算效率与能效比:FP8作为一种低精度数值表示方法,能够显著减少模型的内存占用和计算开销,同时提升推理速度和能效比。如果华为昇腾NPU不支持FP8,那么它在处理需要FP8精度的应用时,可能无法充分发挥出低精度计算的优势,从而导致计算效率相对较低,能效比也不如支持FP8的GPU。
B. 应用场景受限:随着AI技术的不断发展,越来越多的应用场景开始采用FP8等低精度计算来优化性能和能效。如果华为昇腾NPU不支持FP8,那么它将无法在这些应用场景中发挥出最佳性能,从而限制了其应用范围和市场竞争力。
C. 硬件成本相对较高:为了达到与支持FP8的GPU相同的性能水平,华为昇腾NPU可能需要采用更多的硬件资源或者更复杂的算法来实现,这将导致其硬件成本相对较高。而性价比是用户在选择GPU时考虑的重要因素之一,因此不支持FP8可能会降低华为昇腾NPU在市场上的竞争力。
综上所述,华为昇腾NPU不支持FP8可能会对其性价比产生一定的负面影响。
- 因为开源,技术平权,不同国际云提供商都可以部署deepseek,造福各行各业。
2. 参考
【1】NvLink 介绍
简单来说,就是一种高速的数据传输“桥梁”,它专门设计用于连接GPU(图形处理器)与GPU之间,以及GPU与CPU(中央处理器)之间,实现它们之间的高效、快速的数据和控制传输。下面我详细介绍这项技术。
一、Nvlink技术的基本概念
Nvlink,全称为NVIDIA NVLink,是英伟达公司开发并推出的一种高速总线及其通信协议。它就像是一条“高速公路”,让GPU和CPU之间的数据传输变得更加快捷和高效。与传统的PCIe(外设组件互连标准)相比,Nvlink提供了更高的带宽和更低的延迟,是PCIe的增强版或替代方案。
二、Nvlink技术的特点
- 高带宽:
· Nvlink能够提供极高的带宽,这意味着数据可以在GPU和CPU之间快速传输。
· 例如,最新的Nvlink 4.0技术,其连接主机和加速处理器的速度高达每秒900GB/s,是传统PCIe 5.0带宽的7倍多。
- 低延迟:
· Nvlink支持处理器和加速器之间的Atomic操作,这意味着它可以实现对共享数据的快速同步和高频率更新。
· 这有助于显著降低系统延迟,提高整体性能。
- 内存共享:
· 通过Nvlink,多个GPU可以共享内存地址空间,避免数据拷贝,简化了数据传输过程。
- 扩展性:
· Nvlink支持多GPU互联,可以形成高性能计算集群。
· 这使得它非常适合于需要大规模并行计算的任务,如深度学习、高性能计算等。
三、Nvlink技术的应用场景
- 高性能计算(HPC):
· 在超级计算机、数据中心等领域,Nvlink技术被广泛应用。
· 它能够实现更高效的数据处理和计算加速,推动科学研究、工程设计等领域的进步。
- 人工智能(AI):
· 在AI领域,Nvlink使得GPU能够更快地访问CPU的内存和数据。
· 这有助于加速深度学习、机器学习等任务的执行,提高训练大型神经网络、进行复杂数据分析等场景的效率。
- 图形渲染:
· 在游戏开发、动画制作等领域,Nvlink也有助于提升实时渲染和光线追踪效率。
四、Nvlink技术的未来发展
随着数据中心规模的不断扩大和技术的不断进步,Nvlink技术将继续发展。
· 它有望为高性能计算和人工智能等领域提供更加高效、可靠的解决方案。
· 英伟达也在不断探索Nvlink技术在其他领域的应用可能性,如车载计算平台等。
【2】RDMA(Remote Direct Memory Access)
RDMA(Remote Direct Memory Access),即远程直接内存访问,是一种非常高效的数据传输技术。下面我为您介绍这项技术。
一、RDMA的基本概念
想象一下,你有两台电脑,想要在它们之间传输数据。传统的方式是,数据先从一台电脑的内存中被复制到网络接口卡(网卡),然后通过网络发送到另一台电脑,再由另一台电脑的网卡将数据复制到它的内存中。这个过程需要多次数据复制和CPU的参与,效率相对较低。
而RDMA技术则不同,它允许数据直接在两台电脑的内存之间传输,无需经过双方电脑的操作系统和CPU的过多介入。这就像是在两台电脑之间建立了一条“直通道”,数据可以在这条通道上快速、高效地传输。
二、RDMA的工作原理
RDMA的工作原理主要依赖于网络适配器(如网卡)上的专用硬件,这些硬件具有RDMA引擎,能够处理RDMA通信。在RDMA通信中,发送端将待发送的数据缓冲区注册到RDMA适配器的内存中,并将其描述符(包含了数据的地址、大小等信息)发送给接收端。接收端也将接收缓冲区注册到RDMA适配器,并告知适配器接收缓冲区的地址。然后,发送端通过RDMA适配器将数据直接从发送缓冲区传输到接收缓冲区,而无需操作系统的干预。
这个过程减少了数据传输的延迟和CPU的负载,因为数据直接在内存之间传输,无需经过多次复制和CPU的处理。
三、RDMA的优势
-
高带宽与低延迟:由于RDMA绕过了操作系统提供的协议栈,直接在网络传输层之下进行数据传输,因此具有更高的带宽利用率和更低的延迟。这使得RDMA非常适合于需要高性能和低延迟的网络通信场景。
-
零拷贝:RDMA技术具有零拷贝的特点,避免了CPU将数据从一块存储拷贝到另外一块存储的过程。这减少了不必要的数据复制开销,提高了数据传输的效率。
-
无需CPU干预:RDMA技术的核心特点之一是无需CPU干预,应用程序可以直接访问远程主机内存而不消耗远程主机中的任何CPU资源。这进一步减少了数据传输过程中的延迟和CPU占用率。
-
支持大规模并行处理:RDMA的通信机制非常适合于大规模并行计算环境。它支持多个独立的通信流,可以在不同的计算节点之间实现高效的数据交换和同步。
四、RDMA的应用场景
RDMA技术在多个领域有着广泛的应用:
-
高性能计算(HPC):在高性能计算领域,RDMA可以大幅减少节点间的数据传输延迟,提高计算效率。它支持大规模并行处理,非常适合于HPC环境中的多节点并行计算。
-
数据中心:在数据中心环境中,服务器之间需要频繁地进行大量数据的传输和交换。RDMA的高性能与低延迟特性使得它非常适合于数据中心中的网络通信,可以提高数据传输效率,降低延迟。
-
分布式存储系统:在分布式存储系统中,节点之间需要频繁地进行数据读写操作。RDMA的高效数据传输和直接内存访问特性可以提高节点之间的数据读写效率。
-
云计算:在云计算环境中,虚拟机(VM)之间的通信和数据传输是常见的需求。RDMA可以用于实现VM之间的高效通信,提高云计算环境的整体性能。
五、RDMA的局限性
尽管RDMA技术具有诸多优势,但它也存在一些局限性:
-
硬件依赖:RDMA需要特定的网卡硬件支持,这些网卡通常比传统的以太网网卡更昂贵。此外,不是所有的操作系统和网络设备都支持RDMA。
-
安全性问题:由于RDMA允许远程节点直接访问本地内存,这可能会带来一些安全性问题。如果攻击者能够利用RDMA协议中的漏洞或配置错误,他们可能会获得对远程系统的不当访问权限。
-
编程复杂性:RDMA的编程模型与传统的网络编程模型有所不同,因此需要开发人员具有一定的专业知识和经验。
【3】矩阵相乘的算法
矩阵相乘的算法在机器学习中非常重要,主要因为它是许多机器学习算法和模型的核心计算操作,对机器学习大模型训练的效率有着直接影响,具体体现在以下几个方面:
核心计算操作
· 矩阵相乘可以用来表示多个线性变换的组合,是线性代数的基本概念之一。在机器学习领域,特别是深度学习中,神经网络的前向传播、后向传播、梯度下降等过程都涉及大量的矩阵相乘运算。
· 矩阵相乘也是卷积神经网络中卷积操作的基础,通过转化为矩阵乘法可以高效地进行计算。
影响训练效率
· 矩阵相乘的速度和效率直接影响AI算力的水平。如果矩阵相乘的速度提高,深度学习模型的训练和推理时间就会缩短,从而提高AI算力。
· 矩阵相乘在不同的硬件和软件平台上的实现方式有差异,优化矩阵相乘的算法和实现方式,如利用并行计算、分布式计算等技术,可以进一步提高计算效率。
广泛应用的场景
· 矩阵相乘在科学计算和工程实践中具有广泛的应用,如线性方程组求解、图像处理、信号处理、物理模拟等领域。在机器学习中,这些场景同样大量存在,因此矩阵相乘的重要性不言而喻。
总之,矩阵相乘的算法优化对于提高机器学习大模型训练的效率至关重要。随着硬件技术的不断发展和算法优化的深入研究,矩阵相乘的计算速度和效率将进一步提升,为机器学习的发展提供更强有力的支持。
【4】Hopper架构的英伟达
Hopper架构的GPU经典型号主要包括H100、H200以及H800。
- H100:
· 推出时间:2022年3月22日GTC技术大会上公布。
· 特点:专为AI训练和推理、HPC以及数据分析应用提供卓越性能,集成了800亿个晶体管,拥有Transformer引擎和高度可扩展的NVLink互连技术。与上一代产品相比,可将大型语言模型的速度提高惊人的30倍。
- H200:
· 推出时间:2023年11月13日正式宣布发布,是H100的升级版。
· 特点:拥有141GB的内存和4.8TB/秒的带宽,推理速度几乎达到了H100的两倍。提供了更高的性能和能效,主要面向中国市场。
- H800:
· 推出背景:2022年美国对华半导体出口管制规定的背景下推出,可以视为H100的中国特供版。
· 特点:在H100的基础上进行了一些调整,可能在功耗管理和价格定位方面有所不同,但同样具备强大的计算能力,适用于高性能计算和AI、云计算和数据中心等场景。deepseek-v3 就是2048块H800GPU芯片训练的。
这三款GPU型号各自具有独特的特点和优势,共同构成了英伟达(baike.baidu.com/item/NVIDIA…
【5】DuckDB 介绍
以下是以通俗易懂的方式对DuckDB的介绍:
一、DuckDB是什么?
DuckDB是一个嵌入式分析型数据库,你可以把它想象成一个专门为数据分析设计的“小助手”。它非常轻便,可以直接嵌入到你的应用程序中,与你的应用程序在同一进程中运行。
二、DuckDB的特点
- 轻量级且高效:
· DuckDB没有复杂的依赖关系,安装和部署都非常简单。
· 它针对数据分析进行了优化,所以处理数据非常快。
- 嵌入式数据库:
· 这意味着DuckDB与你的应用程序紧密结合,不需要单独安装或配置数据库服务器。
· 它直接在应用程序内部运行,减少了进程间通信的开销,提高了效率。
- 支持标准SQL:
· DuckDB支持标准的SQL查询语言,这意味着你可以使用熟悉的SQL语句来查询、聚合、连接和分析数据。
- 面向列存储:
· 与传统的面向行存储的数据库不同,DuckDB采用面向列的存储方式。
· 这使得它在处理大量数据时,只需要读取所需的列,而不是整个行,从而提高了查询效率。
- 向量化计算:
· DuckDB采用向量化计算方式,将查询操作转换为向量运算。
· 这进一步提升了查询执行速度,使得处理大规模数据更加高效。
- 跨平台兼容:
· DuckDB可以在Windows、Mac和Linux等多种操作系统上运行,兼容性非常好。
- 易于集成:
· DuckDB可以轻松地与Python、R等流行的数据分析编程语言集成。
· 这使得数据科学家和分析师能够更便捷地使用DuckDB来执行数据分析任务。
三、DuckDB的用途
DuckDB非常适合用于数据分析任务,特别是当你需要在单台机器上处理大量数据时。它的轻量级设计和高效性能使其成为数据科学家、研究人员和开发人员的理想选择。你可以使用DuckDB来加载数据、执行预处理步骤、运行分析查询等。
四、DuckDB的优势
- 高性能:
· DuckDB针对分析查询进行了高度优化,提供了类似于大规模并行处理(MPP)的数据处理和分析能力。
- 低成本:
· 由于它是开源的,并且没有复杂的依赖关系,所以使用DuckDB的成本非常低。
- 易部署:
· DuckDB的嵌入式特性使得它非常容易部署和集成到现有的应用程序中。
五、总结
DuckDB是一个轻量级、高效且易于使用的嵌入式分析型数据库。它支持标准SQL,可以无缝集成到Python、R等数据分析工具中。由于其高性能、低成本和易部署的特性,DuckDB在数据分析领域产生了显著影响,成为数据科学家和分析师们的得力助手。