AutoModelForSeq2SeqLM은 Hugging Face Transformers에서 “번역·요약 같은 시퀀스-투-시퀀스(Seq2Seq) 모델을 자동으로 불러오기 위한 래퍼 클래스”입니다.
조금 더 풀어서, 지금 우리 ke-t5-large-ko 코드 기준으로 설명해볼게요.
1. 이름 그대로 풀기
- Auto
→ “모델 이름만 주면, 딥러닝 아키텍처를 자동으로 골라서 로딩하겠다”
→ 내부에서 config를 보고 “이건 T5네?”, “이건 BART네?” 하고 알아서 선택 - ModelForSeq2SeqLM
→ “시퀀스 → 시퀀스 언어모델(Sequence-to-Sequence Language Modeling)용 모델”
→ 입력 시퀀스를 받아 출력 시퀀스를 생성하는 구조 (인코더-디코더)
그래서:
AutoModelForSeq2SeqLM =
“번역/요약/질문-응답 같은 Seq2Seq 작업을 위해
적절한 인코더-디코더 언어모델을 자동으로 로딩해주는 클래스”
라고 이해하시면 됩니다.
2. 우리 코드에서 어떻게 쓰이고 있나?
지금 스크립트에서:
model_name = "KETI-AIR/ke-t5-large-ko"
model = AutoModelForSeq2SeqLM.from_pretrained(
model_name,
device_map="auto",
# dtype=torch.float16,
)
이 한 줄이 의미하는 것은:
- "KETI-AIR/ke-t5-large-ko" 리포지토리의 config.json을 읽어보고
- “이건 T5 계열이네?” 라고 인식한 다음
- 내부적으로 T5ForConditionalGeneration 클래스를 선택해서
- 그 가중치를 from_pretrained로 로딩한 뒤
- Seq2Seq 언어모델로 사용할 수 있게 래핑하는 것
즉, 직접 T5ForConditionalGeneration를 쓰는 대신:
# 이렇게 안 해도
from transformers import T5ForConditionalGeneration
model = T5ForConditionalGeneration.from_pretrained("KETI-AIR/ke-t5-large-ko")
# 이렇게만 써도 알아서 T5를 골라줌
from transformers import AutoModelForSeq2SeqLM
model = AutoModelForSeq2SeqLM.from_pretrained("KETI-AIR/ke-t5-large-ko")
처럼 모델 타입을 “자동”으로 골라주는 역할을 합니다.
3. 어떤 작업에 쓰는 모델인가? (용도)
AutoModelForSeq2SeqLM은 “단일 문장 분류” 같은 게 아니라,
“입력 문장을 다른 문장으로 바꾸는” 작업에 특화되어 있습니다:
- 번역 (Translation)
- 한→영, 영→한 등
- 요약 (Summarization)
- 생성형 QA (Question Answering: 질문 → 정답 문장)
- 지시형 생성 (Instruction → Response)
공통점은:
“입력 시퀀스가 있고, 그에 대응하는 출력 시퀀스 전체를 생성”하는 구조
이기 때문에 인코더-디코더(Encoder-Decoder) 아키텍처를 사용합니다.
- Encoder: 입력 문장(한국어)을 인코딩 → hidden states
- Decoder: Encoder 출력을 참고하면서 한 토큰씩 영문 번역을 생성
4. 내부에서 제공하는 기능
AutoModelForSeq2SeqLM (정확히는 그 아래 실제 클래스, 예: T5ForConditionalGeneration)는 다음을 기본으로 제공합니다.
4-1. forward() – 학습용
- labels를 넣으면 자동으로 CrossEntropy loss를 계산해서 loss를 리턴
- HuggingFace Trainer가 이 loss를 가지고 학습합니다.
4-2. generate() – 추론/번역용
- beam search, greedy, sampling 등 다양한 생성 전략을 지원합니다.
- 우리가 predict_with_generate=True를 켰을 때 eval에서 내부적으로 이 generate()가 호출됩니다.
그래서 학습(train) 과 추론(inference) 둘 다를 위한 기능이 이미 다 들어 있습니다.
5. AutoModel 계열의 철학
HuggingFace에는 AutoModel 계열이 여러 개 있습니다.
- AutoModel – 그냥 backbone만 (BERT/T5/BART 등)
- AutoModelForSequenceClassification – 문장 분류용
- AutoModelForTokenClassification – 개체명 인식 등 토큰 태깅용
- AutoModelForSeq2SeqLM – 번역/요약 같은 Seq2Seq 생성용
핵심 철학은:
“사용자는 모델 이름만 알고 있어도 된다.
나머지 세부 아키텍처 선택은 우리가 자동으로 해줄게.”
이 덕분에:
- BART, T5, mBART, LED 등 서로 다른 Seq2Seq 아키텍처를 쓰더라도
- 코드 레벨에서는 똑같이 AutoModelForSeq2SeqLM.from_pretrained("모델이름") 으로 통일할 수 있습니다.
6. 정리
AutoModelForSeq2SeqLM은 Hugging Face Transformers에서
“번역·요약 같은 시퀀스-투-시퀀스(Seq2Seq) 작업용 모델을 자동으로 불러오기 위한 클래스”다.
모델 이름만 주면 내부에서 적절한 인코더-디코더 아키텍처(T5, BART, mBART 등)를 선택하고,
토큰 단위 CrossEntropy 손실을 제공하는 forward()와
문장 생성용 generate()까지 한 번에 사용할 수 있다.
덕분에 우리는 구체적인 모델 클래스를 직접 지정하지 않고도
다양한 Seq2Seq 모델을 같은 코드로 교체해가며 실험할 수 있다.
'HRDI_AI > 머신러닝_딥러닝 핵심 기술과 실무 중심 생성형 AI 프로젝트' 카테고리의 다른 글
| finetune_ke_t5_ko2en.py (0) | 2025.11.28 |
|---|---|
| AutoModelForSeq2SeqLM의 손실함수 (0) | 2025.11.27 |
| AdamW란 무엇인가, 왜 쓰는가, 수식/직관/실전 세팅까지 (0) | 2025.11.27 |
| 1. Trainer 하이퍼파라미터 정리 (0) | 2025.11.27 |
| 3. grad_norm이란 무엇인가? 그리고 LR과 어떤 관계인가? (0) | 2025.11.27 |