作者:
LDPC (Channel Coding)
2025-02-01 10:27:33怎抹這邊突然變AI版 =_=
DeepSeek 有件事情幹得比矽谷好 就是AI Backend 優化(這玩意就是需要懂架構
和軟體 就是一個苦力枯燥活) 大體而言
在A100架構以前 大部分訓練都還是用fp32 少數模型對精度不敏感會用到fp16
(浮點16進位)主因是用16進位去訓練 精度不夠 容易模型崩潰 尤其用P100的fp16
去訓練LLM這類模型 大多都會崩 直到bf16這種新型的16進位出來 這時候訓練成本
(等於同架構算力變兩倍) 直接下到一半 在過去很少人在訓練用fp8(8位元)精度
去訓練模型 因為先天認為就是模型不穩 (順帶一提 在inference
把模型降到int8 是一個常見降成本做法 但training就很難)
然後deepseek 這個做得很好 他們重寫底層cuda優化 (寫ptx 直接優化硬體並列)
硬生生的把訓練pipeline寫出了一個fp8的版本 這又讓算力直接變兩倍
(*1)
我找到一篇稍微講他們並列設計方式軟體優化整理
https://finance.sina.com.cn/roll/2025-01-01/doc-inecmssv2908917.shtml
該編直接破題 捲工程
MoE 有一個最大挑戰就是 通訊成本 以及如何把通訊成本降下來 DeepSeek也是圍繞在
NVLink Load Balance (*2) 這也是圍繞在高throughput的NVLink 優化活
https://news.cnyes.com/news/id/5847731
*1和*2基本上就是圍繞NV卡Cuda底層的軟體優化活 QQ
這玩意不能無痛移植到其他架構 會是完全不一樣的推倒重練活 甚至硬體不支援無法複製
https://blog.csdn.net/weixin_42082868/article/details/130158784
而MoE對VRAM要求很高 說不需要HBM的 =_=......畢竟記憶體在LLM是一個重要參數
有很多算法是拿記憶空間換算力 (cache <-> 計算 參考白算盤)
因為是MoE 所以意味者每個token產生 只用了模型37B參數 這意味者 你的智能上限
就是37B參數的智能 這也意味者現階段600B Dense 模型 上限可以更高
(有點像你在思考一個問題瞬間時刻 只用了腦容量10%跟 腦容量100%)
這也是為何MoE在Fine-Tune 基於泛化不足 難度會比Dense模型不穩
在Inference端 受益於
1. KV Cache壓縮 ( Multi-head Latent Attention)
2. 37B參數運算量 per token
3. MLP (multi-token prediction) (參照Medusa這類paper)
每次不是一個個token產生 而是一次產生兩個token (你也可以推廣到n顆預測
但n>2 token 每次預測 失誤率會變高 等於做白工)
所以產出token速度會造成同架構600B模型大概 10倍快 然後搭配老黃B200
int8 算力https://36kr.com/p/2927059579722630 老黃硬體也可以受益這種低精度
搭配MoE 解放出能提供的更多人數上限 (Inference Capaciy是單次訪問算力x人數)
LLM現在最大門檻就是inference速度慢 很多paper都在環繞1,2,3推廣
而deep seek就是把現階段最好的1,2,3搭起來 搭AI Backend
key take away 通篇deepseek其實是把近年來所有經典算法圍繞在NV的cuda底層優化
所以要把這算法複製在其他平台 會重新遇到一個底層優化的問題 就像AMD底層優化
並不如cuda好 而這次大概就是ai backend 碼農 看到中國deekseek做得很好
個人建議 如果沒NV卡 手上有M1/M2/M3晶片 可以嘗試把上面123玩玩看 現在pytorch
有針對Mac GPU優化 (指令 device="mps" 如果你有NV卡那就不用多此一舉)
https://github.com/karpathy/minGPT
強烈建議手刻KV Cache ( https://github.com/Zefan-Cai/KVCache-Factory )
https://dipkumar.dev/becoming-the-unbeatable/posts/gpt-kvcache/
KV Cache 開發是現在LLM裡面的顯學之一
除了增加就業能力 還可以幫助你股版吵架能力 @@/