大型語言模型工程

模型合併(model merging)

假設你有好幾個從同一個共享基礎微調出來的模型——一個擅長寫程式、一個擅長數學、一個擅長某種語言。要訓練出一個兼具這些技能的單一模型,通常意味著蒐齊所有資料再重新訓練。模型合併提供了一條驚人地廉價的捷徑:在權重空間裡直接合併這些完成的檢查點,把它們的參數做平均或相加,便得到一個繼承了多重能力的單一模型,且完全不需要任何一步梯度。

乾淨的抽象是任務向量:把基礎權重從一個微調檢查點裡減掉,你就得到適配所移動的方向。這些向量可以相加以組合技能、縮放以調強度、甚至取負以「反學習」掉某個行為。天真的平均在任務向量互相干擾時會吃虧,於是像 TIES-merging 這類方法會修剪掉小分量、用多數決化解符號衝突、只合併意見一致的參數;DARE 隨機丟棄並重新縮放差量以減少冗餘;SLERP 則沿著兩個模型間的超球面內插。合併之所以有效,是因為共享基礎的獨立微調,傾向停留在一個相連、低損失的區域裡。

吸引力顯而易見——不需訓練資料、除了一次前向傳遞之外不需 GPU、即時的能力組合——這讓合併檢查點在模型集散地上無所不在。提醒也同樣實在:合併只能組合源自同一基礎的模型,相衝突的任務向量可能相消而非相加,而結果是經驗性的,所以一個合併模型需要被評估、而非被信仰。

\theta_{\mathrm{merged}} = \theta_0 + \sum_{i} \lambda_i\,\tau_i,\qquad \tau_i = \theta_i - \theta_0

任務向量 τ_i(微調減基礎)以 λ_i 縮放後,加回共享基礎 θ0 之上。

模型合併不是集成:集成保留數個模型、在推論時組合它們的輸出,而合併把它們塌縮成一組權重,以單一模型的成本運行。

又稱
weight mergingtask arithmetic模型合併