본문 바로가기

라마, 알파카, 비쿠나 오픈소스 챗봇 낙타들🐪 총정리!

참고 자료

들어가며

 ▶️   리뷰 영상

 

라마, 알파카, 비쿠나를 들어보셨나요? 바로 핫하게 떠오르고 있는 chatGPT를 위협하는 오픈소스 챗봇들입니다. 대체 이 낙타들은 어떻게 탄생했는지, 어떻게 chatGPT 같은 대화형 인터페이스를 만들었는지 저와 함께 리뷰해보시요!

 

라마, 알파카, 비쿠나의 등장

먼저 시작은 chatGPT입니다. 경악스러운 성능으로 전세계를 뒤집어 놓으면서 LLM 열풍을 불러왔습니다. 하지만 openai라는 회사 이름에는 걸맞지 않게 chatGPT 모델 웨이트 파일이나 소스코드, 모델 학습 코드 등은 모두 공개하지 않은채 베일에 가려져 있었습니다. 때문에 chatGPT 같은 챗봇을 직접 만들어보고 싶은 전세계 연구자들과 개발자들의 호기심에 불을 지폈습니다.

그러던 차에 메타에서 GPT3 보다 크기는 작으면서 성능은 뛰어난 LLM llama 만들어 오픈소스로 공개합니다. 

굶주렸던 연구자들과 개발자들이 llama 모델을 튜닝해서 대화형 LLM 만든게 바로 알파카와 비쿠나입니다.

알파카와 비쿠나는 코드 구현이 단순하고, 비교적 저렴한 가격에 모델을 학습시키고 사용할 수 있습니다. 동시에 chatGPT에 비견할 만큼 자연스럽게 텍스트를 생성해주어서 등장과 동시에 인기가 고공상승 중입니다. 

자, 그러면 구체적으로 이 모델들이 어떻게 학습되었는지 살펴볼까요?

chatGPT 학습 과정

알파카와 비쿠나를 이해하려면 먼저 chatGPT가 학습되는 방식을 이해해야 합니다. chatGPT는 next token prediction 방식으로 학습된 LLM을 가져와서 intruct finetune과 RLHF라는 기법을 이용해서 학습시킨 결과입니다. 즉, 대량의 텍스트를 통해서 자연어를 이해하는 모델을 만들고, 이를 대화형 인터페이스에 맞게 튜닝하는 과정을 거쳤다고 생각하면 됩니다.

 

chatGPT는 총 3단계로 나눠서 학습을 진행합니다. 그 중 1단계가 instruct finetune, 2단계와 3단계가 RLHF에 해당합니다. 그런데 1단계인 instruct finetune은 적은 데이터와 약간의 학습만으로도 구현할 수 있는 반면, RLHF는 많은 데이터와 인간의 노동력이 들어갑니다. 때문에 따라하기가 어렵습니다.

 

재밌는 점은 어렵고 힘든 RLHF 과정을 거치지 않고 intruct finetune만 하더라도 꽤 그럴듯한 성능을 내는 모델을 만들 수 있다는 겁니다. 아래 그래프를 보면 instruct finetune만 거친 SFT 모델이 일반 GPT보다 압도적으로 성능이 뛰어난 모습을 보여줍니다. 그리고 instruct finetune만 할 경우에는 모델의 크기가 크던 작던 큰 상관이 없습니다.

라마의 등장

때마침 메타에서 GPT3 처럼 대량의 텍스트 데이터를 next token prediction 방식으로 학습시킨  LLM 라마를 사이즈 별로 공개합니다. 그 중에서 파라미터 수가 7B나 13B인 모델은 개인이나 대학 연구실에서도 직접 튜닝을 할 수 있는 정도의 크기였습니다. 이를 지켜본 연구자들은 이런 생각을 합니다.

작은 llama 모델을 가져와서 instruct finetune만 하면 chatGPT 같은 모델을 만들 수 있지 않을까?

 

그렇게 

등장한게 알파카와 비쿠나 입니다.

 

Instruct Finetune

