Post

[Study] Build a Larage Language Model 01: LLM 이해

Large Language Model을 활용하는 팀에 있으며, 해당 분야에 대한 기본 역량 을 다듬을 목적으로 “Build a Large Language Model” 이라는 책을 가지고 사내 스터디를 진행하고자 한다.

Chapter1: Understanding Large Language Models

Large Language Model은 방대한 양의 텍스트 데이터를 파싱하고 이해하는 뛰어난 능력을 바탕으로 기계 번역, 텍스트 생성, 감정 분석, 요약 등 다양한 분야에서 활약하고 있다. 이러한 LLM의 근간에는 트랜스포머 아키텍처가 있다.

LLM을 만드는 과정은 크게 사전 훈련(Pre-training)과 미세 조정(Fine-tuning), 두 단계로 나눌 수 있다.

사전 훈련 (Pre-training)

: 이 단계에서는 레이블이 없는 방대한 ‘원시(raw)’ 텍스트 데이터를 사용하여 모델을 훈련한다. 모델은 데이터의 구조 자체를 활용해 “다음 단어 예측”과 같은 과제를 수행하며 언어에 대한 광범위한 이해를 학습한다. 이 과정을 거친 모델을 파운데이션 모델(Foundation Model) 또는 베이스 모델(Base Model)이라고 부른다. 이 모델들은 문장을 완성하거나, 몇 가지 예시만으로 새로운 작업을 수행하는 ‘퓨샷(few-shot)’ 학습 능력을 보여준다. 사전 학습에서 흥미로운 부분은 LLM은 사전 훈련 단계에서 자기지도 학습 방식을 사용한다는 것이다. 이는 사람이 정답을 알려주지 않아도, 모델이 데이터 내에서 스스로 학습할 규칙을 찾아내 언어의 패턴을 익히는 것인데, 이는 방대한 양의 데이터를 학습한다는 조건을 충족하기에 가능한 학습이라고 개인적으로 생각을 하고 있다.

  • Causal Language Modeling, CLM : 다음 단어 예측
    • GPT 계열 모델들이 주로 사용하는 사전학습 기법으로 텍스트 생성에 강점을 가진다.
    • 방식: 문장의 일부가 주어졌을 때, 바로 다음에 올 단어를 예측하며 학습한다.
  • Masked Language Modeling, MLM : 마스크된 언어 예측
    • BERT 계열의 모델들이 사용하며, 문장의 양방향 문맥을 모두 이해하는 데 유리해 자연어 이해 성능이 뛰어나다.
    • 방식: 문장 중간의 단어를 무작위로 가리고(masking), 주변 문맥을 이용해 가려진 단어를 맞추도록 학습한다.

미세 조정 (Fine-tuning)

: 사전 훈련된 파운데이션 모델을 특정 작업에 더 적합하도록 만드는 과정이다. 여기서는 ‘질의-응답’ 쌍처럼 레이블이 지정된, 사전학습에 비해 비교적 적은 양의 데이터를 사용한다. 예를 들어, 특정 지시를 잘 따르도록 훈련하는 Instruction Tuning 이나, 스팸 메일 분류처럼 특정 카테고리로 나누도록 훈련하는 Fine-tuning for Classification이 있다. 이 책에서는 이 두 가지 미세 조정 방법의 코드 구현까지 깊이 있게 다룰 예정이라고 한다.

  • Supervised Fine-tuning, SFT
    • 지시와 정답 쌍으로 구성된 데이터셋을 사용해 모델이 사용자의 지시를 따르도록 학습한다. Instruction Tuning 이라고도 불림.
  • RLHF: 인간 피드백 기반 강화 학습
    • 모델이 생성한 여러 답변 중 어떤 것이 더 나은지 사람이 직접 평가한 데이터를 사용한다. 이 평가 데이터를 바탕으로 ‘보상 모델’을 만들고, LLM이 이 보상 모델로 부터 높은 점수를 받는 답변을 생성하도록 강화 학습을 진행한다.
  • Parameter-Efficient Fine-tuning, PEFT
    • 대부분의 파라미터는 그대로 두고, 아주 일부의 파라미터만 추가하거나 수정하여 효율적으로 미세조정하는 기법으로 LoRA, QLoRA 와 같은 것들이 있다.

