LLaMA, (Ko)Alpaca, Dalai (!)

Judy·2023년 4월 10일
0

NLP

목록 보기
1/7

요즘 LLaMA 가 핫하길래 순전히 내 궁금증 해소 차원에서 메모를 남긴다.
기술블로그 포스팅은 다른 사람이 정보를 이해하기 쉽도록 일목요연하게 쓰면 좋겠으나
그러려면 글을 쓰는 수고가 많이 들 테고, 나는 내 궁금증만 해결하면 되는데 너무 input 이 크다.

(사실 라마는 남아메리카 안데스의 가축인지라 안데스 산맥이 뻗어 있는 국가의 언어인 스페인어로 읽으면 '야마' 지만
야마는 왠지 한국인에게는 어감이 별로니 남들처럼 라마라고 부르는 걸로 😅)

LLaMA

Large Language Model Meta AI

ChatGPT 가 몰고 온 생성 바람에 Meta 도 LLaMA 를 공개하며 맞섰는데
오픈소스 AI의 명가 Meta 답게 서비스가 아니라 LLM 을 공개한 점이 흥미롭다.

특징

  • OpenAI, Google 의 LLM 보다 적은 parameter -> 적은 컴퓨팅 파워로 큰 성능
    • 비결 : 고품질 데이터로 train (train 에 사용하는 토큰 양을 늘려서 품질 향상)
  • GPT3 보다 1/10 이상 모델 사이즈가 작지만 성능은 더욱 압도적.

Dataset

공개 데이터만으로 학습

  • 다른 LLMs의 학습 데이터 소스를 재사용
  • BPE Tokenize
  • 세계에서 가장 많이 사용되는 언어 20가지의 텍스트를 train (한국어 없음 ㅠㅠ)

Model

최신 모델들의 연구를 반영하여 Transformer 구조를 수정

  • 효과적인 학습 방법을 이용해 학습 최적화
  • Instruction Finetuning
    • 아주 적은 양의 명령어 데이터 finetuning만으로 LLaMA의 MMLU 성능이 향상되고 모델이 명령에 따르는 능력이 더욱 향상됨을 관찰함.

결론

대규모 학습 데이터셋으로 더 작은 모델을 학습시켰을 때 모델 성능을 높일 수 있다!
모델 파라미터를 늘려 모델 성능을 증가시키자 -> No more!
이제는 모델 사이즈는 제한(유지)하되 대규모 학습 데이터셋을 학습시켜 모델 성능을 유지할 것으로 전망됨.

AI타임스 기사
https://www.aitimes.com/news/articleView.html?idxno=149681
[리뷰] Meta AI의 Small Gaint Model: LLaMA(Large Language Model Meta AI)
https://moon-walker.medium.com/%EB%A6%AC%EB%B7%B0-meta-ai%EC%9D%98-small-gaint-model-llama-large-language-model-meta-ai-334e349ed06f
GitHub
https://github.com/facebookresearch/llama

Alpaca

An Instruction-following LLaMA Model

LLaMA 를 사용자의 명령어에 언어모델이 잘 답변할 수 있도록 Instruction-following 데이터로 파인튜닝한 모델.
(언어모델은 기본적으로 다음 단어를 예측하는 문제를 풀기 때문에 일반적인 사용자의 명령어에 자연스럽게 답변하기가 어려운데요.
그럼에도 불구하고 ChatGPT 같은 모델이 답변을 잘하는 것은 사용자의 의도에 맞게 모델을 Instruction-following 데이터로 튜닝 (Alignment) 했기 때문이라고도 볼 수 있습니다.)

한번 더 요약하면
'7B 크기의 LLaMA를 Backbone으로 두고 Instruction tuning을 한 모델'

(Backbone model = foundation model 과 같은 뜻인 듯?
foundation model : GPT-3와 같은 대규모 데이터로 사전학습된, 전이학습이 일어나는 딥러닝 모델)

Challenge

