Chapter 1. LLM 모델의 발전 과정
LLM 언어 모델이란?
언어 모델은 단어 시퀀스에 확률을 할당하는 일을 하는 모델입니다.
언어 모델은 가장 자연스러운 단어 시퀀스를 찾아내는 모델입니다.
언어 모델의 진화 과정
2003 : Natural Language Model : 검색어 자동추천이 가능해짐
2013 : Word Embedding, NLP base on NN(RNN) : 단어를 벡터화 시킬 수 있게되어, 단어간 의미를 파악하기 용이해짐
2014 : Seq to Seq model
2015 : Attention mechanism
2017 : Transformer : 번역, 요약이 너무 자연스럽게 할수 있게 됨. 챗봇이 롤 기반으로 자연스러운 대화 형식으로 기반이 변경됨
current : Foundation model : 여러가지 기능을 하나의 모델에서 사용할 수 있게됨
언어 모델링을 잘하려면?
언어 모델은 이전 단어들이 주어졌을 때 다음단어를 예측하는 것이기 때문에,
이전 단어들의 종류(Co-occurence), 순서(Sequence)가 중요하다.
RNN(Recurrent Neural Networks) : 시퀀스(시계열) 데이터 처리에 특화된 Neural Networks
(이전 Output를 다음 Input으로 재귀적으로 수해아)
순서(시퀀스) 정보에서 피쳐를 추출하고 그것을 바탕으로 분류하는 문제를 잘하게 된다.
(예를 들어, 영화 평점 텍스트만으로 감성 분류할 수 있게 됨. 메일 텍스트로 스팸 분류 가능하게 됨. 뉴스 기사의 카테고리를 분류할 수 있게 됨)
만약 출력이 또 다른 문장이 된다면?
Seq2Seq :
- 긴 문장을 잘 처리 못함(까먹음)
- Long term dependency : 모든 이전 정보들을 같은 가중치로 기억(까먹음)
LSTM : 중요한 것은 기억하고, 중요하지 않은 것을 까먹게 하는 기법 등장
GRU : 연산 게이트를 줄여서 속도는 빠르게 간단하게 할 수 있는 기법 등장
Attention : 인코더의 마지막 출력만 디코딩을 사용하는 Seq2Seq는 긴 문장이 될수록 정확도가 낮아짐.
인코더의 모든 중간 hidden 출력까지 디코딩 시 사용하도록 변경, 중요한 단어를 추출하는 기법 적용
KeyQueryValue 기법 : 중요한 단어를 찾는 방법. Query - Key - Sim(유사도 함수 값) - Value Dictionary를 통해 유사도, 중요성 조회를 가능하게 함
어텐션 정보 기반 다음 단어 예측하도록 함
Seq2Seq + Attention은 느림(LSTM, GRU는 느림)
Transformer 모델 : Attention만 있어도 충분하다.(큰틀은 인코더와 디코더 동일하다)
1. 임베딩 모델을 사용하여 각 토근에 대한 피처 벡터 생성
2. 임베딩에 토큰 위치 정보 추가
3. 텍스트를 hidden representaion(임베딩)
Transformer쓰면 좋아지는 점
1. 빠른 학습속도(RNN과 다르게, 병렬 처리가능)
2. 언어(문맥) 이해도 증가(롱 레인디 디펜던시 학습 가능)
문장 내 순서 반영을 통한 동작도
Position Embedding : 현재 위치를 알게 됨
Self Attention : 다른 위치에는 뭐가 있는지 알려주기
BERT : 순서 정보에서 분류를 더 잘하게
GPT : 문장 생성을 더 잘하게
t라는 시점이 있었을 때, t라는 시점이 이전의 단어를 입력해서, 다음 단어들을 예측하는 것
Chapter2. Fine Tuning in Model
Overview
- In-context learning & RAG의 난제
1. 모델 환각
2. 한국어 처리의 어려움
3. 도메인 특화 지식 대응의 어려움
4. 컨텍스트 길이 제한
- LLM Fine-tuning이 언제 필요할까?
1. RAG Evalutation
컨텍스트를 잘못 가져오면 임베딩 튜닝, 컨텍스트 있어도 답을 잘 못하면 LLM 튜닝
- Typical 미신 LLM Fine-tuning
수학 역량이 필요? 최신 모델링 기법이 중요? GPU가 수십장 필요? 데이터가 무조건 많으면 좋다? 코딩이 어렵다?
- Vector Embeddings
- Contrastive Learning
문서의 유사도 벡터 검색을 정확도를 높이기위해 벡터 튜닝하는 방법론
훈련 데이터를 대조하여
- SimCSE
정답 데이터 없이 말뭉치로 학습 가능한 기법
비지도 학습 : 위키피디아 말뭉치
지도 학습 : KLUE-NLI, KorNLI 참고
"Korean Reranker on AWS - 한국어 버전 벡터 임베딩 모델"
LLM Fine-tuning
- 대규모 언어 모델(LLM) 파인 튜닝
1. Instruction Tuinig(지도 학습) : 데이터는 소량의 명령과 입력 = 출력 쌍으로 구성
2. Alignment Tuning(RLHF, DPO) : 사람의 피드백을 이용한 튜닝조정
3. Domain-Adaptation(셀프 지도 학습) : 다량의 Unlabeled 데이터 사용
- 최근 트랜드 : DPO(Direct Preference Optimization)의 대두
생성한 문장들에 Rank 부여
허깅 페이스 trl 라이브러리 참조
- Three Options for 파라미터 튜닝
LoRA를 주로 사용
- LoRA(Low-Rank Adaptation of LLMs)
- QLoRA
리소스를 더 가볍게 한 기법
- Flash Attention
Attention의 메모리 바운드를 완화하기 위한 기법
- ZeRO
sharding 기법을 통한 메모리 최적화 기법
- DeepSpeed
ZeRO를 오픈 소스로 사용할 수 있는 패키지
- AWS 파인 튜닝 서비스
- LLM 모델 훈련 환경 - Amazon SageMaker
- PEFT example : BLOOMZ-7B 파인 튜닝 및 배포
개인 파인 튜닝 팁
- 꿀팁 1. 백번 강조
데이터 품질 >> 데이터 볼륨(LIMA 논문)
해당 LLM에 적합한 프롬프트 실험
(당신은 영한 번역을 수행하는 AI Assistant입니다. Instruction에 따른 request에 적합한 response를 반환하세요.
- 꿀팁 2. Myth 타파
Adam vs SGD -> 묻지마 Adam?
Epoch이 많을수록 좋다? No. 4 정도도 충분하다.
LoRA rank가 높을수록 좋다? No.
Context 길이를 무조건 모델의 최대치로 고정해야 한다? No. 통계치 확인 후 진행(예시에는 110K)
- 꿀팁 3. SFT(Supervised Fine-Tuning)
AWS 블로그 한/영 번역 데이터셋
- 꿀팁 4. DPO(Direct Preference Optimization)
- 꿀팁 5. GPU 쥐어짜기..?
- Phi-2 upscaling(4B 모델 Full weight 훈련예시)
- 꿀팁 6. Tokenizers for Korean Language
한국어 사전 훈련된 BPE 토크나이저 그대로 사용 시 영어 대비 context length & latency 손실 발생
커스텀 한국어 토크나이저 훈련
위키피디아, 채팅 데이터 샘플링 훈련시 15GB를 20분만에 학습 가능
- Initializing new word embeddings
토크나이저 확장 후 임베딩 행렬 수정
(기존 토크나이저 확장 전의 임베딩 행렬의 통계치를 활용하여 확장전과 확장후 토큰 분포..)
- 꿀팁 7. LLM Evaluation
LLM 모델 평가 vs LLM 시스템 평가
Ground Truth(응답 결과에 대한 평가는 사람이나 SOTA LLM(GPT4, Claude)이 담당하게 한다.)
- 꿀팁 8. Checkpoint
- 꿀팁 9. Sagemaker 업로드 개선
Llama-2-ko-DPO
LLM Finetuning 실습
AI > ML > DL
Machine Learing의 유형
1. 지도 학습 : input > output, 분류(범주형), 회귀(숫자형) // 데이터 라벨링 필요
2. 비지도 학습 : input, 유사도 함수(크기, 모양, 색상 등등)로 분류 // 데이터 라벨링 불필요.
3. 강화 학습 : Reward(보상)을 통한 학습, 훈련을 위한 데이터셋이 없고 환경이 주어짐(예외처리가 많이 필요). 상/벌(점수)와 같이 보상을 극대화하는 방법으로 학습됨
'[CDS] Cloud Service > AWS' 카테고리의 다른 글
[AWS] Aws Cdk (1) | 2024.02.27 |
---|---|
Bedrock RAG의 정확도를 늘리는 방법 (0) | 2024.02.01 |
AWS Bedrock 이란? (0) | 2024.01.18 |
[AWS] Aws devops professional 자격증 준비하기 (0) | 2023.02.06 |
[AWS] 2주차 공부 - 컴퓨팅(EC2) (0) | 2022.11.29 |
최근댓글