+ Post-training

: 책에서 나와있는 내용은 아니지만, 요즘 사전학습, 미세 조정 외에도 자주 들리는 단어여서 간략하게 소개하고자 한다. Post-training은 사전 훈력과 미세 조정의 ‘중간 다리’ 역할을 하는 단계라고 이해하면 쉬울 것 같다. 일반적으로 ‘Continued Pre-training’을 의미하며, 사전 훈련이 끝난 모델을 특정 도메인의 대규모 데이터로 추가 사전 훈련을 하는 단계이다. 그러므로 해당 작업을 Open-weight 모델을 가지고 학습을 진행할때 Instruct 모델이 아닌 Base 모델에서 진행할 수 있다.


트랜스포머 아키텍처 파헤치기

2017년 구글의 논문 “Attention Is All You Need”에서 처음 소개된 트랜스포머 아키텍처는 자연어 처리 분야에 혁명을 가져왔다고 생각한다. 원래 트랜스포머는 기계 번역을 목적으로, 입력 문장을 이해하는 인코더와 번역된 문장을 생성하는 디코더 두 부분으로 구성되었다. 인코더는 입력 문장의 의미와 문맥을 압축된 표현(Embedding)으로 만들고, 디코더는 이 표현을 받아 번역문을 한 단어씩 생성해냅니다. 이 과정의 핵심에는 Self-attention 메커니즘이 있다. 이 메커니즘 덕분에 모델은 문장 내 단어들의 관계 중요도를 스스로 파악하여 문맥을 더 정확하게 이해할 수 있다. (해당 내용에 대해서는 이후 챕터에서 자세히 다룰 예정이다.)

💡 GPT는 디코더만 사용하는데 그래도 트랜스포머인가?

“LLM은 트랜스포머 아키텍처를 사용한다면서, 왜 ChatGPT 같은 모델은 디코더만 사용한다고 할까?” 라는 의문이 있었고 왜 트랜스포머 아키텍처라고 부르는지 쉽게 이해하지 못했다. 그리고 다음과 같은 히스토리를 도출했다.

트랜스포머가 처음 등장한 이후, 연구자들은 전체 아키텍처가 아닌 특정 부분만으로도 뛰어난 성능을 낼 수 있다는 것을 발견했다.

  • 인코더(Encoder) 중심 모델: BERT가 대표적이며, 문장 전체의 문맥을 양방향으로 이해하는 데 특화되어 있어 문장 분류나 개체명 인식과 같은 자연어 이해(NLU) 작업에 강점을 보인다.
  • 디코더(Decoder) 중심 모델: GPT 계열 모델들이 여기에 속한다. 이전 단어들을 바탕으로 다음 단어를 예측하며 텍스트를 생성하는 데 탁월한 능력을 보여 자연어 생성(NLG) 작업에 주로 사용된다.

ChatGPT와 같은 생성형 AI는 ‘다음 단어 예측’ 이라는 자기 지도 학습 방식으로 사전 훈련된다. 이 작업은 문장의 시작부터 끝까지 순차적으로 정보를 처리하는 디코더의 구조에 매우 적합하다. 따라서 효율성을 위해 인코더 부분을 제외하고 디코더 부분만을 활용하였는데 성능이 좋았다. 인코더를 제외하긴 했지만, 트랜스포머 아키텍처의 핵심 아이디어(셀프 어텐션 등)를 계승하고 그 일부를 변형하여 사용하기에, 여전히 ‘트랜스포머 기반 모델’이라고 부를 수 있다고 한다.


인코더와 디코더의 활용

Encoder with Embedding model

  1. 시멘틱 검색 & RAG의 핵심 엔진

LLM의 가장 큰 단점인 환각을 보완하기 위해 RAG를 주로 활용하는데, 이 RAG에서 ‘검색’ 단계에서 인코더 모델이 사용자의 질문의도와 문서간의 유사도를 판별하는 역할을 수행할 수 있다. (임베딩 모델의 인코더의 일부)

  1. NLU 작업

