Meta AI에서 개발한 ChatGPT의 대항마, LLaMA

singleheart·2023년 5월 3일
0

LLaMA: Open and Efficient Foundation Language Models

라마가 등장하기까지

ChatGPT로 세계가 떠들썩한 2023년 2월 24일, 메타AI (페이스북)에서 라마(LLaMA)를 발표했습니다.
사실 메타가 언어 모델을 발표한 것은 이번이 처음이 아닙니다.
2022년 5월에 OPT-175B를 발표했습니다. 그런데 OPT는 GPT3와 모델 크기는 같지만 성능이 많이 뒤쳐졌습니다.
OPT 논문을 읽어봐도 여느 논문처럼 다른 모델보다 우수하다는 자랑보다는, 이 모델이 왜 성능이 안 나왔을까에 대한 고민으로 가득합니다.

그랬던 메타가 절치부심해서 새로운 모델을 만들었습니다. 반년이 넘는 시간동안 업계에서는 새로운 발견이 있었는데요,
대표적으로 딥마인드의 친칠라(Chinchilla) 모델 논문에서는 이전의 언어 모델은 학습 데이터를 충분히 투입하지 않아서
덜 학습되었다고 주장하며 학습 데이터를 많이 투입한 70B 크기의 친칠라 모델이 덜 투입한 280B 크기의 고퍼(Gopher) 모델을 능가하는 것을 보여주었습니다.
라마도 이 연구 성과를 이어받아서 GPT3보다 모델 크기는 반도 안 되지만 데이터를 4배 넘게 투입해서 더 좋은 성능을 보여줍니다.

GPT3가 1.3B부터 175B까지 네 가지 모델을 제공한 것처럼 라마도 모델이 네 개입니다. 7B, 13B, 33B, 65B입니다. 모델이 커질수록 성능도 향상됩니다

학습 데이터셋

언어 모델을 학습(pretrain)할 때 가장 성능에 큰 영향을 주는 요소는 데이터셋입니다.
라마의 특징은 공개된 데이터셋만을 이용해서 학습시켰고 메타에서 자체 구축한 데이터는 없다는 점입니다.
한국어는 공개된 데이터셋의 규모가 언어모델 학습에 활용하기에는 품질뿐만 아니라 양이 너무 적다는 점을 고려하면 이는 영어의 큰 장점입니다.
친칠라 논문이 등장하고 이전에 다른 연구에서 주장됐던 것보다 모델 크기는 덜 중요하고 데이터 분량이 중요하다는 것을 알리자 영어권 연구자들은 환호했습니다.
이제 비싼 GPU 자원보다는 풍부한 데이터에 더 집중할 수 있게 되었으니까요. 안타깝게도 한국어권에서는 검색엔진 기업을 제외하면 충분한 데이터를 갖추고 있지 못합니다.
공공기관에서 공개하는 데이터가 있지만 기가바이트 단위이고, 언어 모델을 학습시키려면 테라바이트 단위의 텍스트 데이터가 필요합니다.

라마의 데이터셋 구성을 보면 우선 웹 크롤 데이터가 합계 82%인데 GPT3에 투입된 비율과 같습니다.
웹 크롤 데이터는 품질이 낮아서 정제를 잘하는 것이 중요한데 메타에서는 정제를 위해 별도의 모델을 만들었습니다.
수집한 페이지가 위키백과의 인용 출처로 쓰일 수 있는가 없는가를 판별하는 분류기를 학습시켜서 이를 통과한 페이지만 학습에 투입했습니다.
다음으로 깃헙이 보이는데요, 요즘 대형 언어모델들은 대개 코드 데이터를 학습에 포함시키고 있습니다. 코드의 논리성이 언어 학습에 도움을 준다고 합니다.
위키백과도 4.5%의 높은 비중으로 학습에 투입됐는데요, 영문 위키백과는 수많은 참여자의 꼼꼼한 검증으로 고품질 데이터로 인식되고 있습니다.
한국어 위키백과나 나무위키는 우선 절대적인 분량이 영문 위키백과에 비해 부족한 점이 아쉽습니다.
그밖에 도서와 아카이브 논문이 있는데 이것 역시 논리적인 태스크를 수행할 때 도움이 된 것으로 보입니다.

아키텍처

라마의 아키텍처가 GPT3과 크게 다르진 않습니다. 약간의 변형이 있는데 주로 더 빠르게 학습하기 위해 최적화를 했습니다.

  • 토크나이저를 OPT에서 썼던 GPT 스타일의 BBPE에서 센텐스피스로 변경했고 언노운 토큰을 대비해서 폴백 옵션을 붙였습니다.
  • 트랜스포머 원 논문과 달리 attention보다 normalization을 먼저 하는데요, GPT3에서 보였듯이 이쪽이 학습 안정성이 높습니다.
    Megatron-LM도 같은 구조입니다. 그런데 여기서 T5처럼 RMSNorm을 채용했습니다. 아마도 학습 효율에 중점을 둔 것 같습니다
  • PaLM의 영향을 받아서 activation function도 GEGLU가 아니라 SwiGLU를 사용했습니다.
    SwishGLU를 합친 것인데 Swish는 아래 그림과 같이 ReLU보다 부드러운 곡선을 그립니다.
    GELU와 비슷한데 연산이 간단하다는 장점이 있습니다. 자세한 사항이 궁금하시면 GLU Variants Improve Transformer를 참고하세요.

