KT 에이블스쿨 5주차 LangChain
* 수업일자 : 2025.04.18(금) ~ 04.21(월)
◎ Transformer
- 2017년 구글이 발표한 논문인 "Attention is all you need"에서 나온 모델로, 기존의 seq2seq의 구조인 인코더-디코더를 따르면서도, 어텐션(Attention)만으로 구현한 모델. (출처 : https://wikidocs.net/31379)
- 구조 : 인코더(Encoder) + 디코더(Decoder)
인코더 : 원래의 입력 문장 의미를 압축, 인코딩하여 벡터 표현 생성
디코더 : 압축한 벡터를 기반으로 새로운 시퀀스 생성
주요 특징
① Self-attention : 입력 문장의 모든 단어가 서로 어떤 관계를 지니는 지 학습하는 것. 이때 attention이란, 중요한 단어(정보)에 집중하여 더 정확한 출력을 만드는 기법이다. 즉, Self-attetion은 입력 문장의 단어들끼리의 관계를 파악하는 과정,
② Multi-Head attention : 여러 개의 Attention을 동시에 수행하는 기법. 명사 간 관계, 동작과의 관계 등 여러가지 관점에서 관계를 살펴봄으로써, 더 풍부한 문맥 정보 학습.
③ Positional Encoding, 위치정보 인코딩 : 단어의 순서 반영. Self-attention은 순서정보 포함X, 이를 해결한 특징
④ Feed Forward Network (FFN) : Self-Attetion을 통해 얻은 정보를 추가적으로 변형하고 학습. 추가적인 비선형 변환을 수행 -> 더 정교한 표현 학습 가능
트랜스포머 계열 사전 학습(Pre-training) 모델 : GPT, BERT
1. GPT : Generative Pre-trained Transformer, OpenAI
- Decoder만 사용하여 만든 모델. 이전 단어만 참고하면서 다음 단어를 예측(생성)하는 구조
- 활용 : 요약문/번역문 생성, 챗봇 답변 등
- 점점 파라미터 개수가 커지고 모델 크기가 확대되면서, 거대 언어 모델(Large Language Model, LLM)이라고 부르기도 함.
2. BERT : Bidirectional(양방향) Encoder Representaion from Transformers, Google
- Encoder만 사용하여 만든 모델. 문장의 전후 문맥을 모두 고려하여 더 깊이 있는 이해 가능
- 활용 : 텍스트 분류, 개체 인식 등
◎ LLM 활용 방법
나의 데이터를 가지고 직접 학습 >> 연산 자원, 인프라, 시간 등 많은 자원이 소모됨
=> 사전 학습된 모델 사용!
1) 모델 그대로 사용하기 : API, Huggingface
2) Fine-tuning : 기존 모델 + 나의 데이터로 추가 학습
3) RAG : 나의 데이터 자료집 기반으로 답변
모델 그대로 사용하기 - ① Huggingface
- pipeline 함수 : transformer 기반 LLM모델을 손쉽게 사용할 수 있게 해주는 함수. 데이터 전처리 -> 모델 사용 -> 후처리 일련의 과정을 물흐르듯이 사용하게 해줌
- 활용 : sentiment analysis(감정분석), zero-shot classfication, summarization(요약), translation(번역), text-generation(문장 생성)
=> 이러한 다양한 NLP 태스크를 수행하는 transformer 라이브러리를 제공하는 곳이 '허깅페이스'임.
Hugging Face – The AI community building the future.
The Home of Machine Learning Create, discover and collaborate on ML better. We provide paid Compute and Enterprise solutions. We are building the foundation of ML tooling with the community.
huggingface.co
LLM 모델, AI 오픈소스 라이브러리 등을 공유하는 커뮤니티라고 보면 된다. 사용 방식은 깃허브와 유사하다.
모델 그대로 사용하기 - ② API
API란? 소프트웨어 간 데이터를 교환하고 통신할 수 있도록 하는 인터페이스. API를 사용하기 위해서는 고유 API Key가 필요하다.
- Python에서 API Key를 연결하여 LLM모델 사용
- 프롬프트 엔지니어링이란? GPT에게 유용한 답변을 얻기 위해 질문(프롬프트)을 설계하는 기술. GPT는 모호한 질문엔 모호하게 대답함.
- 프롬프트 설계 핵심 :
역할 | "너는 글쓰기 전문가야" |
맥락 및 목적 | "아래의 글을 바탕으로 요약해줘." |
답변 형식 | "단락별로 500자 이내로 요약해줘." |
Fine-Tuning
Fine-Tuning이란? 사전 훈련된 모델을 특정 작업이나 데이터셋에 맞게 미세 조정하는 과정(=파라미터 조정)
즉, 나의 데이터에 맞게 학습시킨다.
- 수행 절차 : 사전훈련 모델 선택 -> 데이터 준비 -> 모델 수정 -> 추가 학습
[Fine-tuning 세부과정]
from transformers import BertForSequenceClassification, Trainer, TrainingArguments
model = BertForSequenceClassification.from_pretrained("bert-large-uncased")
# 하이퍼파라미터를 조정하여 Trainer의 학습 세부 설정
training_args = TrainingArguments(
output_dir='./results', # 출력 디렉토리
num_train_epochs=3, # 에포크 수
per_device_train_batch_size=16, # 학습 배치 사이즈
per_device_eval_batch_size=64, # batch size for evaluation
warmup_steps=500, # number of warmup steps for learning rate scheduler
weight_decay=0.01, # strength of weight decay
logging_dir='./logs', # directory for storing logs
)
# 학습을 위한 선언
trainer = Trainer(
model=model, # 학습할 모델
args=training_args, # training arguments, defined above
train_dataset=train_dataset, # training dataset
eval_dataset=test_dataset # evaluation dataset
)
https://huggingface.co/transformers/v3.0.2/training.html?highlight=training#trainer
traningArguments에서 그 외 파라미터 :
* learning_rate : 학습률
* load_best_model_at_end=True : 학습 과정에서 성능이 가장 좋았던 모델을 저장
등등...
또한 Trainer에서 callbacks=옵션을 넣어 earlyStopping 지정 가능
'KT aivleschool' 카테고리의 다른 글
2차 미니프로젝트 : AI 면접관 Agent 시스템 구축 (1) | 2025.05.19 |
---|---|
[5주차] LangChain (2) (0) | 2025.05.18 |
1차 미니프로젝트 : 스마트폰 센서 데이터 기반 모델 분류 (0) | 2025.05.18 |
[2주차] 데이터분석 및 시각화 (0) | 2025.05.16 |
[2주차] 데이터 처리 (0) | 2025.05.11 |