刚刚,DeepSeek放出重磅论文!梁文锋亲自参与!

 Datawhale分享 

论文:梁文锋团队,编辑:AI寒武纪

就在马斯克发布grok3,sam altman 还在犹豫要不要开源时,刚刚梁文锋作为co-authors携deepseek研究团队丢出重磅研究论文成果,DeepSeek 发布了最新的研究成果——原生稀疏注意力(Native Sparse Attention, NSA)! 这项技术有望大幅提升下一代大语言模型处理长文本的能力,同时还能兼顾效率,可谓是 LLM 领域又一里程碑式的进展!

0ad12842828f2c80e4dfb309624f6df2.png

简单来说,论文的核心贡献如下:

LLM 长文本能力再突破!DeepSeek 发布原生稀疏注意力 NSA:硬件友好又高效,训推一体化!

废话不多说,我们一起来扒一扒这篇论文:

先了解一下论文的背景

近年来,我们见证了长文本建模在 AI 领域的重要性日益凸显。无论是深度推理、代码库生成、还是多轮对话,都离不开模型对长序列信息的有效处理能力。像 OpenAI 的 o-series 模型、DeepSeek-R1、以及 Google Gemini 1.5 Pro 等,都展现了处理超长文本的强大潜力。

然而,传统 Attention 机制的计算复杂度随着序列长度的增加而呈平方级增长,这成为了制约 LLM 发展的关键瓶颈。计算成本高昂,延迟成为问题, 如何在保证模型性能的同时,提升长文本处理的效率,成为了亟待解决的难题

稀疏注意力应运而生,它被认为是提升效率,同时维持模型能力的有希望的方向。DeepSeek 的 NSA 技术正是在这个方向上迈出了重要一步!

DeepSeek NSA:原生稀疏注意力,训推一体化,硬件友好

DeepSeek 提出的 NSA (Native Sparse Attention,原生稀疏注意力) 机制,巧妙地将算法创新与硬件优化相结合,旨在实现高效的长文本建模。

NSA 的核心亮点可以概括为以下两点:

1.动态分层稀疏策略: NSA 采用了一种动态分层的稀疏策略,结合了粗粒度的 Token 压缩 和 细粒度的 Token 选择。这种策略既能保证模型对全局上下文的感知,又能兼顾局部信息的精确性

2.两大关键创新:

算术强度平衡的算法设计与硬件优化: NSA 通过精巧的算法设计,并针对现代硬件进行了实现优化,显著提升了计算速度

端到端可训练: NSA 支持端到端训练,这意味着它不仅在推理阶段高效,还能减少预训练的计算量,同时不牺牲模型性能!

4ad9ea15f6c5c65afecdc499fe7e8cb0.png

💪 实验效果惊艳:性能不降反升,速度大幅提升!

实验结果令人振奋!如图 1 所示,在通用基准测试、长文本任务和指令推理方面,使用 NSA 预训练的模型性能不仅没有下降,反而超越了 Full Attention 模型!

更重要的是,在处理 64k 长度的序列时,NSA 在解码、前向传播和反向传播等各个阶段都实现了显著的速度提升,最高可达 11.6 倍! 这充分证明了 NSA 在模型生命周期各个阶段的效率优势

f6091c243a313b68f1705a297e89b547.png

🤔 现有稀疏注意力方法的局限性

论文也深入分析了现有稀疏注意力方法的局限性,主要体现在两个方面:

1.推理效率的“假象”: 很多方法虽然在理论上实现了稀疏计算,但在实际推理延迟方面提升有限。这主要是因为:

  • • 阶段限制的稀疏性: 例如,有些方法只在自回归解码时应用稀疏性,但在预填充阶段仍然需要大量计算

  • • 与先进 Attention 架构的不兼容性: 一些稀疏注意力方法难以适配像 MQA 和 GQA 这样的现代高效解码架构,导致内存访问瓶颈依然存在

