首頁 > 科技要聞 > 科技> 正文

一文看懂DeepSeek開源的FlashMLA,這些細節(jié)值得注意

appso 整合編輯:太平洋科技 發(fā)布于:2025-02-25 11:52

2月24日開始,我們正式進入 DeepSeek 開源周。

DeepSeek 開源項目第一彈 FlashMLA,已經(jīng)在極短的時間內(nèi)發(fā)酵到全網(wǎng)了,短短幾個小時,該項目就已經(jīng)收獲了超過 3.5K Star,且還在不斷飆升。

雖然 FlashMLA 里的每個字母都認識,連在一起就看不懂了。別急,我們整理了一份 FlashMLA 速通指南。

由 Grok 3 整理,APPSO 核實

讓 H800 性能暴增,F(xiàn)lashMLA 到底什么來頭?

據(jù)官方介紹,F(xiàn)lashMLA 是一個針對 Hopper GPU 優(yōu)化的高效 MLA(Multi-Head Latent Attention)解碼內(nèi)核,支持變長序列處理,現(xiàn)在已經(jīng)投入生產(chǎn)使用。

FlashMLA 通過優(yōu)化 MLA 解碼和分頁 KV 緩存,能夠提高 LLM(大語言模型)推理效率,尤其是在 H100 / H800 這樣的高端 GPU 上發(fā)揮出極致性能。

說人話就是,F(xiàn)lashMLA 是一種專門為 Hopper 高性能 AI 芯片設(shè)計的先進技術(shù)——一種「多層注意力解碼內(nèi)核」。

聽起來很復(fù)雜,但簡單來說,它就像是一個超級高效的「翻譯器」,能讓計算機更快地處理語言信息。它能讓計算機處理各種長度的語言信息,而且速度特別快。

比如,你在用聊天機器人的時候,它能讓你的對話更快地得到回復(fù),而且不會卡頓。為了提高效率,它主要通過優(yōu)化一些復(fù)雜的計算過程。這就像是給計算機的「大腦」做了一個升級,讓它在處理語言任務(wù)時更聰明、更高效。

DeepSeek 官方特意提到,F(xiàn)lashMLA 的靈感來自 FlashAttention 2&3 和 cutlass 項目。

FlashAttention 是一種高效的注意力計算方法,專門針對 Transformer 模型(如 GPT、BERT)的自注意力機制進行優(yōu)化。它的核心目標(biāo)是減少顯存占用并加速計算。cutlass 也是一個優(yōu)化工具,主要幫助提高計算效率。

DeepSeek 的爆火出圈很大程度上是因為以低成本創(chuàng)造了高性能模型。

而這背后的秘籍主要得益于其在模型架構(gòu)和訓(xùn)練技術(shù)上的創(chuàng)新,尤其是混合專家(MoE)和多頭潛在注意力(MLA)技術(shù)的應(yīng)用。

Building AI Solutions with DeepSeek: A Hands-On Workshop - Association of  Data Scientists

FlashMLA 則是 DeepSeek 公司開發(fā)的一種針對多頭潛在注意力(MLA)技術(shù)的實現(xiàn)和優(yōu)化版本。那么問題來了,什么是 MLA(多頭潛在注意力)機制?

在傳統(tǒng)的語言模型里,有一種叫「多頭注意力(MHA)」的技術(shù)。它能讓計算機更好地理解語言,就像人用眼睛同時關(guān)注多個地方一樣。

不過,這種技術(shù)有個缺點,就是需要很大的內(nèi)存來存儲信息,就像一個很能裝的「倉庫」,但倉庫太大就會浪費空間。

MLA 的升級之處在于一種叫「低秩分解」的方法。

它把那個大倉庫壓縮成一個小倉庫,但功能還是一樣好,就像把一個大冰箱換成一個小冰箱,但里面的東西還是能放得下。這樣一來,在處理語言任務(wù)的時候,不僅節(jié)省了空間,速度還更快了。

不過,雖然 MLA 把倉庫壓縮了,但它的工作效果和原來一樣好,沒有打折扣。

當(dāng)然,除了 MLA 和 MoE,DeepSeek 還用了其他一些技術(shù)來大幅降低了訓(xùn)練和推理成本,包括但不限于低精度訓(xùn)練、無輔助損失的負載均衡策略以及多 Token 預(yù)測(MTP)。

性能數(shù)據(jù)表明,F(xiàn)lashMLA 在內(nèi)存和計算限制下的表現(xiàn)遠超傳統(tǒng)方法,這得益于其線性復(fù)雜度的設(shè)計和針對 Hopper GPU 的優(yōu)化。

與標(biāo)準(zhǔn)多頭注意力的對比,更是進一步凸顯 FlashMLA 的優(yōu)勢:

FlashMLA 的主要應(yīng)用場景包括:

長序列處理:適合處理數(shù)千個標(biāo)記的文本,如文檔分析或長對話。

