mergoo
1.0.0
mergoo
是一個用於輕鬆合併多個 LLM 專家並有效率地訓練合併後的 LLM 的函式庫。透過mergoo
,您可以有效地整合不同通用或基於領域的LLM專家的知識。
如果您喜歡這個項目,請考慮留下️
透過 pip 安裝:
pip install mergoo
在 Github 上安裝最新的不穩定版本:
pip install git+https://github.com/Leeroo-AI/mergoo
從源安裝它:
git clone https://github.com/Leeroo-AI/mergoo
cd mergoo
pip install -e .
指定合併配置:
model_type
:基礎模型的型別。選擇: mistral
、 llama
或bert
。num_experts_per_token
:MoE 每個代幣的專家數量。experts
:專家合併的配置。包括expert_name
和 Hugging Face ? model_id
。router_layers
:選擇用於套用 Mixture-of-Experts 的圖層。 這是合併完全微調的 LLM 專家時的範例配置。
config = {
"model_type" : "mistral" ,
"num_experts_per_tok" : 2 ,
"experts" : [
{ "expert_name" : "base_expert" , "model_id" : "mistralai/Mistral-7B-v0.1" },
{ "expert_name" : "expert_1" , "model_id" : "meta-math/MetaMath-Mistral-7B" },
{ "expert_name" : "expert_2" , "model_id" : "ajibawa-2023/Code-Mistral-7B" }
],
"router_layers" : [ "gate_proj" , "up_proj" , "down_proj" ]
}
對於上面的範例,我們合併了基於 Mistral 的數學和程式碼專家。請參閱此筆記本以了解更多詳細資訊!
這是合併LoRA微調的 LLM 專家時的範例配置。 mergoo
在 LoRA 之上建構了一個路由層,從而形成了適配器的混合體。
config = {
"model_type" : "mistral" ,
"num_experts_per_tok" : 2 ,
"base_model" : "mistralai/Mistral-7B-v0.1" ,
"experts" : [
{ "expert_name" : "adapter_1" , "model_id" : "predibase/customer_support" },
{ "expert_name" : "adapter_2" , "model_id" : "predibase/customer_support_accounts" },
{ "expert_name" : "adapter_3" , "model_id" : "predibase/customer_support_orders" },
{ "expert_name" : "adapter_4" , "model_id" : "predibase/customer_support_payments" }
],
}
expert_name
以adapter
而不是expert
開頭。請參閱此筆記本以了解更多詳細資訊!
配置設定完成後, mergoo
將合併的 LLM 建立為:
import torch
from mergoo . compose_experts import ComposeExperts
# create checkpoint
model_id = "data/mistral_lora_moe"
expertmerger = ComposeExperts ( config , torch_dtype = torch . float16 )
expertmerger . compose ()
expertmerger . save_checkpoint ( model_id )
現在,您可以使用 Hugging Face Trainer 輕鬆訓練合併的 LLM:
from transformers import Trainer
from mergoo . models . modeling_mistral import MistralForCausalLM
model = MistralForCausalLM . from_pretrained ( "data/mistral_lora_moe" )
# NOTE: 'gate' / router layers are untrained hence weight loading warning would appeare for them
trainer = Trainer ( ... )
trainer . train ()
完成快速入門指南後,您可以瀏覽下面的教學以進一步熟悉mergoo
。
筆記本 | 細節 |
---|---|
教育部擁有經過全面調整的法學碩士專家 | 與完全微調的專家建立統一的專家混合模型。受到 BTX 研究(Meta AI)的啟發。 |
MoE 與 LoRA 專家進行微調 | 打造混合適應專家。靈感來自 xlora | LoRA 的混合 |鼴鼠 |法古斯 |莫埃洛拉 |
抱抱臉博客 | 深入探討mergoo庫合併方法背後的研究細節 |
基於 LLaMa3 的專家 | 透過整合基於LLaMa3的領域專家,打造您自己的MoE式LLM專家 |
基於 Phi3 的專家 | 透過合併基於 Phi3 的微調模型來創建 MoE 風格的 LLM 架構 |
作為快速發展領域中的開源程式庫,我們歡迎貢獻,無論是引入新功能、增強基礎設施或改進文件。
這是mergoo
路線圖:
請隨意建議新功能和/或為mergoo
路線圖做出貢獻!
我們很高興收到您的回饋,請加入 Leeroo 社群:
還有這裡未列出的問題嗎?打開 GitHub Issue 或給我們發送電子郵件!