前言
llama 3出來后,為了通過paper-review的數據集微調3,有以下各種方式
- 不用任何框架 工具 技術,直接微調原生的llama 3,畢竟也有8k長度了
效果不期望有多高,純作為baseline - 通過PI,把llama 3的8K長度擴展到12k,但需要什么樣的機器資源,待查
apple為主,不染為輔 - 阿里云百練大模型服務平臺、百度智能云千帆大模型平臺對llama 3的支持
文弱zu - 通過llama factory微調3,但等他們適配3(除非我們改factory),類似
llama factory + pi
llama factory + longlora/longqlora? - 我們自行改造longqlora(longlora也行,但所需機器資源更大),以適配3
類似之前的經典組合:longqlora(PI + s2-Attn + qlora) + flash attention + zero3 - 基于xtuner微調llama 3
三太子則在與70b微調工作不沖突的前提下,試下這個xtuner
第一部分?拿我司的paper-review數據集通過PI微調LLama 3
1.1?使用PI微調llama3-8b
// 待更
1.2 通過百度智能云的千帆大模型平臺微調Llama 3
// 待更
第二部分 基于llama factory和paper-review數據集微調LLama3
LLaMA Factory 現已支持 Llama 3 模型,提供了在 Colab 免費 T4 算力上微調 Llama 3 模型的詳細實戰教程:https://colab.research.google.com/drive/1d5KQtbemerlSDSxZIfAaWXhKr30QypiK?usp=sharing
同時社區已經公開了兩款利用本框架微調的中文版 LLaMA3 模型,分別為:
- Llama3-8B-Chinese-Chat,首個使用 ORPO 算法微調的中文 Llama3 模型,文章介紹:https://zhuanlan.zhihu.com/p/693905042
- Llama3-Chinese,首個使用 DoRA 和 LoRA+ 算法微調的中文 Llama3 模型,倉庫地址:https://github.com/seanzhang-zhichen/llama3-chinese
// 待更
第三部分 不用PI和S2-attn,調通Llama-3-8B-Instruct-262k
3.1 基于15K的「情況1:晚4數據」微調Llama 3 8B Instruct 262k
3.1.1 基于1.5K的「情況1:晚4數據」微調Llama 3 8B Instruct 262k
24年5.25日,我司審稿項目組的青睞同學,通過我司的paper-review數據集(先只取了此文情況1中晚期paper-4方面review數據中的1.5K的規模,另,本3.1.1節和3.1.2節都統一用的情況1中的晚期paper-4方面review數據),把llama3調通了
至于llama3的版本具體用的Llama-3-8B-Instruct-262k,這個模型不是量化的版本,其他很多版本雖然擴展長度了,但基本都傳的量化后的,這個模型的精度是半精的(當然,還有比較重要的一點是這個模型的下載量比較高)
以下是關于本次微調的部分細節,如青睞所說
- 一開始用A40 + 1.5K數據微調時,用了可以節省所需顯存資源的s2atten(S2-attention?+ flash attention),且由于用了 26k 長度擴展的那個模型,便不用插值PI了
但48g的A40在保存模型的時候顯存會超過48g(訓練過程中不會出現),而zero3模型保存時會報oom,后來經驗證發現原因是:per_eval_device_batch size設置太大導致了oom
總之,用A40 訓練時其具有的48g顯存是可以訓練超過 12k上下文數據的,不一定非得用s2atten(畢竟上面也說了,過程中微調llama3出現oom是因為per_eval_device_batch size設置太大照成的,與訓練沒啥關系,一個很重要的原因是llama3的詞匯表比較大,從32K拓展到了128K,壓縮率比較高,導致論文的長度比llama2短,所以A40也放的下) - 后來改成了用A100訓練(數據規模還是1.5K),由于用了A100,故關閉了s2atten,直接拿12K的長度開訓,且用上了flash atten v2,得到下圖這個結果
3.1.2 用5K-15K的「情況1:晚4數據」微調Llama-3
再后來用8卡A40對5K或15K數據微調時,便也都沒有用S2-attention(關閉了),使用12K長度 + flash attention v2 微調
代碼和上面跑1.5K的數據一樣,也還是用的「七月大模型線上營那套longqlora代碼」,但把單卡設置成多卡
且直接租2臺「8卡的A40」,一臺5K的數據,一臺15K的數據,直接一塊跑
以下是15K數據(晚期paper-4方面review)微調后針對YaRN那篇論文得到的推理結果
接下來,青睞先推理下測試集中的晚期paper,輸出4方面review
最后,文弱測評一下,讓GPT4-1106、情況1的llama2(也是晚期paper-4方面review),都統一跟人工4方面review做下匹配
// 待更
3.2?基于15K的「情況3:早4數據」微調Llama 3 8B Instruct 262k
3.2.1?llama3版本的情況3 PK 上兩節llama3版本的情況1
上兩節用了晚期paper-4方面的review微調llama3-262k,類似于此文開頭總結的情況1:用晚期paper-4方面review微調llama2
本節咱們將基于15K的早期paper-4方面review,類似于此文開頭總結的情況3:用早期paper-4方面review微調llama2
本節微調完之后,自然便可以與以下模型PK(針對哪個情況,則用那個情況的paper,所以評估llama3-262k版本的情況3時,則都統一早期paper)
llama3版本的情況3 當PK 上兩節的llama3版本的情況1,情況如下(當然,按理得勝,畢竟情況3的數據更強,相當于都是llama3,但數據質量不一樣,當然,無論是llama2 還是llama3,按道理情況3就得好過情況1,畢竟情況3 早4,情況1 晚4,情況3-早4的數據質量是更高的)
當llama3版本的情況3?PK llama2版本的情況3,按理得勝,畢竟llama3更強
當llama3版本的情況3?PK llama2版本的情況1(以阿荀微調的longqlora 7B做為情況1的基準),按理更得勝,畢竟llama3更強且情況3的數據更強,但目前得到的結果有些奇怪(如下圖所示),沒達預期,正在找原因中,待后續更新..
// 更多細節暫見我司的:大模型商用項目之審稿微調實戰營
3.2.2 llama3情況1 PK llama2情況1——評估微調llama3-8b-instruct-262k基座性能
之后,我們發現使用 15k 情況1樣本僅flash attention v2直接微調 llama3-8b-instruct-262k效果不佳,具體可以下面評估結果
- 左圖:情況1樣本僅flash attention v2直接微調 llama3-8b-instruct-262k
- 右圖:情況1樣本微調 llama2-7b-chat + PI 擴展長度
可以看到兩者性能相當,這個階段,并沒有得到微調llama3性能超過微調llama2的結論,推斷可能是llama3-8b-262k原始微調數據集與審稿12k數據集長度分布不太匹配,請看下文第四部分將使用llama-3-8B-Instruct-8k + PI 重新微調,最后獲得大幅度性能提升
第四部分 使用PI和flash atten v2 微調llama-3-8B-Instruct-8k
下面訓練的數據集皆為15k樣本(樣本長度普遍9k左右,最長不超過12k),評估方法為基于groud truth 命中數pk,模型取驗證集loss最低的模型
此階段將評估微調llama3-8b-8k與微調llama3-8b-262k&llama2性能差距
4.1 情況3早4數據下的:llama3-8b-instruct-8k + PI 與llama3-8b-instruct-262k 性能pk
經過評估發現,llama3-8b-8k + PI 性能較大幅度領先llama3-8b-262k的性能,如下所示
- 左圖:情況3樣本僅flash attention v2微調 llama3-8b-8k + PI 擴展長度
- 右圖:情況3樣本僅flash attention v2直接微調 llama3-8b-instruct-262k
4.2 llama3-8b-instruct-8k + PI 與 llama2-7b-chat 性能pk
4.2.1 llama3下的情況3 強于llama2下的情況3
且經過測試,llama3 在論文審稿場景下的性能確實領先 llama2
- 左圖:情況3樣本僅flash attention v2微調 llama3-8b-8k + PI 擴展長度
- 右圖:情況3樣本微調 llama2-7b-chat + PI 擴展長度
4.2.2 llama3下的情況3 更強于llama2下的情況1
此外,下面的這個實驗,也無疑再次證明llama3 性能領先 llama2
- 左圖:情況3樣本僅flash attention v2微調 llama3-8b-8k + PI 擴展長度
- 右圖:情況1樣本微調 llama2-7b-chat + PI 擴展長度
第五部分 論文審稿GPT第5版:通過15K的早期paper-7方面review數據集(情況4)微調llama3
5.1 llama3-b-8b-8k微調情況4
5.1.1 情況4微調較情況3改動:微調參數、情況4的微調system prompt
一方面是微調參數(主要)
- 為了保證與情況1、情況3更公平的性能對比,選擇與前兩者相同的迭代次數,情況4推理選擇的checkpoint迭代次數為1800,大約1.95個epoch
- 情況3的多次參數組合實驗并沒有得到較好的效果提升,因此本次情況4的參數基本都是原來的默認值
參數 | 說明 |
batch size=16 | 梯度累計總batch size=16 |
lr=1e-4 | 學習率的大小 |
max_prompt_length=11138 | paper 最長的大小,超過將被截取 |
max_response_length=1150 | review 最長的大小,超過將被截取 |
save_steps=100 | 迭代100次保存一次模型 |
num_train_epoch=3 | 迭代3個epoch |
二方面是情況4 微調system prompt
青睞微調的system prompt 采用與阿荀v4版prompt摘要出來的7方面review的大項對齊(詳見此文《七月論文審稿GPT第4.5版、第4.6版、第4.8版:提升大模型數據質量的三大要素》的1.2.5節通過7要點摘要prompt第4版重新摘要整理7方面review數據)
比如微調prompt中的Potential項,便與7review中的Potential項對齊,具體為
SYSTEM_PROMPT = """Below is an "Instruction" that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.
Instruction:
You are a professional machine learning conference reviewer who reviews a given paper and considers 7 criteria:
** How to evaluate the idea of the paper **
** Compared to previous similar works, what are the essential differences, such as any fundamental differences, improvements, innovations **
** How to evaluate the experimental results in the paper **
** Potential reasons for acceptance **
** Potential reasons for rejection **
** Other suggestions for further improving the quality of the paper **
** Other important review comments **
The given paper is as follows."""
5.1.2 情況4推理結果分析
- a) 推理樣本的總數為285條
- b) 推理結果中平均子項項數:10.3894
- c) 推理結果中子項總數分布情況(下圖左側),可以看到12條子項的樣本占絕大數
- d) 空項數分布情況(下圖右側),可以看到大多數樣本含有一個空項(“空項”代表著“拒答”的意思,也就是模型沒有給出大項相關的理由),約占50%
- e) 各大項子項數分布情況(下圖)
- 1. 可以看到上述d) 空項數分布中的“大多數樣本含有一個空項”數據主要集中于最后一項(第二排最后一個圖),這是由于訓練集存在較多最后大項為空項的數據
- 2. 除了上述最后一大項外,“拒絕理由”(第二排第一個)的大項存在少量的空項,而其他大項中空項的數量較少
5.1.3 微調情況4性能評估
下面訓練的數據集皆為15k樣本(樣本長度普遍9k左右,最長不超過12k),評估方法為基于groud truth 命中數pk
5.1.3.1 情況4數據下:llama3-8b-8k vs llama2-7b-chat
- 下圖左側:情況4 7review僅flash attention v2 微調llama3-8b-instruct-8k
- 下圖右側:情況4 7review微調llama2-7b-chat
結論:同樣為情況4 7review數據下,llama3的效果較llama2有較大提升
5.1.3.2 情況4 摘要7方面review vs 情況3 摘要4review
為了保證評估的公平性,對于微調llama3-8b-instruct-8k來說情況3與情況4僅數據不同,微調的策略完全一致
- 下圖左側:情況4 7review僅flash attention v2 微調llama3-8b-instruct-8k
- 下圖右側:情況3 4review僅flash attention v2 微調llama3-8b-instruct-8k
結論:微調策略一致的前提下,摘要7review微調的性能相對于4review有大幅度提升
5.1.3.3 情況4 llama3-8b-8k vs gpt4-1106
- 下圖左側:情況4 7review僅flash attention v2 微調llama3-8b-instruct-8k
- 下圖右側:情況4 paper使用7大項提示工程gpt4-1106的結果
結論:gpt4-1106基于7 大項提示工程生成的觀點數相比于基于4 大項提示工程的觀點數要多很多,gpt4展現出了“話癆”的特點,雖說其觀點的精確率不高,但基于命中數的評估方式還是讓gpt4占盡了優勢,從1.3節“情況4推理結果分析”可知,llama3推理過程中有不少項存在著“拒答”的現象,這在pk中是處于劣勢的
因此,嘗試是否可以通過對空項序列也就是“<No related terms>”略加懲罰的方式,合理地降低其采樣的概率,減少模型拒答的概率,提升模型的推理性能呢,具體見下文
// 待更