본문 바로가기
🟣 AI & ML

LLM 이해하기 - LLM의 기초 개념

by 제리강 2024. 1. 14.
TL;DR

ChatGPT가 불러온 LLM과 AI의 시대는 아직도 계속되고 있으며, LLM은 계속 진화하고 있다. 이제 SF 창작물에서만 보던 AGI(Artificial General Intelligence) 시대가 점점 다가오고 있는 것 같다. 
이 시리즈는 
LLM을 기초부터 시작하여 다양한 시각에서 관찰해 나가며 이해하는 것을 목적으로 한다. 
이 포스트는 Andrej Karpathy와 정형원 님, 고우영 님의 교육 자료를 주로 참고했고, 그 외 다양한 자료를 참고하여 작성되었음을 미리 밝힌다.

 

Andrej Karpathy(OpenAI, Tesla)의 'Intro to Large Language Models' 영상 링크: https://www.youtube.com/watch?v=zjkBMFhNj_g

정형원 님(OpenAI)의 'Large Language Models (in 2023)' 영상 링크: https://www.youtube.com/watch?v=dbo3kNKPaUA

고우영 님(ETRI)의 'GPT4 톺아보기' 영상 링크: https://www.youtube.com/watch?v=T7BpCMI7kDY

 

목차

더보기
1. LLM 이란?
2. 현대 언어 모델의 기준: 트랜스포머(Transformers)
3. LLM의 학습 프로세스
  3-1. 기본적인 언어 능력을 갖추자: 사전학습(pre-training)
  3-2. 사용자 의도에 맞는 답변을 하도록 조정하자: 미세조정(fine-tuning)
  3-3. 사람처럼 채점하는 목적 함수를 만들자: 보상 모델과 정책 모델
  3-4. 적은 정보만으로 정답을 추론할 수 있도록: 퓨샷 러닝과 메타 러닝

 

 

 

LLM이란?

 LLM(Large Language Model)은 거대 언어 모델이라는 뜻인데, 모델이 얼마나 거대해야 거대 언어 모델인걸까? 엄밀히는, 매개변수(parameter) 수보다는 성능 면에서 '창발적 능력(emgergent ability)'을 보이는지의 여부가 LLM의 기준이 된다. 언어 모델의 규모를 키우다 보면 어떤 수준에서 급격하게 성능이 높아지는 현상이 관찰되는데, 연구자들은 이 수준의 성능을 창발적 능력이라 명명했다(그림 1). 이러한 표현이 잘 와닿지 않는다면, LLM이 주목받기 시작한 초기 ChatGPT의 텍스트 생성 능력(GPT-3.5 버전) 정도의 성능을 기준으로 생각해도 좋다. 수치적으로 보면, 현 시점에서는 보통 수 백에서 수 천억개 규모의 매개변수 이상 규모의 언어 모델을 거대 모델로 본다. 그러나 최근 LLM 모델의 경량화가 빠른 속도로 이루어지면서, 거대함의 기준이 모호해지고 있다.

 

그림 1. 언어 모델의 규모에 따른 창발적 능력(emergent abilities) 양상을 관찰한 그래프.

 

 

 LLM의 학습에 사용되는 인프라를 생각해보면, LLM의 규모를 더 잘 체감할 수 있다. 알려진 바에 따르면, 메타(Meta) 사의 LLaMA-2-70B 모델은 약 6,000개의 GPU로 수십 일 동안 학습되었다. 딥러닝 학습에 사용되는 전문 용도의 GPU는 수천만원을 호가하며, 현재는 구매를 하고 싶어도 대기를 해야하는 상황이다. 참고로, GPU는 딥러닝 모델에서 반복적으로 수행되는 곱연산 등의 작업을 CPU에 비해 효율적으로 수행할 수 있어 딥러닝 학습에 이용되고 있다. 공식적으로 알려지지는 않았지만, OpenAI 사의 GPT-4 모델은 LLaMA 보다도 더 큰 규모를 가진다고 추정된다.  

 

 

 

현대 언어 모델의 기준: 트랜스포머(Transformers)

 현재 대부분의 LLM은 2017년 구글 브레인 팀이 발표한 트랜스포머(Transformers)라는 모델의 구조를 바탕으로 구축되었다. 트랜스포머 모델은 시퀀스(sequence, 순서가 있는 복수의 데이터)를 입력과 출력 형태로 사용하는 seq-to-seq 모델의 하나로, 언어 분야에서는 번역이나 입력 단어의 다음 단어를 예측하는 생성 작업에 주로 이용된다. 트랜스포머를 기초부터 설명하려면 많은 분량이 필요하므로, 여기서 자세한 설명은 생략하도록 한다. 이 포스트에서는 트랜스포머가 다른 모델과 차별화되는 주요 특징만 간단히 짚고 넘어가도록 한다.

 