문장의 긍/부정 분석, 스팸 메일 분류, 뉴스 기사 카테고리 분류, 문장 간 의미 유사도 측정 등 문맥을 ‘이해’하고 ‘분류’하는 작업에서 거대한 디코더 모델보다 인코더 모델이 비용 및 리소스 적으로 훨씬 효율적일 수 있다. 거대한 모델이 더 정확하게 분류 해 줄 수 있지만, 분류를 위한 비용을 산출해보면 인코더 모델이 큰 강점을 가져간다.

Decoder with GPT

디코더 활용 사례로 가장 유명한 사례로 GPT가 있다. 디코더 아키텍처는 텍스트를 넘어 다양한 분야에서 순차적인 데이터를 생성하는 핵심엔진으로 활용한다.

+ 컴퓨터 비전 (Computer Vision)

  • 이미지 캡셔닝 (Image Captioning): 이미지 한 장을 보고 “공원에서 강아지와 함께 산책하는 사람”과 같은 설명 문장을 만들어내는 기술이다. 이미지의 특징을 인코더가 압축하면, 디코더가 이 정보를 바탕으로 설명 문장을 단어 하나하나 순서대로 생성한다.
  • 객체 탐지 (Object Detection): 이미지 속 객체들의 위치와 종류를 찾아내는 기술입니다. DETR (DEtection TRansformer)과 같은 모델은 디코더를 사용해 이미지 속에 있는 [사람, 위치좌표], [강아지, 위치좌표]와 같은 객체 정보를 순차적으로 생성해낸다.

+ 음성 및 음악

  • 음성 합성 (Text-to-Speech, TTS): 입력된 텍스트를 사람의 목소리로 바꾸는 기술이다. 디코더는 텍스트 정보를 바탕으로 음성의 파형 데이터나 스펙트로그램을 순차적으로 생성하여 자연스러운 목소리를 만들어낸다.
  • 음악 생성 (Music Generation): 기존 멜로디의 다음 부분을 이어 작곡하거나, 특정 장르의 음악을 새로 만들어내는 데 사용된다. 오디오 데이터를 순차적인 정보로 보고, 디코더가 다음 음표나 사운드를 예측하며 음악을 생성한다.

+ Mamba 아키텍처의 등장

해당 글을 마무리 하기전에, 트랜스포머 아키텍처를 이야기 한 김에, 최근 트랜스포머의 대안으로 들리는 맘바(Mamba) 아키텍처를 가볍게 소개하고자 한다. Mamba 와 Transformer의 가장 큰 차이는 문맥을 처리하는 방식이다. 트랜스포머의 셀프 어텐션은 문장의 모든 단어 쌍의 관계를 계산하기 때문에 문장이 길어질수록 계산량이 기하급수적으로 늘어나는 단점이 있다. 반면, 맘바는 상태 공간 모델(State Space Model, SSM)을 기반으로, 이전 정보들을 효율적으로 압축하여 다음 단어를 예측한다. 이 덕분에 더 긴 시퀀스의 데이터를 더 빠르고 효율적으로 처리할 수 있다.

  • Transformer: 복잡한 언어 구조와 문장 전체의 미묘한 문맥을 파악하는 데 여전히 강력한 성능을 보인다.
  • Mamba: 긴 문서의 처리, DNA 서열 분석 등 매우 긴 시퀀스가 중요한 분야에서 계산 효율성과 속도 면에서 큰 장점을 가진다.
    • 무한에 가까운 컨텍스트 길이: 이론적으로 수백만 토큰 길이의 문맥도 처리할 수 있어, 책 한 권 전체를 입력하고 질문에 답하는 등의 작업이 가능해진다.
    • 빠른 추론 속도: 다음 단어를 예측할 때 필요한 계산량이 훨씬 적어, 트랜스포머 기반 LLM보다 훨씬 빠르게 답변을 생성할 수 있다.
    • 적은 메모리 사용: 추론 시 차지하는 메모리(KV 캐시)가 거의 없어 더 작은 하드웨어에서도 구동이 가능하다.
    • https://huggingface.co/tiiuae/falcon-mamba-7b
    • https://huggingface.co/mistralai/Mamba-Codestral-7B-v0.1
    • https://huggingface.co/Zyphra/BlackMamba-1.5B
This post is licensed under CC BY 4.0 by the author.