# Understanding large language models

<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">이 글은 <a target="_self" rel="noopener noreferrer nofollow" href="https://www.manning.com/books/build-a-large-language-model-from-scratch" style="pointer-events: none">Build a Large Language Model</a>을 읽고 개인적으로 정리한 내용입니다.</div>
</div>

### **This chapter covers**

* 대규모 언어 모델(Large Language Models, LLM)의 기본 개념에 대한 고수준 설명
    
* ChatGPT와 같은 LLM 모델이 사용하는 트랜스포머 아키텍처에 대한 통찰
    
* LLM을 밑바닥 부터 구현하기 위한 계획
    

## 1.1. What is an LLM?

* 인간이 하는 것과 유사하게 텍스트를 이해/생성/응답하기 위해 설계된 신경망
    

## 1.2. Applications of LLMs

* 텍스트 다루는 모든 작업을 자동화하는 데 유용함
    

## 1.3. Stages of building and using LLMs

* LLM 대부분 [PyTorch](https://github.com/pytorch/pytorch)로 구현하는게 De facto
    
* 특정 도메인 용도로 설계된 LLM은 ChatGPT와 같은 Foundation model보다 더 뛰어난 성능을 보임
    
    * [Introducing BloombergGPT](https://www.bloomberg.com/company/press/bloomberggpt-50-billion-parameter-llm-tuned-finance/): 금융 분야 특화
        
* LLM 만드는 과정
    
    * Pretraining (사전 훈련)
        
        * 대규모 데이터셋으로 처음 훈련하는 초기 단계
            
        * 사전 훈련 이후 Foundation Model이 됨, 여기서 추가로 Fine-tuning 가능
            
        * Text Completion 가능
            
            * Input: “The weather today is really”
                
            * output: “nice and sunny.”
                
        * Few-shot Capabilities 보유
            
        * ```plaintext
                  English: Hello
                  Korean: 안녕하세요
                  
                  English: Thank you
                  Korean: 감사합니다
                  
                  English: Good morning
                  Korean: [모델이 "좋은 아침입니다" 생성]
            ```
            
        * Foundation Model = Base Model (사전 훈련만 완료된 상태)
            
            * e.g. GPT-4 base, [Kanana-1.5-8b-base](https://huggingface.co/kakaocorp/kanana-1.5-8b-base)
                
        * Foundation Model + Fine-tuning = Fine-tuned Model
            
            * e.g. GPT-4
                
        * 근데 마케팅 때문인지 GPT 같은 일반적인 모델도 Foundation Model이라고 부르는 듯
            
    * Fine-tuning (미세 조정): LLM을 라벨이 지정된 데이터로 추가 훈련시킴
        
    * Fine-tuning 이후 RLHF도 가능 (강화 학습)
        
        * 인간이 매긴 선호도 점수를 보상으로 사용함
            
        * 근데 여기서 bias가 높아지고 성능이 더 낮아질 수도 있을 듯
            
        * GPT는 이러한 과정에서 윤리적 기준을 준수하도록 조정됨
            
            * [원래 테러하는 방법도 알려줌 (p84)](https://cdn.openai.com/papers/gpt-4-system-card.pdf)
                

## 1.4. Introducing the transformer architecture

* 현대 LLM은 “[Attention Is All You Need](https://arxiv.org/abs/1706.03762)”에서 소개된 트랜스포머 아키텍처에 기반하는 게 De facto
    
    * 해당 논문을 기점으로 Attention을 쓰는 딥러닝 모델 대부분은 Self-Attention 방식을 채택
        
* Transformer Architecture는 인코더, 디코더라는 두 가지 서브모듈로 구성됨
    
    * 둘 다 Self-Attention mechanism에 의해 연결된 여러 층으로 구성
        
    * Self-Attention: 문장 내의 각 단어가 같은 문장의 다른 모든 단어들과 얼마나 관련이 있는지를 계산
        
* Transformer Architecture 후속 변형 (BERT, GPT)
    
    * BERT: 단어 예측 특화, GPT: 텍스트 생성 특화
        
    * 근데 갑자기 GPT가 예측도 잘 함 !!
        
        * [Emergent Abilities of Large Language Model](https://arxiv.org/abs/2206.07682)
            

## 1.5. Utilizing large datasets

* 훈련 데이터셋의 규모와 다양성이 일반적으로 우수한 성능을 발휘할 수 있게 함
    
* 훈련 데이터셋은 어떻게 구성하는 지 궁금함
    
    * [Constitutional AI(CAI)](https://arxiv.org/abs/2212.08073) 훈련으로 극단적 bias나 misinformation 등을 줄일 수 있음
        
    * Self-Supervised Learning 학습 방식 사용 시 인간이 어떤 텍스트 데이터를 입력할 지만 결정하면 됨
        
    * 근데 결국 여기서 인간이 데이터 선정하면 편향이 있을 수 밖에 없지 않나? 그 전에, 무엇을 문제라고 정의해야 하는가? 인간이 무엇을 문제라고 정의하는 과정에서도 편향이 있을 수 있지 않나?
        

## 1.6. A closer look at the GPT architecture

* GPT(Generative Pretrained Transformer)는 다음 단어 예측으로 사전 훈련됨
    
* 본질적으로, 인코더 없이 디코더 부분만을 사용함
    
* 텍스트를 한 번에 한 단어씩 예측하여 생성하기 때문에, 자동 회귀 모델(auto-regressive model)로 간주됨
    
    * 자동 회귀 모델은 이전 출력을 미래 예측의 입력으로 포함함
        
    * 각 새로운 단어가 이전 시퀀스를 기반으로 선택되어 결과 텍스트의 coherence을 향상시킴
        
    * ```plaintext
              입력: "오늘 [MASK] 정말 좋다"
              
              GPT (자동회귀): "오늘" → "날씨가" 예측 (순차적)
              BERT: "오늘 + 정말 + 좋다" → "[MASK]" 예측 (양방향)
        ```
        
    * 그럼 이전 시퀀스가 길 수록 메모리, 토큰 비용 이슈가 있지 않나?
        
        * 컨텍스트 윈도우 = 모델이 한 번에 기억할 수 있는 토큰 수
            
        * 슬라이딩 윈도우 = 최근 N개 토큰만 보기
            
        * 어텐션 효율화 - Sparse attention, Linear attention 등으로 계산량 줄이기
            
        * 계층적 처리 - 중요한 부분만 선별해서 압축
            
        * 모든 Transformer는 attention을 사용하고, attention이 O(n²) 복잡도를 가지기 때문에 메모리/계산 제약으로 인한 컨텍스트 윈도우가 필요
            
    * Few-Shot 수행 가능
        
        * [Language Models are Few-Shot Learners](https://arxiv.org/abs/2005.14165)
            
        * 위 논문에서 Zero-Shot보다 One-Shot이 정확도 약 5배 높음
            
        * ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1754638486885/40476647-bec2-448d-8a72-1be27f44b09a.png align="center")
            

## 1.7. Building a large language model

* 이제부터 우리는 GPT의 기본 아이디어를 청사진으로 삼아 세 단계를 다룰 것
    
    * 기본적인 전처리 단계
        
    * GPT 유사 LLM 코딩, LLM 평가
        
    * 질의응답이나 텍스트 분류와 같은 지시를 따르도록 Fine-tuning
        

## Summary

* 현대 LLM은 두 가지 주요 단계로 훈련
    
    * 먼저, 문장 내 다음 단어 예측을 "라벨"로 사용하여 라벨이 없는 대규모 텍스트 코퍼스에서 사전 훈련
        
    * 그런 다음, 더 적은 수의 라벨을 가진 지정된 데이터셋에서 지시를 따르거나 분류 작업을 수행하도록 미세 조정
        
* LLM은 트랜스포머 아키텍처 기반
    
* 트랜스포머 아키텍처의 핵심 아이디어는 어텐션 메커니즘으로, 이는 LLM이 출력을 한 단어씩 생성할 때 전체 입력 시퀀스에 선택적으로 접근할 수 있게 해줌
    
* 맞춤형 데이터셋에서 미세 조정된 LLM은 특정 작업에서 일반 LLM보다 더 나은 성능을 발휘할 수 있음