그림 2. 트랜스포머의 구조.

 

트랜스포머는,

  1. 어텐션(Attention) 알고리즘을 통해 텍스트의 문맥(context)를 인지하여 더 나은 예측을 수행할 수 있다.
  2. 기존의 어텐선 모델 구조에서, 포지셔널 인코딩(positional encoding)을 적용하여 순차적 입력 구조에서 벗어낫다. 이를 통해 기울기 소실(gradient vanishing)과 같은 순차적 입력 구조 기반 모델의 단점을 보완했다. 이렇게 순차적 입력 구조를 벗어난 어텐션을 셀프 어텐션(self-attention)이라 한다. 셀프 어텐션은 트랜스포머의 가장 핵심적인 개념이자 정의라고도 할 수 있다.
  3. 멀티 헤드 어텐션(multi-head attention)와 같은 병렬화를 통한 확장이 용이하다. 이는 연구자들이 트랜스포머의 규모를 크게 늘려서 거대 언어 모델을 구축하는 데에 중요한 특징이 되었다.

 자세한 설명이 부족하지만,  '트랜스포머 = 셀프 어텐션' 정도만 기억해도 좋다. 하지만 무엇보다 트랜스포머가 주목받게 된 가장 중요한 요인은, 단순하게도 기존 모델들보다 월등히 높은 성능을 보였다는 것이다. 정형원 님 영상의 앞부분에서 설명하듯이, 이제 언어 모델  분야에서 성능을 높일 수 있는 절대적 원칙같은 공리(axiom)는 정해져 있지 않다. 가장 높은 성능을 보이는 최신의 모델이 다른 연구의 공리(axiom) 역할을 수행하는 것이다. 지금은 그 공리의 역할을 하는 모델이 트랜스포머이지만, 이는 수년 내에도 언제든지 바뀔 수 있다.  

 

 

 

LLM의 학습 프로세스

  LLM은 먼저 많은 양의 텍스트 데이터를 학습하는 사전학습(pre-training) 단계를 수행한 후 지시 기반의 미세조정(fine-tuning) 단계를 수행한다. 미세조정 과정에서 보상 모델(reward model)과 정책 모델(policy model)을 기반으로 수행되는 인간 평가 기반의 강화 학습(Reinforcement learning from Human Feedback, RLHF)이 답변 생성의 능력을 높인다. 각 단계가 어떤 역할을 하는 지 순서대로 살펴보도록 하자.

 

그림 3. LLM의 학습 프로세스.

 

 

 

기본적인 언어 능력을 갖추자: 사전학습(pre-training)

 LLM은 먼저, 주로 인터넷에서 수집한 대규모의 텍스트 데이터셋으로 기본적인 언어능력을 학습한다. LLaMA 모델의 경우 10TB 정도의 데이터셋을 학습한 것으로 알려져 있다. 이렇게 많은 양의 텍스트 데이터를 학습함으로써, 언어 모델은 주어진 입력에 대해서 자연스러운 문장을 생성할 수 있게 된다. 사전학습을 통해 얻어지는 모델을, 베이스 모델(base model)이라 한다.

 하지만, 사전학습만 수행한 베이스 모델은 맥락에 맞는 특정 형식의 답변이나, 고도화된 수준의 답변은 어렵다. Karpathy는 이를 언어 모델이 '꿈을 꾼다(dreams)'라고 표현하고 있다. 예를 들어, 언어 모델은 동일한 입력에 대해 프로그래밍 코드 텍스트를 출력할 수도 있고 쇼핑몰의 제품 설명을 출력할 수도 있다. 또는, 위키피디아 스타일의 설명문을 출력할 수도 있다(그림 4). 어떤 답변이건 자연스러운 문장은 출력되겠지만, 답변을 양상을 우리가 통제하기 어렵다. 또한, 생성된 문장에 내재된 의미나 정보가 부정확할 가능성이 있다. 

 

그림 4. 사전학습 모델의 텍스트 생성 양상

 

 

 

사용자 의도에 맞는 답변을 하도록 조정하자: 미세조정(fine-tuning)

 베이스 모델이 가진 한계를 해결하기 위해, 연구자들은 어시스턴트 모델(assistant model)을 구상했다. 어시스턴트 모델은 사람들이 직접 구축한 데이터셋으로 베이스 모델을 미세조정함으로써 구축된다. 이 데이터셋은 단순히 텍스트를 나열한 것이 아닌, 사용자의 질문과 그 질문에 구체적으로 어떤 형태의 답변을 해야 하는지를 사람이 직접 레이블링한 '어시스턴트' 파트의 쌍으로 구성된 데이터셋이다. 모델마다 차이는 있지만 보통 수만 개 정도의 어시스턴트 데이터셋을 사용하는 것으로 보인다. 

 