2.可训练稀疏性的“神话”: 许多方法主要关注推理阶段的稀疏性,而忽略了训练阶段。这导致:

  • • 性能退化: 后验应用稀疏性可能导致模型偏离预训练的优化轨迹。

  • • 训练效率需求: 长序列训练对于提升模型能力至关重要,但现有方法在训练效率方面存在不足。

  • • 不可训练的组件: 一些方法引入了不可微的离散操作,阻碍了梯度传播,限制了模型学习最佳稀疏模式的能力。

  • • 反向传播效率低下: 一些理论上可训练的方法,在实际训练中效率低下,例如 Token 粒度的选择策略可能导致非连续的内存访问,影响硬件利用率。

🧩 NSA 的核心组件:分层稀疏,逐层优化

为了克服上述局限性,NSA 架构采用了分层 Token 建模,并通过三个并行的注意力分支处理输入序列:

  1. 1. 压缩注意力 (Compressed Attention): 处理粗粒度的模式,通过压缩 Token 块来捕获全局信息。

  2. 2. 选择注意力 (Selected Attention): 处理重要的 Token 块,选择性地保留细粒度的信息。

  3. 3. 滑动窗口注意力 (Sliding Window Attention): 处理局部上下文信息。

这三个分支的输出通过一个门控机制进行聚合。为了最大化效率,NSA 还专门设计了硬件优化的 Kernel

23bb2ae6ed4619cffb97889b260fb1ee.png

写在最后

DeepSeek 的 NSA 技术为长文本建模带来了新的突破。它不仅在性能上超越了传统的 Full Attention 模型,更在效率方面实现了显著的提升,尤其是在长序列场景下。NSA 的 硬件友好设计 和 训推一体化特性,使其在实际应用中更具优势,有望加速下一代 LLM 在长文本处理领域的应用落地。

这项研究无疑为稀疏注意力领域带来了新的思路和方向。未来,我们期待看到更多基于 NSA 技术的创新应用,共同推动 AI 技术的进步!

最后不得不在强调一下,梁文锋不仅是deepseek ceo,很明显他还在研究的最前沿参与研究,这是令我最震撼的,他不仅有管理能力,而且还真正的懂AI,deepseek前途无量

各路网友都在喊,这才是真正的OpenAI,😁

参考:

https://arxiv.org/pdf/2502.11089

图片一起“赞”三连

