728x90
반응형
LLM 학습코드를 보면 다음과 같은 코드를 흔하게 볼 수 있다.
from transformers import AutoTokenzier
tokenizer = AutoTokenizer.from_pretrained(model_name, padding_side="left")
tokenizer.pad_token = tokenizer.eos_token
왜 pad_token을 eos_token으로 사용할까??
이는 메모리 절약 및 모델의 일관성 유지 때문이라한다.
- pad_token: 시퀀스 길이를 맞추기 위해 추가하는 토큰. 일반적으로 학습 과정에서 무시됨
- eos_token: 시퀀스의 끝을 나타내는 토큰으로, 디코더모델에서 중요하게 사용
(1) 메모리 절약
- LLM에서는 거대한 단어 사전을 사용하므로 pad_token을 따로 정의하면 추가 메모리 필요
- eos_token을 pad_token역할로 사용하면, 별도의 pad_toekn생성하지 않아도 됨
(2) 토큰 임베딩 재사용
- pad_token을 추가하면 모델이 이를 학습해야하고 연산량 증가
PAD 토큰을 별도로 정의하는 경우
Sequence2Sequence 모델 사용할 때 (BART, T5)
인코더 디코더에서는 pad_token을 명확하게 구분하는 것이 필요
728x90
반응형
'AI-Tech 부스트캠프 > NLP' 카테고리의 다른 글
[NLP] Bag of Words (0) | 2023.01.18 |
---|---|
[NLP] Advanced Self-supervised Pre-training Models (0) | 2021.09.18 |
[NLP] Self-supervised Pre-training Models (0) | 2021.09.18 |
[NLP] Transformer (0) | 2021.09.14 |
[NLP] Basics of Recurrent Neural Networks(RNNs) (0) | 2021.09.10 |
댓글