實時應(yīng)用:如聊天機器人、虛擬助手和實時翻譯系統(tǒng),降低延遲。

資源效率:減少內(nèi)存和計算需求,便于在邊緣設(shè)備上部署。

目前 AI 訓(xùn)練或推理主要依賴英偉達 H100 / H800,但軟件生態(tài)還在完善。

由于 FlashMLA 的開源,未來它可以被集成到 vLLM(高效 LLM 推理框架)、Hugging Face Transformers 或 Llama.cpp(輕量級 LLM 推理) 生態(tài)中,從而有望讓開源大語言模型(如 LLaMA、Mistral、Falcon)運行得更高效。

同樣的資源,能干更多的活,還省錢。

因為 FlashMLA 擁有更高的計算效率(580 TFLOPS)和更好的內(nèi)存帶寬優(yōu)化(3000 GB/s),同樣的 GPU 資源就可以處理更多請求,從而降低單位推理成本。

對于 AI 公司或者云計算服務(wù)商來說,使用 FlashMLA 也就意味著更低的成本、更快的推理,讓更多 AI 公司、學(xué)術(shù)機構(gòu)、企業(yè)用戶直接受益,提高 GPU 資源的利用率。

此外,研究人員和開發(fā)者還可以基于 FlashMLA 做進一步的優(yōu)化。

過去,這些高效 AI 推理優(yōu)化技術(shù)通常主要掌握在 OpenAI、英偉達等巨頭手里,但現(xiàn)在,隨著 FlashMLA 的開源,小型 AI 公司或者獨立開發(fā)者也能用上,更多人進入 AI 領(lǐng)域創(chuàng)業(yè),自然也就有望催生更多的 AI 創(chuàng)業(yè)項目。

簡言之,如果你是 AI 從業(yè)者或者開發(fā)者,最近在用 H100 / H800 訓(xùn)練或推理 LLM,那么 FlashMLA 可能會是一個值得關(guān)注或研究的項目。

與春節(jié)期間網(wǎng)友扒出 DeepSeek V3 論文具體提到了 PTX 的細節(jié)相似,X 網(wǎng)友發(fā)現(xiàn) DeepSeek 發(fā)布的 FlashMLA 項目中同樣包含了一行內(nèi)聯(lián) PTX 代碼。

PTX 是 CUDA 平臺的中間指令集架構(gòu),處于高級 GPU 編程語言和低級機器代碼之間,通常被視為英偉達的技術(shù)護城河之一。

通過內(nèi)聯(lián) PTX,這使得開發(fā)者能夠更精細地控制 GPU 的執(zhí)行流程,從而可能實現(xiàn)更高效的計算性能。

此外,直接利用英偉達 GPU 的底層功能,而不必完全依賴于 CUDA,也有利于降低英偉達在 GPU 編程領(lǐng)域的技術(shù)壁壘優(yōu)勢。

換句話說,這或許也意味著 DeepSeek 可能在有意繞開英偉達封閉的生態(tài)。

當(dāng)然,如無意外,根據(jù)外媒的爆料,本周接下來預(yù)計還有 GPT-4.5、Claude 4 等模型的發(fā)布,去年年底沒能看到的 AI 大戰(zhàn)或?qū)⒃诒局苌涎荨?/p>

看熱鬧不嫌事大,打起來,打起來。

官方部署指南

FlashMLA 是一種高效的 MLA 解碼內(nèi)核,專為 Hopper GPU 優(yōu)化,可用于處理變長序列推理。

當(dāng)前已發(fā)布版本支持:

BF16

分頁 KV 緩存,塊大小為 64

在 H800 SXM5 上運行 CUDA 12.6,F(xiàn)lashMLA 在受內(nèi)存帶寬限制的配置下可達 3000 GB/s,在受計算能力限制的配置下可達 580 TFLOPS。

項目配備:

Hopper GPU

CUDA 12.3 及以上版本

PyTorch 2.0 及以上版本

附上 GitHub 項目地址:
https://github.com/deepseek-ai/FlashMLA

安裝

python setup.py install

基準(zhǔn)

python tests/test_flash_mla.py

python tests/test_flash_mla.py 是一個命令行指令,用于運行 Python 測試文件 test_flash_mla.py,通常用于測試 flash_mla 相關(guān)的功能或模塊。

用法

from flash_mla import get_mla_metadata, flash_mla_with_kvcache

tile_scheduler_metadata, num_splits = get_mla_metadata(cache_seqlens, s_q * h_q // h_kv, h_kv)

for i in range(num_layers):

...

o_i, lse_i = flash_mla_with_kvcache(

q_i, kvcache_i, block_table, cache_seqlens, dv,

tile_scheduler_metadata, num_splits, causal=True,

)

本文來源:Appso

appso

網(wǎng)友評論

聚超值•精選

推薦 手機 筆記本 影像 硬件 家居 商用 企業(yè) 出行 未來
二維碼 回到頂部