알파카와 비쿠나 모두 라마 모델을 가져와서 instruct finetune을 한 결과물들입니다. 먼저 instruct finetune은 어떻게 하는건지 알아보겠습니다.

 

본래 GPT3 같은 LLM 대량의 텍스트에 대해 다음에 단어를 예측하는 방식으로 학습을 진행합니다. 때문에 텍스트가 주어지면 뒤에 이어지는 내용은 잘 작성해주지만, 대화형 인터페이스에는 적합하지 못합니다. 때문에 대화형 인터페이스에 적합한 데이터 셋을 만들어서 LLM에 추가 학습을 시켜주는 작업이 instruct finetune입니다.

위 예시를 보면 브레인 스토밍을 해달라거나 질문에 대한 답을 해달라는 식으로 우리가 chatGPT를 쓰듯이 대화형 질문들로 데이터 셋을 구성한걸 확인할 수 있습니다. 각각의 질문에 모범 답안을 작성해주고, 이를 LLM에 학습시키면 대화형 인터페이스에 적합한 모델을 얻을 수 있습니다.

알파카

알파카는 버클리 대학교의 한 연구실에서 공개한 모델입니다. openAI GPT 3.5 모델인 text-davinci-003 모델을 이용해서

52000개의 지시-응답 데이터 셋을 생성하였습니다. 한번 생성한 데이터 셋을 볼까요?

{
    "instruction": "Give three tips for staying healthy.",
    "input": "",
    "output": “
        1.Eat a balanced diet and make sure to include plenty of fruits and vegetables.
        2. Exercise regularly to keep your body active and strong.
        3. Get enough sleep and maintain a consistent sleep schedule.
    "
}

건강에 관련된 팁을 달라는 지시와 모범 답안이 짝지어진 형태입니다. 이를 52000개 만들어주고, 라마 7B 모델을 가져와서 instruct finetune을 진행한 결과가 알파카 모델입니다. 학습에는 클라우드 GPU를 사용하였으며 약 300달러 정도 비용이 들었다고 합니다. 적은 비용으로도 성능이 뛰어난 대화 모델을 얻을 수 있다는걸 처음 보여준 사례여서 폭발적인 인기를 끌었습니다.

 

비쿠나

비쿠나 역시 대학 연구실에서 발표한 모델입니다. 이는 chatGPT 대화 결과를 공유하는 ShareGPT라는 사이트의 데이터 7만개를 이용하여 insruct finetune 진행하였습니다. 비쿠나는 모델 자체의 성능보다도 모델 성능 평가 방법이 인상적입니다.

먼저 동일한 프롬프트에 대해서 알파카, 비쿠나, chatGPT한테 텍스트를 생성해달라고 요청합니다. 그 다음, 생성된 텍스트가 얼마나 적절한 지를 큰형님 GPT4를 이용해서 채점합니다. 이 방식으로 비쿠나가 다른 대화형 모델에 비해서 얼만큼 뛰어난지를 비교하였습니다.

그 결과 라마 13B를 기반으로 학습시킨 비쿠나 모델이 chatGPT에 비해서 약 92% 수준의 정확도를 보여주었습니다. 사실 GPT 4가 평가한 것이라서 정확하지 않을 수 있습니다. 그렇다하더라도 아주 창의적으로 단순한 방법으로 LLM의 성능 평가를 할 수 있었습니다.

마치며

알파카와 비쿠나가 보여준 instruct finetune 기법은 이후에 정말 많은 사람들에 의해서 사용됩니다. 그리고 저마다 디테일을 살짝씩 바꿔서 LLM 모델들을 공개하고 있으며, 지금 이 순간에도 수많은 모델들이 여러 벤치마크에서 성능을 다투고 있습니다. 이런 발전 흐름을 이해하고 있다면 새로운 모델이 나왔을 때, 이 모델이 어떤 방식으로 학습된 건지를 파악하기가 쉽겠죠?

 

이상으로 오픈소스 챗봇 모델들에 대한 리뷰를 마치겠습니다. 저는 다음에 더 핫하고 재밌는 논문 리뷰로 돌아오겠습니다. 🐧 펭바!