本文已獲授權轉載。 原文鏈接: https://zhuanlan.zhihu.com/p/1915054612559426430 作者 PENG Bo 是 RWKV 創始人。
第一幕:從X到微信群
前不久,我在 X 刷到 DeltaNet 作者 Songlin 的這條消息:
其中的 RWKV-7 數據頗為詭異,因為 RWKV-7 論文的結果是:
這代碼在
https://github.com/Triang-jyed-driung/zoology-rwkv。如果同樣計算平均 MQAR acc,RWKV-7 在 state dim 8k 是 0.94+,在 state dim 16k 就已是 0.99+。這與圖中的數據點是天與地的差距。
原圖無疑有錯,于是我在下面回復,建議用 RWKV-LM 的官方實現(因為zoology用的FLA庫的RWKV-7有許多細節仍未對齊):
然后我打開微信,發現 Songlin 在 FLA 微信群(500人群)炸了,我發個截圖確認,更炸:
Su 抓緊時機補刀,Songlin 總結,牛逼!
隨后 Songlin 直接在全群置頂這句【惡心人是嗎】,置頂了幾天,牛逼plus!(這個我沒截圖,在群的人都可以看到)
請問,測其它人的方法,先按其它人給出的細節做(而且其它人愿意詳細說明),是不是基本的研究倫理?
對于 Songlin 和 Su,不是。
而且 DeltaNet 也有對應 token-shift 的 shortconv,這種 trick 是我最早在新型 RNN 加的(而且我最早就說了這是做后來被稱為 induction head 的事情),之后全部人都加。
那么,如果 Su 測 DeltaNet,是否會加 shortconv?
而這個群,就在幾天之前,還在討論 RWKV-8 的 DeepEmbed。所以,只在問我的時候才友善?牛逼。
完全沒必要在群里回復。我開始看 HazyResearch/zoology 項目,看它有哪些問題。
第二幕:看代碼,做實驗
毫無懸念,zoology 充滿問題。第一個錯誤最離譜,它直接算錯了 RWKV-7 的 state size。
在 d_model=128 時,它算成了4倍。在 d_model=256 時,它算成了16倍。
正確的 state size 公式是 num_heads * head_k_dim * head_v_dim。這公式對于 RWKV-7 和 DeltaNet 都一樣。
但 zoology 的 DeltaNet 代碼用了正確公式,RWKV-7 用了錯誤公式 num_heads * k_dim * v_dim。
我非常,非常難以理解,他們為何能寫錯這個最基本的公式。
我提出后,過了幾天,zoology 終于修了這個錯誤:
修正后,RWKV-7 的兩個黃點往左移動n倍,離譜程度降低了些:
這個 zoology 的問題存在了幾個月,我看到已有論文用了它的錯誤計算,例如 ATLAS (2505.23735) 。下圖的黑箭頭僅為示意,因為不知道 ATLAS 具體測的什么維度。
第二大問題是,zoology 給測的所有架構都加了 shortconv length=4,因為這對于超淺模型跑 MQAR 的 grokking 特別有用。如果不加,效果沒眼看。
下面是 zoology README:
但是,唯獨沒給 RWKV-7 加。它的 RWKV-7 還是用 token-shift,類似于 shortconv length=2。
跑正常語言模型用 length=2 合適。但超淺模型跑 MQAR,需要更長 length 才收斂快。
所以,標準 RWKV-7 在此會吃虧,需要用同樣的 shortconv length=4 才對齊其它架構。
【其實還有細節,RWKV 在 FFN 也加了 token-shift(從最早 RWKV-1 就是這樣做),正是為了造出更長的 conv length。而 zoology 的測試當然沒用 RWKV 的特殊 FFN】
我也不去對齊了,我直接做一件最有說服力的事情。
我們看各個架構的核心算子(只看單個頭,簡化公式)。
這是 DeltaNet 算子,其中 βt 是標量:
這是 GatedDeltaNet 算子,其中 αt βt 都是標量:
這是 RWKV-7 算子,其中 w a b v k 都是矢量:
顯見 RWKV-7 算子的表達力嚴格更強,這個算子可以包含許多其它架構。
順帶一提,這個形式是我在 2024 年 9 月公開公布的:
當時 Songlin 在 discord 私聊問我,RWKV-7 的 w 梯度怎么算,我發了鏈接:
而在此前 2024 年 6 月,我也在私聊發了我算其它梯度的方法:
包括我用 Mathematica 的驗算:
那么,是怎樣的事物,將一種正常人,變成了另一種正常人(或許更普遍)?我們可以思考。
言歸正傳,觀察這三個公式:
可見,如果我們允許 β 是矢量,然后在 RWKV-7 設置 w = 1, a = -βk, b = k, v = βv, k = k 就能得到一個 BetterDeltaNet。
我在
https://github.com/BlinkDL/zoology提供了修改后的代碼。
實測 zoology 最難的 MQAR 任務,8192 state size,256 kv pairs,黑色是 BetterDeltaNet,彩色是 DeltaNet。
14.31 ± 0.07% vs 13.09 ± 0.67%,使用 RWKV-7 kernel 的 BetterDeltaNet,贏。
在此顯示,不加任何 trick,只將 DeltaNet kernel 替換為 RWKV-7 kernel,幾行代碼,就可以提升效果。
由于 RWKV-7 還有巨多 trick,聽說有人會懷疑,RWKV-7 是靠 trick 才 work 嗎?
當然不是,如前所述 RWKV-7 是在數學上更通用的形式,嚴格包括許多其它架構,表達力嚴格更強。
同時,加更多 RWKV-7 的 trick 會更好。后續我會再寫一篇,列出 RWKV-7 的 trick 列表。
歡迎測試
https://github.com/BlinkDL/zoology的 DeltaNet(已改為 BetterDeltaNet)對比
https://github.com/HazyResearch/zoology的 DeltaNet。測試只需一張 16G 顯存的顯卡。
總結:
做好 baseline 是細致的工作,也涉及學術倫理。
然而,太多 AI 論文,會有意無意壓其它人的 baseline。
恐怕,這往往是“有意的無意”(我稱為 deliberate carelessness),其它人問起來,就說是自己不小心,真是進退自如。
其實,不僅是 RWKV-4/5/6/7 長年被各種論文黑,許多新架構論文也會故意用很弱的 transformer baseline. This is only discrediting the whole research area.
其實,為什么 RWKV-7 加這么多 trick?
因為我真煉模型。我必須真和滿血 transformer 比(而且是用強數據的 transformer,所幸開源數據也在進步)。我洗 HuggingFace 數據集就洗了幾百個。
現在 RWKV7-G1 的 2.9B/1.5B 是全世界所有純血 RNN 架構模型中 token 煉得最多的,10+ T tokens。它的 data scaling 經過了驗證,是有競爭力的基底模型,這可以用它對于全新數據的壓縮能力去證明:
https://huggingface.co/spaces/Jellyfish042/UncheatableEval
這里是測2025年4月的數據(所有模型都沒見過),測字節壓縮率(和tokenizer無關):
歡迎大家試訓 RWKV-7,方法見
https://github.com/BlinkDL/RWKV-LM,默認配置在 8G 顯存的單卡(需支持bf16)就行。遇到任何問題,都歡迎問。也可以看官網
https://rwkv.cn/其中已有 93 篇使用 RWKV 的論文。
第三幕:歡迎對線
請大家想象:
一個【從前問過你問題的人】,在【你在幾天前剛分享過新技巧(DeepEmbed)后】,基于【紕漏百出的謬論】,使用【粗鄙的罵街和威脅你】,并在【500人大群置頂惡言(置頂了幾天)】,這是一種什么形態?
歡迎討論。
其實,這真的特別正常。因為我們人類社會的結構,就是鼓勵和培養這種形態。這不分國籍和種族,都一樣。
他們難以想象,在這世界上,竟然,有人真沒興趣玩他們的這個臭水溝游戲。
我認為,這不是我有多高尚,而是,很抱歉,這個臭水溝游戲的氣味,真有點沖。
不過,觀察這個臭水溝游戲,差可消遣,例如,這個 FLA 群,熱衷于排各種 X神 X少 X佬(這真的特別正常),最近還開始排 東X西X南X北X(這同樣特別正常,但是,我真的,我笑死)。
我做 AI 有些目標,列幾個目標:
一、我看不下去,怎么某些人可以這樣蠢(壞的本質是蠢,一切恐懼來自于火力不足)。希望以后 AI 幫人長點腦子。教育恐沒用,需要生物,吃藥也好,基因改造也好,來點效果。
二、我得盡快做完事情,然后就不用陪這群人玩,他們自己繼續玩,謝謝。
南方有鳥,其名為鹓鶵,子知之乎?夫鹓鶵發于南海,而飛于北海,非梧桐不止,非練實不食,非醴泉不飲。于是鴟得腐鼠,鹓鶵過之,仰而視之,曰:'嚇!'
原本在調 RWKV-8,來這么一出,花了幾天時間,希望正本清源。
談點正事。
最近很多論文卷 TTT,用超大 state size,這是走回 transformer 老路,丑陋。
TTT 適合由 AI 做 NAS 去卷。各種迭代公式,AI 寫 kernel,可以試到吐。
真正重要的問題是:如果 RNN 不解決長文本,就永遠清不了 attention。
所以 RWKV-8 的目標是,在保持 state size 不變的前提下,提升長文本性能。
這看似不可能,但我有方法。
目前調到 3x RWKV-7 性能,希望調到 10x 以上,把下圖做成全綠:
與此同時,有趣的是,在 FLA 群,現在還時而有人想我說說 RWKV-8。
現在人的記憶力只有七秒,看來,長文本以后會變成偽需求。
不妨做個調查,如果你是我,你會怎樣做?
下面開始直播,本文發出后,幾分鐘內:
解決不了問題,就解決提出問題的人?
讓我們觀察,你還準備玩什么招數?
DeltaNet和RWKV均為中國團隊創建的 LLM 架構:
DeltaNet 是結合線性 Transformer 和非線性 Transformer 架構的模型,通過特定方法將非線性 Transformer 轉換為線性 DeltaNet 形式,從而在保持性能的同時提高計算效率,經實驗驗證,在特定數據集上能取得與原始非線性模型相當的性能。 https://sustcsonglin.github.io/blog/2024/deltanet-1/
RWKV(是一種具有 GPT 級大型語言模型(LLM)性能的 RNN,也可以像 GPT Transformer 一樣直接訓練(可并行化)。 RWKV 結合了 RNN 和 Transformer 的最佳特性:出色的性能、恒定的顯存占用、恒定的推理生成速度、"無限" ctxlen 和免費的句嵌入,而且 100% 不含自注意力機制。 https://rwkv.cn/docs/RWKV-Wiki/Introduction
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.