https://product.kyobobook.co.kr/detail/S000214934825
한 권으로 끝내는 실전 LLM 파인튜닝 | 강다솔 - 교보문고
한 권으로 끝내는 실전 LLM 파인튜닝 | 실무 현장에서 꼭 필요한 파인튜닝, PEFT, vLLM 서빙 기술을 직접 실습하면서 배워 보자!AI 기술의 최전선에서 배우는 LLM 파인튜닝의 모든 것! 이론적 토대부터
product.kyobobook.co.kr
"한 권으로 끝내는 실전 LLM 파인튜닝" 교재를 활용해 3주(주말 제외) 동안 진행 되는 온라인 스터디
Gemma와 Llama3 모델 구조 분석
Gemma 모델 구조 분석
Gemma는 기존 GPT 모델의 구조를 개선하여 효율성과 성능을 동시에 잡은 모델이다. 모델 크기를 줄이면서도 다양한 자연어 처리 태스크를 효과적으로 수행할 수 있도록 설계되었다.
Gemma의 주요 특징
- LayerNorm의 도입
- 변화: Gemma는 input_layernorm과 post_attention_layernorm 두 가지 RMSNorm 방식을 사용한다
- 이유: 학습 과정에서 그레이디언트의 안정성을 유지하고 학습 속도를 향상시키기 위함
- LayerNorm 설명: 입력값의 분포를 정규화하여 모델의 안정성과 수렴 속도를 개선
- Rotary Position Embedding (RoPE)
- 변화: 기존 절대적 위치 임베딩 대신 RoPE 방식을 채택
- RoPE 설명: 위치 정보를 각 차원별로 조화롭게 결합하여 모델이 긴 문맥에서도 효율적으로 위치 정보를 처리할 수 있도록 돕는 방법
- 활성화 함수의 변화
- GPT: ReLU 사용(간단하지만 일부 뉴런이 죽을 위험 존재)
- Gemma: GeGLU(Gaussian Error Linear Unit + Gated Linear Unit) 사용
- 게이트는 이전에 입력받은 문장과 새롭게 들어온 텍스트 간의 요소별 곱셈을 통해 어떤 정보가 중요한지 파악후 중요한 정보만을 전달하는 문지기 역할을 한다
- 입력값을 부드럽게 변형시켜 신경망이 더 복잡한 패턴을 학습할 수 있도록 한다
- GeLU의 부드러운 비선형성과 GLU의 게이트 메커니즘 결합으로 정보 흐름 강화
- 이점: 더 나은 비선형성을 제공하며 학습 효율성 증가
Gemma와 Gemma 2 모델 비교
2024년 6월 29일, Gemma 2가 공개
특징 | Gemma | Gemma 2 |
어텐션 메커니즘 | 멀티헤드 어텐션 | 그룹 쿼리 어텐션(Grouped Query Attention) |
훈련 방식 | 다음 토큰 예측 | 지식 증류(2B, 9B), 다음 토큰 예측(27B) |
정규화 | RMSNorm | RMSNorm |
로짓 제한 | 미적용 | 로짓 제한 적용(Logit Clipping) |
모델 크기 | 2B, 7B | 2B, 9B, 27B |
주요 개선 사항
- Grouped Query Attention:
- 쿼리를 그룹화하여 메모리 사용량 감소 및 계산 속도 향상
- Logit Clipping:
- 최종 로짓 값의 범위를 제한하여 안정성을 제공
Llama3 모델 구조 분석
Llama는 Meta AI에서 개발한 오픈 소스 대규모 언어 모델로, 연구자와 개발자들이 폭넓게 활용할 수 있도록 설계되었다
Llama3의 주요 특징
- RoPE (Rotary Position Embedding)
- 위치 정보를 차원별로 결합하여 긴 문맥에서도 효과적인 처리
- RMSNorm (Root Mean Squares Norm, RMSNorm)
- 루트 평균 제곱 (Root Mean Square, RMS)만으로 정규화 하는 방식
- RMS는 각 특징값의 제곱평균근(Root Mean Square)을 의미한다
RMS 계산 및 RMSNorm 계산 - LayerNorm 대비 계산 효율성과 그레이디언트 안정성을 향상
- 코드 구현(Hands-On)
import numpy as np
def RMS(tokens):
# 제곱
squared = tokens ** 2
# 평균 계산
mean_squared = np.mean(squared)
# 제곱근 계산
output = np.sqrt(mean_squared)
return output
def RMSNorm(tokens):
# 모든 행에 대해 RMSNorm 호출 및 정규화
normalized_output = []
for token in tokens:
# 각 행의 RMS 값을 계산
rms_value = RMS(token)
# RMS 값으로 정규화
normalized_token = token / rms_value
normalized_output.append(normalized_token)
return np.array(normalized_output)
RMSNorm_ex_token = np.array([[1, 2, 3, 4, 5],
[11, 13, 15, 17, 19]])
normalized_result = RMSNorm(RMSNorm_ex_token)
print("정규화 전 :\n")
print(RMSNorm_ex_token)
print("정규화 후 :\n")
print(normalized_result)
"""
출력결과
정규화 전 :
[[ 1 2 3 4 5]
[11 13 15 17 19]]
정규화 후 :
[[0.30151134 0.60302269 0.90453403 1.20604538 1.50755672]
[0.72063396 0.85165832 0.98268267 1.11370703 1.24473139]]
"""
- GQA (Grouped Query Attention)
- 그룹화된 쿼리를 사용하여 메모리 효율성을 개선하고 계산 속도를 증가
- SwiGLU 활성화 함수
- SwiGLU를 통해 모델의 비선형성과 계산 효율성 모두 개선
GPT, Gemma, Llama3 비교
특징 | GPT | Gemma | Gemma 2 | Llama 3 |
아키텍처 | Decoder | Decoder | Decoder | Decoder |
위치 인코딩 | Sinusoidal PE | RoPE | RoPE | RoPE |
정규화 | Layer Norm | RMS Norm | RMS Norm | RMS Norm |
어텐션 메커니즘 | Multi-Head Attention | Multi-Head Attention | Local Sliding Window and Global Attention Grouped-Query Attention | Grouped Multi-Query Attention |
활성화 | ReLU | GEGLU | GEGLU | SwiGLU |
데이터 크기 | 4.5M+36M | ~ 6T | ~ 13T | 15T |
'DL > LLM&RAG' 카테고리의 다른 글
한 권으로 LLM 온라인 스터디 1기 Day_7 - 단일 GPU를 활용한 Gemma-2B-it 파인튜닝 (1편) : Gemma-2B-it 모델 한계 분석 (0) | 2025.01.10 |
---|---|
한 권으로 LLM 온라인 스터디 1기 Day_6 - GPU 병렬화 기법 (0) | 2025.01.07 |
한 권으로 LLM 온라인 스터디 1기 Day_4 - 파인튜닝의 모든 것 : PEFT와 태스크 적용 사례 (0) | 2025.01.05 |
한 권으로 LLM 온라인 스터디 1기 Day_3 - 멀티헤드 어텐션 & 피드포워드, Blocks (0) | 2025.01.05 |
한 권으로 LLM 온라인 스터디 1기 Day_2 - 기본 언어 모델의 구조 및 언어 모델 구현 (0) | 2025.01.02 |