제한된 학습 예산으로 고품질의 Instruction-Following Model을 만들자!
(Instruction-Following Model : 주어진 지시사항을 이해하고, 해당 지시사항을 따르는 작업을 수행하는 모델)

Solution

Model

  1. 강력한 pre-trained LM
  • LLaMA-7B

Dataset

  1. 고품질의 Instruction-Following 데이터셋
  • Self-instruct 를 이용한 데이터 생성

    • 기존의 강력한 언어 모델을 사용하여 자동으로 학습 데이터셋 생성하기
    • LLM 으로 데이터를 생성해서 그 데이터로 다시 LLM을 학습 (자가수급 시스템(?))
    • Alpaca에서는 self-Instruct의 방법론을 조금 단순화하되 모델은 더 좋은 모델(GPT-3(davinci)
      -> GPT-3.5(text-davinci-003))을 사용해서 데이터를 생성.
    • 사람이 직접 만든 175개의 seed 데이터셋을 기반으로 데이터를 약 52,000개까지 추가 생산을 하고, 이 데이터를 학습셋으로 활용
  • Self-instruct 상세 :
    Self-Instruct 과정은 사람이 작성한 instruction seed 세트로 시작하는 반복적인 부트스트래핑 알고리즘이다. instruction seed 세트는 새로운 지시와 해당 입력-출력 인스턴스를 생성하기 위해 LLM의 프롬프트로 제공된다. (물론 최초 instruction seed는 사람이 작성한다!!)
    LLM이 생성한 결과 중 품질이 낮거나 유사한 항목을 필터링하고 결과 데이터를 task pool에 다시 추가한다.
    이 과정을 여러 번 반복하면 지시를 보다 효과적으로 따르도록 LM을 fine-tuning하는데 사용할 수 있는 대량의 학습 데이터 모음이 생성된다.

ChatGPT, LLaMA 그리고 이젠 Alpaca?
https://devocean.sk.com/blog/techBoardDetail.do?ID=164659
[리뷰] Meta LLaMA의 친척 — Stanford Univ의 Alpaca
https://moon-walker.medium.com/%EB%A6%AC%EB%B7%B0-meta-llama%EC%9D%98-%EC%B9%9C%EC%B2%99-stanford-univ%EC%9D%98-alpaca-ec82d432dc25
GitHub
https://github.com/tatsu-lab/stanford_alpaca

KoAlpaca

Alpaca 에 한국어를 학습시킨 모델.

Model

KoAlpaca는 백본 모델로 두 가지 모델을 사용
1. Polyglot-ko 5.8B 기반 -> https://huggingface.co/beomi/KoAlpaca-Polyglot
2. Meta LLAMA 7B 기반 -> https://huggingface.co/beomi/KoAlpaca

  • polyglot : 다국어 거대 언어 모델 프로젝트

Dataset

Stanford Alpaca의 데이터셋을 DeepL API 서비스를 사용하여 instruction과 input을 번역.
output은 애초에 text-davinci-003을 활용했기 때문에 번역하지 않음.

KoAlpaca - 한국어 LLaMA 모델
https://tilnote.io/pages/6417e5fa9e8b1d7a77f5b2ba
GitHub
https://github.com/Beomi/KoAlpaca

Dalai (!)

The simplest way to run LLaMA on your local machine

달라이... 라마.... ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
이건 무슨 약자인가 했는데 약자는 아닌가보다.
LLaMA 와 Alpaca 를 가장 간단히 사용할 수 있는 오픈소스라고.
일단 내 Mac 에 설치중인데 시간이 오래 걸린다. 로그 내용을 보니 6시간쯤 걸린다는 듯?
LLM 이 노트북에서 돌아간다니 가히 혁명적이다!

GitHub 공식문서
https://github.com/cocktailpeanut/dalai
dalai (alpaca.7B)모델 사용해 보기
https://dev4u.tistory.com/1204
dalai 설치 (mac/windows)
https://arca.live/b/alpaca/73209432?p=1

profile
NLP Researcher

0개의 댓글