그림 5. 어시스턴트 데이터셋 예.

 

 

어시스턴트 데이터셋을 구축할 때는 기본적인 지시사항(instruction)이 있다. 다음의 그림은 InstructGPT의 레이블링 지시 사항(instruction)의 일부이다. 질문자에게 도움이 되는지(helpful), 진실성이 있는지(truthful), 답변 내용이 무해한지(harmless)에 대한 항목이 특히 강조되어 있는 것을 볼 수 있다.

 

그림 6. 어시스턴트 데이터셋 레이블링 지시사항.



 이러한 미세조정 과정을 지시 기반 미세조정(instruction fine-tuning) 또는 지도 미세조정(supervised fine-tuning, SFT)라고도 한다. 지시 기반 미세 조정은 다양한 형태로  이루어진다. 다음 그림의 구글 사의 Flan-PaLM 모델에 사용된 어시스턴트 데이터셋은 1836 종류의 카테고리를 가지고 있다. 이를 통해, 모델은 단순히 자연스러운 문장을 생성하는 것 뿐 아니라 사용자의 의도에 맞고 맥락에 맞는 답변을 하는 방법을 학습하게 된다.

 

그림 7. 구글 사의 Flan-PaLM 모델에 사용된 어시스턴트 데이터셋 설명.

 

 

 

사람처럼 채점하는 목적 함수를 만들자: 보상 모델과 정책 모델

 사용자의 의도를 잘 이해시키기 위해 어시스턴트 데이터셋을 구축했더라도, 모델이 이를 잘 이해하여 학습에 반영하는 것은 쉽지 않다.  최대 우도 추정(maximum likelihood estimation, MLE)과 같은 일반적인 목적 함수는 모델이 맥락에 맞는 답변을 했는지 아닌지를 판단하여 적절한 손실을 계산하는 데에 한계가 있다. 그래서, 연구자들은 이러한 목적 함수 자체를 사용자의 의도에 맞게 학습시킬 수 있도록 매개변수화 하고자 했다. LLM을 학습시키는 것은 목적 함수가 아닌 별도의 어떤 모델이다.  

 

 이렇게 목적 함수를 모델로 대체할 때, 사용되는 것이 강화학습 모델이다. 강화학습은 에이전트(agent)가 주변 환경(environment)과 행동(action), 보상(reward)을 통해 소통하며 최적의 정책(policy)를 찾는 과정이라고 할 수 있다. 에이전트는 모델, 주변 환경은 입력값에 해당한다. 모델은 정책을 기준으로 행동을 취하게 되고, 그에 따른 보상을 얻고 이를 바탕으로 다시 정책을 수정한다. 

 

그림 8. 강화학습을 표현한 간단한 도식

 

 

 언어 모델에 강화학습을 적용하는 과정에서 다시 한 번 사람이 개입하는데, 언어 모델이 같은 질문에 대해 여러 종류의 답변을 생성하면 이 답변들을 사람이 직접 채점한다.  보상 모델은 이 데이터를 바탕으로 사람이 채점하는 행동을 모사하는 방향으로 학습을 하여, 사람과 유사하게 언어 모델의 답변을 채점할 수 있게 된다.  이는 정책 모델을 통해 언어 모델에 적용되는데, 그러면 언어 모델은 사람이 선호하는 답변을 출력하도록 미세조정이 이루어지게 된다.  

 이 과정은 언어 모델의 사본을 하나 생성하여 진행되는데, 미세조정으로 업데이트되는 언어 모델과 원래 언어 모델 간의 차이가 너무 크지 않도록 약간의 조정이 이루어진다. 정책 모델의 경우 2017년 OpenAI에서 제시한 PPO(Proximal Policy Optimization)라는 알고리즘을 사용한다.

 

그림 9. 사람의 채점을 기반으로 한 보상 모델 학습.
그림 10. 보상 모델과 정책 모델을 이용한 언어 모델 미세 조정.

 

 

 

