기존 사전학습된 대형 모델의 대부분 파라미터를 고정(freeze)하고, 일부 작은 부위만 학습 가능하게 만들어 파인튜닝하는 방식
GPU 메모리 절약
빠른 학습 속도
전이학습 시 고효율
다양한 작업(task)에 모델을 쉽게 적용 가능
LLM은 수억~수천억 개의 파라미터를 가짐
→ 이걸 전부 fine-tune 하려면 막대한 자원과 시간이 필요함
예) GPT-3 (175B 파라미터)를 fine-tune하면 수십~수백 GB 메모리 필요
→ PEFT는 이를 수 MB~수백 MB 수준으로 줄임
방법 | 설명 |
---|---|
Adapter | 기존 모델에 작은 층 (Adapter module)을 추가하여 이 부분만 학습 |
LoRA (Low-Rank Adaptation) | 파라미터 행렬의 low-rank 부분만 학습 |
Prefix-Tuning | 입력 앞부분에 학습 가능한 prefix 벡터를 붙임 |
Prompt-Tuning | input prompt에 학습 가능한 가상 토큰을 삽입 |
W
에 대해 W' = W + ΔW
대신,ΔW = A * B (A, B는 저차원 행렬)
W
는 고정하고, A
, B
만 학습전체 weight 수의 1~2%만 학습하면 성능을 거의 유지할 수 있음
여러 작업(task)에 같은 LLM을 재활용할 때
Edge 환경이나 리소스가 적은 디바이스에 모델을 배포할 때
빠르게 프로토타이핑하거나 서비스에 맞춘 미세조정을 할 때
from peft import get_peft_model, LoraConfig
peft_config = LoraConfig(
task_type="CAUSAL_LM",
r=8,
lora_alpha=32,
lora_dropout=0.1
)
model = get_peft_model(base_model, peft_config)
W를 다 쓸 필요가 없고, d의 정보를 r차원으로 줄여서 내재된 (Intrinsic) 데이터를 추출하고, 이를 활용하는 것 만으로도 파인튜닝의 효과를 낼 수 있음
⇒ 저차원 행렬 A 와 B 를 학습하여 적은 연산량으로 성능 향상을 이끌어냄
"초거대 언어 모델(LLM)"을 빠르고 효율적으로 서빙(Serving)하기 위해 개발된 새로운 시스템.
특히 대형 언어모델을 다수의 유저에게 빠르게 응답하는 것이 목표 : 추론 속도 혁신
⇒ 양자화와 병행하여 효율을 증가시킴
내부 정보는 내부 LLM을 사용해서 정보가 유출되지 않도록 유도
웹 서치가 필요한 부분은 외부 LLM을 사용함
Multi-LLM을 사용하여 내부와 외부의 서비스를 분리
vLLM은 PagedAttention이라는 혁신적인 기술을 도입
LLM은 매 토큰 생성 시 과거 모든 토큰(hidden states)을 참조. (Self-Attention)
일반적으로 이 캐시를 GPU 메모리에 일렬로 (contiguous) 저장.
하지만 이렇게 하면 대화 길이가 다양한 여러 유저를 동시에 처리할 때 메모리 낭비가 심해짐.
히든 상태(hidden states)를 "메모리 페이지(Page)" 단위로 쪼개 저장하고, 필요한 부분만 효율적으로 불러와(attend) 계산
대규모 배치를 효율적으로 처리할 수 있어 속도도 빠르고 GPU도 더 많이 활용할 수 있게 됩니다.
LLM 처리 방식을 LCEL 스타일로 구현
⇒ 정보와 질문을 구분 : 사실 답변 + 모르는 주제도 답변 생성
⇒ 체인 형태로 질문 → 답변 → 질문 → …
환각현상을 막기 위해선, 정확한 맥락을 제공하는 것이 중요함!!
LLM(대형 언어 모델)의 한계를 극복하기 위해 정보 검색(Retrieval)과 생성(Generation)을 결합한 AI 기술
문서 임베딩(Document Embedding)
벡터 검색(Vector Search)
LLM(대형 언어 모델)
Knowledge Base(지식 베이스)
✔ 신 정보 활용 가능 → LLM 단독으로는 알 수 없는 최신 데이터 검색하여 반영
✔ 정확성 향상 → 임의 생성 내용(Hallucination) 발생 가능성 감소
✔ 도메인 특화 가능 → 특정 산업, 기업, 기술 관련 정보를 포함한 맞춤형 AI 구축 가능
즉, RAG는 검색과 생성(LLM)을 결합하여 더 신뢰성 높은 답변을 제공하는 기술!
다양한 데이터 포맷 고려: PDF, JSON, Markdown, 다양한 요소 처리(텍스트, 이미지, 표)
문서 전체를 하나의 Context에 담기 어려우므로 전체를 분리 Ex) 페이지 단위, 섹터 단위로 데이터베이스에 저장
청킹(Chunking): 문자나 토큰 단위로 나누는 경우
‘검색이 잘 되도록’ 데이터 청크 수정
쿼리를 여러 개의 버전으로 세분화 후 각각의 검색을 모두 수행
쿼리의 검색 다변화