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
: 전문가 혼합을 적용하기 위해 선택된 레이어입니다. 완전히 미세 조정된 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" ]
}
위의 예에서는 미스트랄 기반의 수학 및 코드 전문가를 통합했습니다. 자세한 내용은 이 노트를 참고해주세요!
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
expert
대신 adapter
로 시작합니다. 자세한 내용은 이 노트를 참고해주세요!
구성 설정에 따라 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
에 더 익숙해질 수 있습니다.
공책 | 세부 |
---|---|
완벽하게 조정된 LLM 전문가가 있는 MoE | 완전히 미세 조정된 전문가와 함께 단일화된 전문가 혼합 모델을 구축하세요. BTX 연구(Meta AI)에서 영감을 얻었습니다. |
LoRA 미세 조정 전문가와 MoE | 적응 전문가의 혼합을 구축하십시오. xlora에서 영감을 얻었습니다 | LoRA 혼합물 | 두더지 | 팟구스 | 모엘로라 |
포옹하는 얼굴 블로그 | mergoo 라이브러리의 병합 방법 뒤에 있는 연구 세부 사항에 대해 자세히 알아보세요. |
LLaMa3 기반 전문가 | LLaMa3 기반 도메인 전문가를 통합하여 나만의 MoE 스타일 LLM 전문가를 구축하세요. |
Phi3 기반 전문가 | Phi3 기반 미세 조정 모델을 병합하여 MoE 스타일 LLM 아키텍처 생성 |
빠르게 발전하는 도메인의 오픈 소스 라이브러리로서 새로운 기능 도입, 인프라 강화, 문서 개선 등의 기여를 환영합니다.
mergoo
로드맵은 다음과 같습니다.
새로운 기능을 제안하거나 mergoo
로드맵에 기여해 주세요!
여러분의 피드백을 환영합니다. Leeroo 커뮤니티에 가입해 주세요:
여기에 나열되지 않은 질문이 있습니까? GitHub 문제를 열거나 이메일을 보내주세요!