학습

아래는 모델 크기에 따른 파라미터를 보여주는데, 33B, 65B도 꽤 높은 러닝 레이트로 학습시켰음을 알 수 있습니다.
clip grad를 1.0으로 두고 학습했는데 별로 튀지 않고 로스가 잘 떨어집니다.

학습 시간은 65B 학습을 A100 80G 2048장 그러니까 256노드로 진행해서 1.4T 토큰 학습에 21일 걸렸다고 합니다.
일반적으로 같은 학습을 Megatron-LM으로 하면 24일 정도 걸리는 것으로 알려져 있는데요, 메타에서 속도 최적화에 집중에서 더 빠른 속도를 달성한 것 같습니다.

결과

아래는 라마 모델의 평가 결과입니다. 이 결과를 보면 같은 모델 크기에서 라마가 경쟁력이 있고, 작은 모델도 잘 된다는 것을 볼 수 있습니다.
라마 13B가 GPT3보다 수치가 앞서고요. GPT3의 높은 성능을 생각해 보면 이런 수치가 모델의 성능을 완전히 드러내기에는 부족한 감이 있지만,
라마 모델이 학습이 잘 된 것은 이것으로 충분히 볼 수 있었습니다

아래는 MMLU라고 모델의 멀티태스크 정확도를 측정하는 테스트셋입니다. 초등수학, 역사, 컴퓨터과학, 법률 등의 주제를 포함합니다.
MMLU를 잘하려면 모델이 해박한 상식을 갖추고 문제를 해결할 능력이 있어야 합니다.

이 결과를 보면 다른 태스크와 달리 친칠라에 비해서 밀리는 결과가 나왔습니다. 저자들은 책과 논문 데이터가 친칠라에 비해 적기 때문인 것 같다고 분석했습니다.
고퍼가 다른 분야는 성능이 떨어지는데 여기서만 GPT3보다 성능이 좋은 것도 그 때문일 것이라고 보고 있네요. 고퍼와 친칠라는 도서 데이터의 비중이 30% 정도 됩니다.

인스트럭션 튜닝


이것은 라마에 인스트럭션 튜닝을 적용하고 MMLU에서 5샷 평균을 낸 겁니다.
앞에서의 약한 모습과 달리 여기서는 강력한 결과를 보여주고 있습니다.
다만 77%까지 성능을 끌어낸 OpenAI의 code-davinci-002 모델에 비하면 여전히 갈 길이 먼 것으로 나타났습니다. 물론 다빈치 모델은 훨씬 크지만요.

라마-I 모델도 공개되면 좋겠지만 아쉽게도 이것은 공개 계획이 없는 것 같습니다. 메타에서 직접 페이스북이나 블렌더봇 등의 서비스에 활용할 수도 있겠습니다.

생성 예시

아래는 라마 65B 모델로 메일을 써 본 결과입니다. 굵은 글씨가 입력이고 나머지가 라마 모델이 작성한 것입니다. 메일을 잘 완성해 줍니다.

코드도 시그니처와 주석만 주면 완성해줍니다. 코파일럿에서 활용할 수 있겠네요.

인스트럭션 튜닝 후 생성 예시

인스트럭션 튜닝을 거치면 모델이 훨씬 강력해져서 ChatGPT에서 볼 수 있었던 일들을 할 수 있게 됩니다. 아래처럼 태양과 명왕성의 대화를 창작할 수도 있고요.

자바스크립트 코드도 잘 짜주고, fetch를 써서 다시 작성해달라는 요청도 잘 들어줍니다.

ChatGPT처럼 bash 쉘을 시뮬레이트할 수도 있습니다

결론

메타의 라마 모델은 성능이 뛰어납니다.
학습 데이터를 충분히 늘린 것이 성능 향상에 주효했고, 영문의 경우 웹 크롤 데이터를 적절히 정제해서 학습시키면 강력한 성능을 낼 수 있다는 것을 보여주었습니다.
OPT의 성능 저하는 180B 토큰으로 학습시켜서 학습이 부족했다는 것이 중론이므로 (GPT3은 300B 토큰으로 학습시킴)
1.4T 토큰을 투입한 라마가 뛰어난 것은 친칠라에서 보았듯이 예상 가능한 결과입니다.
다만, 친칠라보다 라마의 성능이 대체로 높은 것으로 나타났는데 이는 데이터셋 구성의 영향이 큰 것 같습니다.
MMLU에서는 친칠라가 더 잘했는데 도서 데이터를 많이 넣은 영향으로 보이고, 다른 영역에서는 잘 정제된 웹크롤 데이터가 효과를 발휘한 것으로 보입니다.

또한 InstructGPT에서 보여준 것처럼 인스트럭션 데이터로 튜닝하면 모델의 성능이 확 개선되는 것도 확인할 수 있었습니다.
여기에 RLHF로 튜닝하면 ChatGPT의 대항마가 될 텐데요, 이미 Nebuly AI에서 ChatLLaMA를 만들었습니다.
라마-I이 아니고 pretrain 모델로 만들었는데요, 메타에서 마음먹고 라마-I을 RHLF 튜닝하면 더욱 훌륭한 모델이 등장할 것으로 기대됩니다.

참고자료

profile
개발자

0개의 댓글