报错:CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:127 (message): Command failed: "C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe" -v Working Directory: D:/vcpkg/vcpkg/buildtrees/lapack-reference/x64-windows-rel/vcpkg-parallel-configure Error code: 1 See logs for more information: D:\vcpkg\vcpkg\buildtrees\lapack-reference\config-x64-windows-dbg-CMakeCache.txt.log D:\vcpkg\vcpkg\buildtrees\lapack-reference\config-x64-windows-rel-CMakeCache.txt.log D:\vcpkg\vcpkg\buildtrees\lapack-reference\config-x64-windows-out.log Call Stack (most recent call first): installed/x64-windows/share/vcpkg-cmake/vcpkg_cmake_configure.cmake:269 (vcpkg_execute_required_process) ports/lapack-reference/portfile.cmake:59 (vcpkg_cmake_configure) scripts/ports.cmake:203 (include) error: building lapack-reference:x64-windows failed with: BUILD_FAILED See https://learn.microsoft.com/vcpkg/troubleshoot/build-failures?WT.mc_id=vcpkg_inproduct_cli for more information. Elapsed time to handle lapack-reference:x64-windows: 1.5 s Please ensure you're using the latest port files with `git pull` and `vcpkg update`. Then check for known issues at: https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+lapack-reference You can submit a new issue at: https://github.com/microsoft/vcpkg/issues/new?title=[lapack-reference]+Build+error+on+x64-windows&body=Copy%20issue%20body%20from%20D%3A%2Fvcpkg%2Fvcpkg%2Finstalled%2Fvcpkg%2Fissue_body.md
03-19
<think>好的,我现在需要帮助用户解决在使用vcpkg构建lapack-reference时出现的CMake错误,特别是Ninja失败的问题。首先,我得回想一下用户提供的引用内容,看看有没有相关的解决经验。 用户之前提到了在编译Colmap时遇到gklib的问题,通过vcpkg安装对应的库解决[^1]。另外,处理brotli时因为缺少applocal.ps1文件,需要从GitHub补充[^2]。这说明用户在vcpkg使用中常遇到依赖缺失或脚本文件不全的情况,可能需要类似的思路来解决lapack-reference的问题。 首先,我应该建议用户更新vcpkg,确保所有包都是最新的,避免已知的构建问题。然后,安装lapack-reference需要的依赖,比如Fortran编译器和CMake工具,用户可能需要安装gfortran或Intel Fortran,同时检查是否安装了CMake和Ninja。这里可以引用用户之前处理gklib的经验,安装必要的依赖库。 接下来,查看具体的CMake错误日志是关键。用户需要检查vcpkg的日志文件,通常在buildtrees/lapack-reference目录下。根据错误信息,可能需要调整CMake参数,比如设置BUILD_SHARED_LIBS来指定静态或动态库,或者关闭不必要的功能减少依赖。例如,用户可能在配置时遇到某些组件缺失,关闭它们可以避免错误。 另外,用户可能缺少某些系统级的库,比如BLAS或LAPACK本身,这时候需要安装像libblas-dev或liblapack-dev这样的包。如果问题依然存在,手动应用补丁或从GitHub获取最新源码可能有效,类似于之前处理applocal.ps1缺失的做法。 最后,如果所有方法都失败,建议用户到vcpkg的GitHub仓库提交Issue,提供详细的错误日志和环境信息,这样社区可以更快地帮助解决问题。同时,确保用户的环境变量正确,特别是涉及Fortran编译器的路径,这可能影响构建过程。 总结下来,解决步骤应该是:更新工具链→安装依赖→检查日志→调整配置→安装系统库→手动修补→寻求社区帮助。每一步都需要用户具体操作,并参考之前的成功经验来排除类似问题。</think>以下是针对vcpkg构建`lapack-reference`时出现CMake/Ninja错误的逐步排查与解决方案: --- ### **1. 更新vcpkg及工具链** - 更新vcpkg至最新版本: ```bash git pull origin master ./bootstrap-vcpkg.sh ``` - 确保已安装CMake、Ninja和Visual Studio的C++开发工具[^1]。 --- ### **2. 安装Fortran编译器依赖** LAPACK需要Fortran编译器支持。若未安装: - **Windows**:通过Visual Studio安装Intel Fortran或MinGW-w64的gfortran。 - **Linux/macOS**: ```bash # Ubuntu/Debian sudo apt-get install gfortran # macOS (通过Homebrew) brew install gcc ``` --- ### **3. 检查错误日志定位问题** - 查看详细构建日志: ```bash vcpkg install lapack-reference:x64-windows --debug ``` 日志路径:`vcpkg/buildtrees/lapack-reference/install-x64-windows-dbg-out.log`[^2]。 --- ### **4. 常见错误与修复** #### **场景1:CMake配置失败** - **错误示例**:`Could NOT find BLAS (missing: BLAS_LIBRARIES)` **修复**:安装系统级BLAS/LAPACK库: ```bash # Ubuntu/Debian sudo apt-get install libblas-dev liblapack-dev # macOS brew install openblas ``` 重新运行vcpkg安装命令,并附加参数: ```bash vcpkg install lapack-reference:x64-windows --feature-blas=enable --feature-lapack=enable ``` #### **场景2:Ninja构建超时/崩溃** - **原因**:并行编译导致资源竞争。 **修复**:限制并行进程数: ```bash vcpkg install lapack-reference:x64-windows --x-buildtools-ninja-args="-j 2" ``` #### **场景3:缺失符号或链接错误** - **修复**:强制静态链接或调整编译选项: ```bash vcpkg install lapack-reference:x64-windows --triplet x64-windows-static ``` --- ### **5. 手动修补源码(高级)** 若问题由已知的源码缺陷导致: 1. 从vcpkg的GitHub仓库下载`lapack-reference`的补丁文件(如`portfile.cmake`)。 2. 替换本地文件: ```bash cp patch-file.cmake vcpkg/ports/lapack-reference/ ``` 3. 重新构建: ```bash vcpkg remove lapack-reference:x64-windows vcpkg install lapack-reference:x64-windows ``` --- ### **6. 提交Issue至vcpkg仓库** 若以上方法无效,提供以下信息至[vcpkg GitHub Issues](https://github.com/microsoft/vcpkg/issues): - 完整的错误日志 - 操作系统及工具版本(CMake、Visual Studio等) - 已尝试的修复步骤 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值