적은 정보만으로 정답을 추론할 수 있도록: 퓨샷 러닝과 메타 러닝

 퓨샷 러닝(few-shot learning)은 소수의(few) 데이터만 있어도 우수한 성능의 모델 구축이 가능하도록 설계된 학습 알고리즘이다. 미세조정이나 전이학습의 경우 대량의 데이터셋 확보가 어려운 경우가 많은데,  퓨샷 러닝을 이용하면 적은 데이터나 예제만 가지고도 지정한 작업을 더 잘 수행할 수 있다. 퓨샷 러닝은 인-콘텍스트 러닝(in-context learning)이라는 모델 튜닝 방법론의 하위 개념이지만 퓨샷 러닝이라는 단어가 더 널리 쓰이고 있다. '러닝'이라는 단어의 의미와 달리, 엄멀히 말하면 인-콘텍스트 러닝은 모델 내부의 파라미터를 변화시키진 않는다. 하지만 인-콘텍스트 러닝이 분명히 모델의 추론 능력을 변화시키는 부분이 있는데, 자세한 부분은 추후 다른 포스트에서 다루고자 한다.

  

 퓨샷 러닝을 잘 수행할 수 있도록 하는 방법 중 하나가 메타 러닝(meta learning)이다. OpenAI 사의 GPT-3 모델에서도 사용한 방법이 다. 메타(meta)라는 접두어는 함께 사용되는 개념의 한 단계 더 위에 있는 것을 가리킬 때 사용한다. 따라서, 메타 러닝은 ‘학습하는 방법을 학습’한다는 의미를 가진다. LLM에서 메타 러닝은 모델이 훈련 데이터에 없는 새로운 데이터에 대해서도 예측을 잘 수행할 수 있도록 하는 알고리즘이다. 메타 러닝을 위해서는 특수한 형태의 데이터셋이 필요한데, 서포트 셋(support set)과 쿼리 셋(query set)이다.

 

 동물 이미지 분류 모델을 예로 들어보자, 그림 11의 서포트 셋을 보면 N은 데이터의 카테고리 수이며 K는 각 카테고리의 데이터 수이다. 모델은 이 서포트 셋만을 단서로 하여, 쿼리 셋의 동물 이미지로 각 동물의 종류를 맞춰야 한다. 대용량의 데이터가 아닌 한정된 N이나 K를 가진 적은 수의 데이터를 보고 정답을 추론해야 하므로, 학습이 반복되면 모델은 평가 단계에서 적은 수의 데이터만 주어지더라도 정답을 맞출 가능성이 높아질 것이다.  이 K 값에 따라, K-샷 러닝(K-shot learning)이라는 이름을 붙이게 된다. 퓨샷 러닝 외에도 원샷(one-shot), 제로샷(zero-shot) 러닝이라는 개념도 존재한다. K-샷 러닝과 메타 러닝의 개념도 종종 혼용되는데, 용어 그 자체보다는 학습 양상을 기억하는 것이 좋다. 

 이는 스무고개 게임같이, 힌트를 계속 주면서 정답을 맞추는 게임에 비유할 수 있다. 우리는 적은 수의 질문만으로 정답을 맞추는 사람을 똑똑하다고 판단할 것이다. 적은 수의 예제(shot)만으로 정답을 맞출 수 있는 모델일수록 더 추론 능력이 우수한 모델이라고 할 수 있다.

 

 

 

그림 11. 이미지 분류 모델에서 퓨샷 러닝의 양상.

 

 

 언어 모델에서, 퓨샷 러닝 프로세스는 다음과 같이 이루어진다(그림 12). 지시(task description)에 대한 질문과 정답 쌍(example)을 하나(one-shot) 또는 여러 개(few-shot), 혹은 정답 없이 질문 하나만 제시할 때(zero-shot) 최종 질문(prompt)에 대한 정답을 잘 맞추도록 모델을 학습시키게 된다.

 

그림 12. 언어 모델에서 퓨샷 러닝의 양상.

 

 

 LLM과 함께 등장한 프롬프트 엔지니어링(prompt engineering)은 바로 이러한 퓨샷 러닝을 모델에 잘 적용하는 것과 관련되어 있다.  퓨샷 러닝을 이해하고 모델이 학습한 형태로 프롬프트에 예제를 잘 구성하여 제공하면, 모델에게서 더 나은 답변을 기대할 수 있다. 퓨샷 러닝은 LLM을 정의할 때 언급했던 '창발적 능력'과도 관련되어 있다. 적은 데이터만이 주어졌을 때에도 작업을 잘 수행할 수 있는 것은 창발적 능력의 한 가지 기준이 된다. 또한, 퓨샷 러닝 성능이 높은 모델은 사용자가 추가적인 미세조정 없이도 원하는 의도의 답변을 잘 이끌어낼 수 있도록 한다. 미세조정은 언어 모델에 대한 지식이나 데이터셋 구축, 학습 장비가 필요한 번거로운 작업이기 때문에 퓨샷 러닝은 LLM이 대중화되는 데에 큰 역할을 했다.

 

 

마치며

이 글에서는, LLM이 어떤 요소들로 인해 높은 성능을 보일 수 있었는지 알아보았다. LLM이 달성한 높은 수준의 언어 어 능력은 단순히 그 규모만 커진 것 때문이 아니라, 다양한 아이디어와 실험의 결과들이 더해져지면서 복합적으로 이루어졌다.
이어질 포스트들에서는 이 글에서 간략히 언급되었던 모델이나 알고리즘을 좀 더 자세히 알아볼 것이다.

 

 

댓글