# [2025李宏毅ML] 第11講:今天你想為 Foundation Model 裝備哪些 Task Vector?淺談神奇的 Model Merging 技術 :::success :+1: 筆記全集Book 請至: https://hackmd.io/@4j/r1U_UJ_pye/ ::: :::info 2025生成式AI時代下的機器學習_李宏毅 課程網站 https://speech.ee.ntu.edu.tw/~hylee/ml/2025-spring.php video: https://youtu.be/jFUwoCkdqAo?si=vvzUWZCHlo6EBDpK [[ppt]](https://docs.google.com/presentation/d/1PUEnnpaxuq8dtm_Z4OnYwYjUAz578w74/edit?slide=id.p1#slide=id.p1) [[pdf]](https://speech.ee.ntu.edu.tw/~hylee/ml/ml2025-course-data/merging.pdf) (20250525) ::: :::spoiler 目錄 [TOC] ::: ## Model Merging ![image](https://hackmd.io/_uploads/r1t6PUezeg.png =500x) 還是個很新的尚在發展的技術 不需訓練資料,直接組合模型能力的技術 ![image](https://hackmd.io/_uploads/HJ4kdIlMge.png =500x) ▪ **問題情境** 盔甲llama 想要有小明劍魔的能力,一般做法就需要跟小明借資料來訓練,且要加入原本自己的資料才不會遺忘,達成兼具兩者能力 但這樣蠻麻煩的 要資料又要算力 :( --> 能不能**不用資料 也不用訓練模型** 來達成呢? ![image](https://hackmd.io/_uploads/Byxl_Lefxg.png =500x) ▪ **Model Merging** 𝜽𝑨, 𝜽𝑩 都是從同個 foundation model 練出來的,參數個數相同 **Task Vector**: (𝜽𝑩-𝜽) 參數相減如同多練出來的能力 直接將參數差加到 𝜽𝑨 上,就完成 Model Merging 了! ![image](https://hackmd.io/_uploads/SJ4W_Iezlg.png =500x) (計算圖示) ![image](https://hackmd.io/_uploads/HyMQ_Lgzlx.png =500x) 類神經網路參數豈是如此不便之物! 就是這麼神奇 Task Vector 加加剪剪是有效的! ### 1. 相加 ![image](https://hackmd.io/_uploads/ryQ4dLeGle.png =500x) 從 Foundation Model 𝜽 訓練出了不同能力的 𝜽𝑨, 𝜽𝑩 直接將 τB 加到 τA,或是 (τA+τB),或多乘上 weight 都可以達成擁有AB兩種能力的新模型 >注意: τA, τB 要從**同一種 Foundation Model 出來 且 架構一樣**,這招才能使用 現今 **Post training 時代**,有很多有名的共同的 Foundation Model (ex:llama) 可用 :) ▪ **案例1** ![image](https://hackmd.io/_uploads/S1bmF8xzel.png =300x) ![image](https://hackmd.io/_uploads/BkxEKIxzlg.png =300x) 想讓llama防禦模型看得懂中文 直接拿中文資料 finetune 往往會遺忘 alignment 用 Task Vector 試試,中文模型 加上 防禦模型 ![image](https://hackmd.io/_uploads/B1nEF8xzxg.png =500x) 發現有效 可得到中文回答又有saft alignment的能力! ![image](https://hackmd.io/_uploads/HyeItIgGeg.png =500x) -驗證了此做法是蠻通用有效的 發現在 韓文/日文 上都有效 在 LLaMA 2, LLaMA 3, Mistral 也能發揮作用 ▪ **案例2** ![image](https://hackmd.io/_uploads/HkLPtLlfxx.png =500x) 評價模型 寫程式模型 做 merging 文字評價模型 看圖模型 做 merging ### 2. 相減 ![image](https://hackmd.io/_uploads/S1__t8xMel.png =500x) ▪ **machine unlearning:** 讓模型忘記他學過的東西 𝜽 - τB : 讓他失去任務B 的能力 ![image](https://hackmd.io/_uploads/Hyl9K8lzxe.png =500x) ▪ **案例** 先 finetune 說髒話模型在 LLaMA 再讓 TAIDE模型(同為LLaMA底) 減去 髒話模型 使他成為看不懂髒話的聖人模型 ### 3. 類比 ![image](https://hackmd.io/_uploads/Hk3hY8ezlg.png =500x) **用類比方式,在完全沒有某項資料的情況下,讓模型擁有新能力** 假設 Task A : Task B = Task C : Task D 沒有D資料的情況下,知道 AB 的關係等同於 CD 可以用類比的方式讓模型學會 Task D ![image](https://hackmd.io/_uploads/H1SJ9LgGxg.png =500x) ▪ **案例:** 新領域文件的語音常會辨識錯誤 Analogy 最早的做法是 把新文件用文字轉語音 一起拿去訓練 但這種聲音訊號終究是機器生的不真實 ![image](https://hackmd.io/_uploads/SkdZ9LlGge.png =500x) 改用類比方法 還真的有效 紅線為 **Synthesic2Real Vector** (校正微調) 舊資料真實語音:舊資料合成語音 = **新資料真實語音(缺)**:新資料合成語音 ![image](https://hackmd.io/_uploads/BJI75LgGxl.png =500x) (黃)原訓練在合成資料上的結果 (橘)對訓練在合成資料上的模型 再做校正微調,在各領域資料都有較低的錯誤率 且蠻通用的,在下面這些都有效 • SLURP • Speech foundation model: Whisper • TTS model: BARK ![image](https://hackmd.io/_uploads/H1_HqIxMeg.png =500x) 更多應用:防止 fine-tune 造成的 Forgetting ### Merging 不一定總是會成功 ![image](https://hackmd.io/_uploads/rJODc8lfxe.png =500x) ▪ **案例:** 同時想要改動 A 跟 B 希望加上(τA+τB) 可以同時成功改動 A 跟 B ![image](https://hackmd.io/_uploads/r1xcqUeGxg.png =500x) 失敗例子 ![image](https://hackmd.io/_uploads/BkA55UeMxg.png =500x) 成功例子 --> **不同任務儘量不要動到同樣的參數** ![image](https://hackmd.io/_uploads/HkK298ezll.png =500x) ▪ **新技術:** Advanced Merging Approach DARE: https://arxiv.org/abs/2311.03099 TIES: https://arxiv.org/abs/2306.01708 盡量讓動到的參數較少,merging 比較會成功 ![image](https://hackmd.io/_uploads/Hk2AqIlfeg.png =500x) ▪ **What Matters for Model Merging at Scale?** https://arxiv.org/abs/2410.03617 發現在不同方法中,**模型越大** merging 效果越好 ## 未來展望 ![image](https://hackmd.io/_uploads/By1lj8lGex.png =500x) 還是個很新的技術 希望未來可以有 Task Vector 小商店 • 小團隊可以專注於打造單一任務的 Task Vector • 可以販售、交換 Task Vector --END--