堂堂開源之王 Llama 3,原版上下文窗口居然隻有……8k,讓到嘴邊的一句 " 真香 " 又咽回去了。
在 32k 起步,100k 尋常的今天,這是故意要給開源社區留做貢獻的空間嗎?
開源社區當然不會放過這個機會:
現在隻需 58 行代碼,任何 Llama 3 70b 的微調版本都能自動擴展到 1048k(一百萬)上下文。
背後是一個 LoRA,從擴展好上下文的 Llama 3 70B Instruct 微調版本中提取出來,文件隻有 800mb。
接下來使用 Mergekit,就可以與其他同架構模型一起運行或直接合并到模型中。
所使用的 1048k 上下文微調版本,剛剛在流行的大海撈針測試中達到全綠(100% 準确率)的成績。
不得不說,開源的進步速度是指數級的。
首先 1048k 上下文版 Llama 3 微調模型來自Gradient AI,一個企業 AI 解決方案初創公司。
而對應的 LoRA 來自開發者Eric Hartford,通過比較微調模型與原版的差異,提取出參數的變化。
他先制作了 524k 上下文版,随後又更新了 1048k 版本。
首先,Gradient 團隊先在原版 Llama 3 70B Instruct 的基礎上繼續訓練,得到 Llama-3-70B-Instruct-Gradient-1048k。
具體方法如下:
調整位置編碼:用 NTK-aware 插值初始化 RoPE theta 的最佳調度,進行優化,防止擴展長度後丢失高頻信息
漸進式訓練:使用 UC 伯克利 Pieter Abbeel 團隊提出的 Blockwise RingAttention 方法擴展模型的上下文長度
值得注意的是,團隊通過自定義網絡拓撲在 Ring Attention 之上分層并行化,更好地利用大型 GPU 集群來應對設備之間傳遞許多 KV blocks 帶來的網絡瓶頸。
最終使模型的訓練速度提高了 33 倍。
長文本檢索性能評估中,隻在最難的版本中,當 " 針 " 藏在文本中間部分時容易出錯。
有了擴展好上下文的微調模型之後,使用開源工具 Mergekit 比較微調模型和基礎模型,提取參數的差異成爲 LoRA。
同樣使用 Mergekit,就可以把提取好的 LoRA 合并到其他同架構模型中了。
合并代碼也由 Eric Hartford 開源在 GitHub 上,隻有 58 行。
目前尚不清楚這種 LoRA 合并是否适用于在中文上微調的 Llama 3。
不過可以看到,中文開發者社區已經關注到了這一進展。
524k 版本 LoRA:
https://huggingface.co/cognitivecomputations/Llama-3-70B-Gradient-524k-adapter
1048k 版本 LoRA:
https://huggingface.co/cognitivecomputations/Llama-3-70B-Gradient-1048k-adapter
合并代碼:
https://gist.github.com/ehartford/731e3f7079db234fa1b79a01e09859ac
參考鏈接:
[ 1 ] https://twitter.com/erhartford/status/1786887884211138784
— 完 —
點這裏關注我,記得标星哦~
一鍵三連「分享」、「點贊」和「在看」
科技前沿進展日日相見 ~