from "A Survey of Large Langauge Models (2024)"
LLM의 학습은 3단계로 이루어짐: (1) Pretraining (2) Instruction Tuning (3) Alignment Tuning
'instruction': '양파는 어떤 식물 부위인가요? 그리고 고구마는 뿌리인가요?',
'output': '양파는 잎이 아닌 식물의 줄기 부분입니다. 고구마는 식물의 뿌리 부분입니다. \n\n식물의 부위의 구분에 대해 궁금해하는 분이라면 분명 이 질문에 대한 답을 찾고 있을 것입니다. 양파는 잎이 아닌 줄기 부분입니다. 고구마는 다른 질문과 답변에서 언급된 것과 같이 뿌리 부분입니다. 따라서, 양파는 식물의 줄기 부분이 되고, 고구마는 식물의 뿌리 부분입니다.\n\n 덧붙이는 답변: 고구마 줄기도 볶아먹을 수 있나요? \n\n고구마 줄기도 식용으로 볶아먹을 수 있습니다. 하지만 줄기 뿐만 아니라, 잎, 씨, 뿌리까지 모든 부위가 식용으로 활용되기도 합니다. 다만, 한국에서는 일반적으로 뿌리 부분인 고구마를 주로 먹습니다.',from KoAlpaca
Why Pretrain?
이번 회차는 Pretraining Corpus & Pretraining strategy 중 model architecture까지!
General Data
Specialized Text Data
Data Preprocessing은 (1) Quality Filtering (2) De-duplication (3) Privacy Reduction (4) Tokenization 으로 구성됨
LLM의 능력과 성능에 영향을 줄 수도 있는 noisy, redundant, irrelevant, potentially toxic data를 제거해야 함. 최근에는 "Data-Juicer"를 많이 쓰는데, 50개 이상의 processing operators & tools를 제공함.
(1) Quality Filtering
classifier-based: high-quality와 low-quality에 대한 classifier를 학습하여 분류하는 것으로, 방언으로 쓰여있거나, 구어체 (colloquial), sociolectal (유행어, meme 등) language까지 제거해서 LLM의 능력이 떨어지게끔 한다는 보고도 있음
heuristic-based: rule-based로, BLOOM이나 Gopher같은 모델의 학습에 사용
(2) De-duplication
반복되는 텍스트는 LLM의 성능을 하락(Double Descent issue: 이후에 성능 향상이 있긴 하지만 학습 초반에 성능 하락; context에서 LLM이 내용을 copy하는 능력 하락해 ICL 능력이 나빠지는 등)시키므로, sentence, document, dataset-level의 de-duplication이 들어갈 때 LLM의 성능이 향상될 수 있음
(3) Privacy Reduction
sensitive & personal information이 포함된 data (a.k.a. Personally Identifiable Information; PII) 가 포함되어 있을 수 있는데, 이는 privacy breach risk가 있음. 보통 rule-based approach를 사용해서 이름, 주소, 전화번호 등의 PII를 제거함.
(4) Tokenization
(Word-based Tokenization) CRF 등 이전 NLP task에서는 단어 단위로 tokenization을 진행하였으나, 중국어와 같은 일부 언어에서는 input이 같아도 segmentation이 다른 결과가 나올 수 있으므로 vocabulary 가 굉장히 커지고, OOV 문제가 있음
中国人民在银行前排队。중국 인민이 은행 앞에 줄을 서있다.
中国人民银行发布了新的政策。중국인민은행 (기준금리 결정하는 PBC) 이 새로운 정책을 발표하였다.해설: 첫 문장에서 中国人民과 银行을 각각의 단어로 분리하여 학습시키면 두 번째 문장의 中国人民银行에 대한 의미를 제대로 학습할 수 없음
(Advanced Tokenizers) word-based Tokenization의 한계를 타파하기 위해 character-based tokenization이 등장하였고 (ELMo에서는 character 단위로 자르고 CNN으로 character의 의미를 word로 합성하였음), 마지막으로 subword tokenizer가 등장하여 널리 사용되고 있음
preset
corpus (단어, 빈도): ("hug", 10), ("pug", 5), ("pun", 12), ("bun", 4), ("hugs", 5)byte level로 나누기
기본 vocab: 'h', 'g', 'h', 'n', 'p', 's', 'u'merging
기본 vocab 중 가장 빈번한 pair는 'u' & 'g'
따라서 'u'와 'g'를 병합
modified vocab: 'b', 'g', 'h', 'n', 'p', 's', 'u', 'ug'사전설정한 길이에 도달할 때까지 위를 반복
preset
corpus (단어, 빈도): ("hug", 10), ("pug", 5), ("pun", 12), ("bun", 4), ("hugs", 5)byte level로 나누기
기본 vocab: ('h' '##u' '##g', 10), ('p' '##u' '##g', 5), ('p' '##u' '##n', 12), ('b' '##u' '##n', 4), ('h' '##u' '##g' '##s', 5)
초기 vocab set: 'b', 'h', 'p', '##g', '##n', '##s', '##u'merging
'##u' '##g'의 쌍이 20회로 가장 많지만, '##u'는 다른 vocab과 쓰인 경우도 많음 ('##n' 등)
대신, '##g'와 '##s'는 항상 함께 등장하므로 이 둘을 병합
modified vocab: 'b', 'h', 'p', '##g', '##n', '##s', '##u', '##gs'사전설정한 길이에 도달할 때까지 위를 반복
preset
corpus (단어, 빈도): ("hug", 10), ("pug", 5), ("pun", 12), ("bun", 4), ("hugs", 5)substring로 나누기
기본 vocab: ('h', 'u', 'g', 'hu', 'ug', 'p', 'pu', 'n', 'un', 'b', 'bu', 's', 'hug', 'gs', 'ugs')vocab update
'p'+'u'+'g'의 확률과 'pu'+'g'를 사용했을 때의 loss를 비교: 0.000389 vs 0.0022679
loss가 작은 'p', 'u', 'g'는 버려지고 'pu'와 'g'가 선택되어 vocab update사전 설정한 hyperparameter p%까지 token을 버림
BPE와 WordPiece tokenizer를 사용할 때, pretraining corpus를 보고 token이 정해지기 때문에 continual pretraining 시에 LLM의 퍼포먼스 하락이 있을 수 있음. 예컨대, English corpus에 적용된 tokenizer를 사용해서 LLM pretraining 한 뒤 중국어에 continual pretraining 하면 LLM 학습이 잘 안 됨.
BPE 이후에 성능을 위해 normalization (e.g. NFKC) 을 하기도 하는데, LLM의 경우에는 performance degradation이 있다는 점에 유의.
pretraining corpus를 모델한테 어떻게 잘 줄 것이냐의 문제. 학습 데이터를 잘 섞는 data mixture, 다음 학습 때 어떤 데이터를 줄 것이냐 하는 data curriculum의 문제가 있음.
Data Mixture
global level의 data source proportion을 추종해서 각 batch마다 data source proportion을 설정할 수 있음. 여기에 LLM 목적에 따라 upsampling & downsampling 진행.
Increasing the diversity of data sources: webpage 등 source 내부의 data heterogeneity가 높은 data source를 없앴을 때, LLM의 generalization capability가 하락하여 downstream performance 또한 나빠진다는 보고.
Optimizing data mixtures: DoReMi (NeurIPS 2023) 모델에서는 target task가 정해진 상태에서 small LM을 먼저 학습시켜서 target에 가장 적합한 pretraining corpus를 알아서 선택해 LLM을 학습시킨다는 접근을 사용.
Data Curriculum
LLM이 basic skill을 먼저 학습하고, target skill을 학습하는 게 효과적이므로 data curriculum을 잘 설정해야 함. easy & general example을 먼저 주고, challenging & specialized example을 그 다음에 학습시키는 방식으로 보통 진행. 실제로는, 학습 과정에서 key ability에 대한 specialized benchmark 성능을 확인하고, 그에 따라 data mixture를 재진행하는 형식.
roughly, encoder-decoder, causal decoder, prefix decoder 모델로 나눌 수 있겠음. 3개 모델 외에도 parameterized state space models, long convolutions, transformer와 rnn을 합친 RWKV 등의 architecture가 제시되고 있음.
transformers recap
Encoder-decoder architecture
encoder는 self-attention을 이용해 input text를 이해하여 latent representation으로 생성하고, decoder는 cross-attention을 이용하여 target sequence를 생성하는 transformer의 기본원리. T5, BART 등 encoder-decoder 기반의 PLM이 있긴 하지만, LLM은 굉장히 적음 (Flan-T% 정도)
Causal Decoder Architecture
decoder architecutre만을 사용한 대부분 LLM의 architecture
unidirectional attention을 적용한 causal decoder architecture와는 달리, bidirectional architecture를 적용. 다음에 생성해야 하는 token의 이전 token들을 bidirectional 하게 참조한다는 것이 causaul decoder와의 차이점
일부 weight만 활성화해서 처리하는 방식. MoE를 사용했을 때 computational cost를 고정하면서 모델 크기를 키울 수 있으며, expert의 수가 늘어날수록 성능이 향상된다는 장점이 있음. 하지만 routing operation과 hard switching 때문에 instability issue가 있음
친절한 설명 감사합니다:)