Foundation Model
대량의 데이터를 학습하여 다양한 작업을 수행할 수 있는 AI 모델
- GPT-4, Claude, Gemini, LLaMa etc ..
- 텍스트 생성, 번역, 코드 작성, 이미지 생성
- Fine-tuning, prompt engineering
설계 요소
- 훈련 데이터
- 훈련 데이터의 품질과 분포는 모델의 성능과 한계를 결정하는 가장 중요한 요소 중 하나임
- 모델 아키텍처
- 모델 크기
- post-training: 모델을 인간 친화적으로 조정
이 장에서 다룰 내용들
- Transfomer는 왜 강력함 ?!
- 이 아키텍처가 언제까지 AI 지배할 수 있을 것 같음 ?!
- 미래의 새로운 아키텍처는 어떨까 ?!
- 모델 크기를 결정하는 과정은 어떻게 이루어짐 ?!
Training: Pre-training/Post-training
Pre-training
- 방대한 데이터로부터 패턴, 일반적인 지식을 학습
- 모델은 언어 이해 능력을 갖게 되는데, 신뢰성, 유용성은 보장x
Post-training
- 사전 훈련된 모델을 인간의 기대에 맞게 조정하는 과정
- 모델이 우리 입맛에 맞는 답변을 제공할 수 있도록 개선함
- RLHF(Reinforcement Learning from Human feedBack)
Training Data
모델의 성능은 훈련 데이터에 달림
훈련 데이터 수집은 어려웡
“use what we have, not what we want”
대부분 이용 가능한 데이터를 기반으로 학습함
- example) 법률 문서를 기반으로 훈련되지 않은 모델은 법률 질문에 대한 정확도가 낮음
⇒ 해당 분야에 맞는 데이터를 직접 구축하는 과정이 필요함
⇒ 범용적인 AI 모델을 특정 데이터로 fine-tuning하여 성능을 개선
그렇다고 해서 모든 데이터, 걍 막무가내로 많은 데이터를 학습하라는 것이 아님!
- Gunasekar at. l.(2023) 데이터의 양보다 품질이 더 중요할 수 있음
- 웹사이트를 정기적으로 수집하는 대규모 웹 데이터셋
- 근데 데이터 품질 논란 있음, 그럼에도 주요 훈련 데이터로 사용
- 그럼 저품질 데이터 필터링은 ?! Heuristics
Multilingual models
Low-resource Languages
훈련 데이터가 부족해서 번역 성능이 낮거나 문장 생성 품질이 떨어질 가능성이 높음
영어 데이터를 활용한 번역 학습을 진행
general-purpose models에서 영어 성능 평가 결과가 좋은 이유는 ?!
인터넷 데이터에서 영어가 차지하고 있는 비중이 높기 때문에 (45.88%)
MMLU(Massive Multitask Language Understanding) 벤치마크
AI모델이 다양한 분야에서 얼마나 잘 이해하고 추론할 수 있는지를 측정하는 대표적인 평가 기준
🏷️ MMLU
zero-shot, few-shot 성능을 측정함
- zero-shot
- 라벨링 되지 않은 새로운 클래스에 대한 분류 작업을 수행할 때, 이전에 학습된 모델을 사용하여 분류하는 기술
- few-shot
- 한 클래스당 일부 샘플 이미지만 사용해서 새로운 클래스를 인식하는 것
- zero-shot
GPT-4의 성능 결과
- 영어에서 최고
- 데이터가 부족한 언어는 성능 떨어짐
- 그럼, 비영권 언어를 사용하여 AI모델을 사용할 경우 생기는 문제점은 ?!
특정 언어에서 다른 언어보다 잘못된 정보를 생성할 가능성 있음
NewsGurad(2023) 실험
- GPT-3.5에게 중국과 관련된 가짜 뉴스 기사를 생성하도록 요청함
- 요청 7개중 영어는 6개/중국어는 7개를 허용
- 중국어로 잘못된 정보를 생성할 가능성이 높음 ㅋㅋ..ㅠ
MaSSIVE 벤치마크에서 GPT-4의 다국어 토큰 길이 분석 (Yennie Jun)
- 같은 문장이라도 언어에 따라 평균 토큰 길이에 차이가 생기고, 문장 생성에 더 많은 시간이 걸림
finetuning해서 성능을 향상시키기
Modeling
Model Architecture
Transformer architecture
이전에 스터디한 내용 참고해도 좋음! Transformer
Inference(추론)
Prefill(사전 연산)
입력 토큰들을 병렬로 처리하여 필요한 상태(Intermediate State) 생성
모든 입력 단어의 Key, Value 벡터를 생성
✅ 병렬 연산이 가능하여 빠르게 연산
Decode(출력 생성)
모델이 하나씩 (output token by token) 출력을 생성
❌ 출력은 하나씩 생성해야 하기 때문에 디코딩 단계에서는 여전히 순차적 처리 필요
Seq2Seq(sequence to sequence)
- 2014년, 기계 번역, 요약 작업에서
- 2016년, 구글에서 Google Translate에 사용함
문제점
- 출력 생성 시 Final hidden state만 사용함 → 정보 손실 발생
- RNN 기반 아키텍쳐 → 순차적으로 데이터 처리 → 긴 문장에서는 속도가 느림
- 병렬 처리가 어려움
Attention-mechanism
연산 과정
- Query, key 벡터의 내적을 계산하여 유사도를 측정
- 유사도가 높은 Key 값에 해당하는 value 정보를 더 많이 반영
- Soft max 연산을 통해서 가장 중요한 토큰에 높은 가중치를 부여
Transformer block
- Transformer는 Transformer Blocks로 구성
- Transformer Blocks ⇒ Attention Module + Multi-Layer Perception Module
- Attention Module
- Q(Query), K(Key), V(Value), Output Projection(O)
- Multi-Layer Perception Module
- Linear Transformation
- 가중치 행렬로 표현
- Activation Function
- 비선형 패턴을 학습할 수 있도록 도움
- Linear Transformation
- Attention Module
- Transformer Blocks ⇒ Attention Module + Multi-Layer Perception Module
Other model architecture
트랜스 포머의 한계
- 긴 문맥 길이 처리, 메모리 효율성 문제
S4 (Structed State Space Model, SSM)
- 긴 문맥을 더 효율적으로 처리하도록 설계
- 메모리 효율적, 계산량이 줄어들어
H3 (Hungry Hungry Hippos)
초기 토큰을 기억하고, 문맥 내에서 토큰을 비교하는 메커니즘을 추가
트랜스포머의 어텐션과 유사함 근데 더 효율적?! 왜일까
1️⃣ SSM 기반으로 문장의 길이에 관계없이 선형적인 연산량으로 동작
2️⃣ attention 없는 병렬 연산 가능
3️⃣ 재귀적으로 동작하면서 캐시를 효율적으로 사용, 이전 상태를 재사용하면서 문맥을 점진적으로 업데이트함
모델이 이전 토큰들을 더 잘 기억하고 활용할 수 있도록 설계됨
Mamba (Linear-Time sequence modeling)
- 트랜스포머와 비교하여 더 효율적인 시퀀스 모델 제공
- attention mechanism ❌
- 모든 토큰을 훓지 않고 문맥 state를 별도 저장하고 선택적으로 결정
- introduction heads 테스크는 LLM의 맥락 내 학습 능력의 대부분을 설명하기 위해 가설화된 테스트, 문맥 인식 추론능력이 필수적
- 계산량이 시퀀스 길이에 선형적으로 증가, 계산량이 더 적음
- 모든 토큰을 훓지 않고 문맥 state를 별도 저장하고 선택적으로 결정
Jamba (Hybrid Transformer-Mamba)
- 트랜스포머와 Mamba 레이어를 조합하여 더 효율적인 모델을 생성
- Transformer, Mamba블록을 번갈아 배치하여 모델 효율성 향상
- MoE(Mixture of Experts): 52B 파라미터, 80GB GPU에서 실행 가능하도록 설계
- 트랜스포머와 Mamba 레이어를 조합하여 더 효율적인 모델을 생성
Model Size
모델 크기를 결정하는 것들
파라미터 개수
모델의 학습 용량 결정학습된 토큰 개수
모델이 얼마나 많은 데이터를 학습했는지 결정FLOPs
모델 학습에 필요한 총 연산량 결정
일반적으로 파라미터 많으면 성능 뛰어남
파라미터의 영향
- 필요한 계산량, 메모리 사용량 결정
- sparse model: 데이터 저장과 연산을 더 효율적으로 수행
- MoE, 실제 연산량은 적음
모델 크기가 크더라도 충분한 데이터가 학습되지 않으면 성능이 떨어질 수 있음
데이터셋 크기
,학습에 사용된 총 토큰 개수
의 차이데이터셋 크기와 실제 학습에서 사용된 토큰 개수 다름
긍까 1조 토큰을 포함한 데이터셋을 2 epoch을 돌리면 총 2조 개의 학습 토큰이 사용되었다고 할 수 있음
Llama1 1.4토큰, Llama2 2조 토큰, Llama3 15조 토큰 이 학습할 때 사용되었다고 함 ..
연산량 및 성능 측정
- FLOP(Floating Point Operation): 모델 학습에서 사용되는 총 연산량
- FLOPs(FLOP per second, 초당 연산량): GPU, TPU 등의 컴퓨팅 장치 성능을 측정하는 단위
- GPU의 성능은 항상 100%가 아님
Scaling Law: Building compute-optimal models
Scaling law: 파라미터 개수, FLOPs, 학습 토큰 개수 간의 관계를 나타내는 법칙
주어진 계산 리소스 내에서 최적의 모델 성능을 내도록 설계
1️⃣ 모델 성능은 모델 크기와 데이터 크기에 의존
2️⃣ 더 큰 모델과 더 많은 데이터는 더 많은 연산량을 필요로 함
3️⃣ 연산량은 비싸기 때문에 최적의 모델 크기, 데이터 크기를 설정하는 것이 매우 중요하다
Chinchilla Scaling Law(친칠라 스케일링 법칙)
- 고정된 연산량 내에서 최적의 모델 크기와 학습 데이터 크기를 결정함
- 파라미터 개수를 늘리면, 학습 데이터의 양도 비례해서 증가해야 함
모델 개선이 진행되면 진행될수록 성능 향상 비용은 기하급수적으로 증가함
지금 이제는, 무조건 큰 모델 보다는 연산량 고려해서 최적의 모델 크기와 학습 데이터 결정하는게 효율적으로 모델을 만들 수 있음
Scailing explolation
parameter: 모델이 훈련 과정에서 학습하는 값
Hyperparameter: 사용ㅇ자가 설정하여 모델이 학습하는 방식을 조절하는 값
- 최적의 하이퍼파라미터를 예측하는 연구 분야
- 소형 모델에서 실험한 하이퍼파라미터를 기반으로 대형 모델에서의 최적 하이퍼파라미터를 추론하는 방식
- 하이퍼파라미터 수가 많아질수록 실험이 기하급수적으로 증가
- Emergent Abilities 때문에 정확도가 떨어질 수 있음
Scaling Bottlenecks
“모델 크기를 계속 키우다가 왜 performance plateau가 발생함 ?! “
1️⃣ Training Data
- AI 생성 데이터로 인한 순환 학습 문제가 발생함
- AI가 생성한 데이터를 다시 학습시키면 원본 데이터 패턴이 점점 희석되고, 성능이 저하될 수 있음
2️⃣ Electricity Consumption
Post Training
pre-training을 거친 모델을 fine-tuning 하는 과정
- 사전 훈련된 모델은 text completion에는 최적화되어 있지만, conversation에는 최적화되지 않음
- supervised finetuning (SFT)
- 고품질 데이터로 모델을 추가 훈련하여 conversational model로 최적화
- Stack Overflow, Quora, 등
- Preference Finetuning
- 사용자가 선호하는 방식으로 응답을 생성하도록 모델을 추가 조정
- 강화학습 기반임
- GPT-3.5, Llama2: RLHF
- Llama 3: DPO
- Claude: RLAIF
- Pre-training, SFT, RLHF
- 인간 친화적인 모델이 되기 위해서는 ?@
- 인터넷 데이터 기반
pre-training
→SFT, RLHF
→Post-training
- 인터넷 데이터 기반
- 인간 친화적인 모델이 되기 위해서는 ?@
'AI > TIL' 카테고리의 다른 글
[AI] AI-Engineering Chapter1 (0) | 2025.02.09 |
---|