“最強7B模型”論文發(fā)布,揭秘如何超越13B版Llama 2
來自“歐洲OpenAI”的“最強7B開源模型”Mistral最近可謂是圈粉無數(shù)。
它各方面的測試指標全面超越了13B的Llama2,甚至讓一眾網(wǎng)友覺得羊駝不香了。
最新消息是,Mistral AI團隊已經(jīng)發(fā)布了相關(guān)論文,透露背后的技術(shù)細節(jié)。
圖片
Mistral不僅全面戰(zhàn)勝了13B Llama2,在數(shù)學、代碼和推理方面,34B的Llama1也不是Mistral的對手。
在推理任務(wù)上,Mistral的表現(xiàn)更是直逼10倍參數(shù)量的Llama2-70B。
但Mistral消耗的資源卻很少,只需要6GB顯存,MacBook就能流暢運行。
為了用更少消耗達到更好的效果,Mistral可謂是使出了渾身解數(shù)。
那么關(guān)于Mistral的這篇論文都透露了哪些技術(shù)信息呢?
多種機制降低運算消耗
基礎(chǔ)結(jié)構(gòu)上,Mistral基于Transformer架構(gòu)設(shè)計,一共有32個n_layer,上下文長度達到了8192 token。
具體的參數(shù)如下表所示:
圖片
而Mistral能做到高性能低消耗,則要歸功于所用到的多種優(yōu)化策略。
首先是最核心的注意力機制,其直接作用是減少計算量,具體包括了兩個方面。
第一種是滑動窗口(Sliding Window)注意力機制。
推理階段中,會設(shè)定出一個窗口長度,并在劃分出的注意力層范圍之內(nèi)進行注意力運算,而不是針對全文。
通過滑動方式,各注意力層之間會有所重疊,從而實現(xiàn)長文本序列的處理。
4096的長度,理論上可以處理13.1萬token。
圖片
這種注意力機制和標準注意力相比,可以將速度提升到兩倍。
另一種則是分組查詢(Grouped-query)注意力機制。
這種機制將查詢(query)拆分成多個組,每個組只與key的一個子集進行注意力運算,然后拼接出結(jié)果。
這樣不僅能降低運算量,也能讓組間通信次數(shù)減少,并提高查詢吞吐。
除了在注意力機制上下功夫,開發(fā)者還引入了滾動緩沖區(qū)緩存(Rolling Buffer Cache)。
這種存儲方式固定了緩沖區(qū)的大小,從而限定了內(nèi)存消耗的最大值。
圖片
如果把緩沖區(qū)比作一座倉庫,每存進一個新東西,都會占據(jù)相應(yīng)的位置。
而倉庫的總?cè)萘渴枪潭ǖ模攤}庫被裝滿時,就會把最先放入的東西移除,讓新的物品繼續(xù)進倉。
但入倉時間更接近的物品則會留在倉庫中,就能在節(jié)約資源的同時保留一定長度的序列。
利用這種緩存機制,只要緩沖區(qū)大小設(shè)置得合理,就能實現(xiàn)預算效率與記憶力的平衡。
此外還有一種預填充和分塊機制,它的直接作用是減少重復運算。
圖片
假如需要處理一個很長的句子,那么這個句子將被分割成小塊。
訓練完前面的小塊之后,再加入后面的塊,以此類推……
這樣存儲空間中就有了前面的塊信息,用來建立長序列。
這種方式避免了從頭開始的重復運算,從而使效率得到了提升。
以上就是開發(fā)者在Mistral中使用的優(yōu)化策略,而為了評估模型的泛化能力,開發(fā)者使用了HF上的公開數(shù)據(jù)集進行了指導性微調(diào)。
結(jié)果Mistral的表現(xiàn)全面超過了13B參數(shù)的Llama 2,其中推理技能更是與70B版本十分接近。
圖片
單塊3090即可微調(diào)
Mistral的火爆程度,直接讓第三方工作室也推出了微調(diào)教程。
圖片
據(jù)介紹,用這種方法微調(diào)之后,可以進一步提升Mistral的性能并降低消耗。
而這個微調(diào)的過程,用一塊3090就能完成。
首先是根據(jù)使用目的準備數(shù)據(jù)集,轉(zhuǎn)化為prompt形式并劃分出訓練和驗證集。
然后是對模型進行初始化,加載Mistral并設(shè)置4-bit量化和Lora等參數(shù)。
接著是構(gòu)建Trainer,輸入數(shù)據(jù)、模型等信息正式開始訓練,然后測試并保存。
具體的細節(jié)可以到教程原文中去了解。
論文地址:https://arxiv.org/abs/2310.06825微調(diào)教程:https://wandb.ai/byyoung3/ml-news/reports/Fine-Tuning-Mistral7B-on-Python-Code-With-A-Single-GPU---Vmlldzo1NTg0NzY5