ChatGPT 를 시작으로 많은 LLM 들이 탄생하고 있다.
그 중에서도 오늘은 Open source LLM 을 다뤄보려한다.
LLaMa
는 Meta AI 에서 공개한 LLM 이다.
알파카(Alpaca)
, 비큐냐(Vicuna)
등의 파생형 모델들의 탄생들에 기여최근 구글의 최대의 경쟁자는 OpenAI가 아닌 오픈소스 AI라고 주장하는 구글 내부 문서가 공개 유출되었다. 문서 중에 일부를 발췌했는데, 아래와 같다고 합니다. 비슷한 이유로 관련 종사자들이 Open source LLM
에 열광하는 이유가 아닐까 생각이 듭니다.
이와 같은 주장의 배경에는 Meta의 LLaMA가 한정적인 researcher들에게 공개된 후, 마치 캄브리아기 대폭발을 연상시키듯 LLaMA를 기반한 오픈소스 AI 모델들이 탄생하고 있기 때문이다. 유출된 구글 내부 문건은 Vicuna-13B의 결과를 인용하면서 LLaMA-13B 기반 Vicuna-13B가 구글의 Bard와 거의 차이가 없는 성능 결과를 보이며, 더 작은 비용과 파라미터로 이를 달성하고 있다는 점을 지적하고 있다.
2023년 7월에 LLaMa 2
가 공개되었다.
기존에 연구용 목적으로 한정적으로 오픈했던 LLaMa 와 달리 연구/상업적 용도로 모두 무료이다.
PEFT 이란 결국 Fine-Tuning 방식이며 아래와 같은 특징을 가진다.
위와 같이 ICL (In-Context Learing) 으로 모델을 튜닝할 필요없이 몇 가지 예제만 넣어주면 쉽게 풀고자하는 문제를 풀 수 있게 되지만, 아래와 같은 단점들을 보완하는 대안적인 패러다임중 하나라고 생각하면 됩니다.
현재 PEFT 방법론 중에 가장 유명한 방법론이 LoRA
입니다. 해당 방법론을 개선한 다른 방법론들 (IA3 등등..) 도 현재 계속 나오고 있는 중인데, 오늘은 LoRA
만 보고 넘어가겠습니다.
아래와 같이 Hugging Face 에서 공개한 PEFT 라이브러리를 통해 쉽게 적용할 수 있습니다.
from transformers import AutoModelForSeq2SeqLM
from peft import get_peft_config, get_peft_model, LoraConfig, TaskType
model_name_or_path = "bigscience/mt0-large"
tokenizer_name_or_path = "bigscience/mt0-large"
peft_config = LoraConfig(
task_type=TaskType.SEQ_2_SEQ_LM, inference_mode=False, r=8, lora_alpha=32, lora_dropout=0.1
)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name_or_path)
model = get_peft_model(model, peft_config)
model.print_trainable_parameters()
# output: trainable params: 2359296 || all params: 1231940608 || trainable%: 0.19151053100118282
기존 Alpaca 의 경우, fine tuning 을 하기위해 요구되는 리소스 문제로 해당 문제를 우회하고자 LoRA
를 사용하는 개발이 진행되고 있다. 저자는 아래 글을 참고했다.
Google 이 언급한 Vicuna 도 LLaMa 에서 파생된 LLM 이다.
Vicuna-13B
는 Meta의 LLaMA와 Stanford의 Alpaca에 영감을 받아 UC Berkeley, UCSD, CMU, MBZUAI(Mohamed Bin Zayed Univ. of AI)가 공동으로 개발한 오픈소스 챗봇으로 ShardGPT로 부터 수집된 사용자들의 대화로 LLaMA를 fine-tuning한 모델FastChat 에서 오픈소스로 사용할 수 있으며 Hugging Face 에서도 접근이 가능하다.
Open source LLM 관련 벤치마크를 확인하기위해 아래를 참고할 수 있다.