자연어 데이터 전처리 종류 및 과정
PII가 무엇이며 PII Filtering 과정
Qulity Filtering 과정
Pipeline Parallelization
배치 사이즈가 작으면 overfitting 발생하지 않음??
few-shot prompting based evaluation
KOBEST benchmark dataset이란?
GPT-NeoX란?
mBERT, BLOOM, XGLM 등의 다양한 multilingual model이 있는데도 왜 새로운 multilingual model을 만들고자 하는가?
→ 비 영어권 언어에서 영어에 비해 좋지 못한 performance를 보이기 때문에
비 영어권 언어 퍼포먼스가 좋은 multilingual model만들자
TUNiB에서 curated 된 한국어 데이터 863GB ( 전 처리 전 1.2TB )
Polyglot-Ko 학습을 위해 수집 되었으므로 공개 하지 않음
학습 과정
Inference 과정
각 과정에서 위와 같은 문제가 risk 를 야기할 수 있으므로 데이터 분석을 실시
위와 같은 risk를 줄이는 관점에서 데이터를 분석해 본 결과 데이터는 4가지의 유형으로 분류
데이터를 학습 시키기 전에 진행되어야 할 퀄리티 문제가 존재
학습 과정에서 문제를 야기할 수 있으므로 전처리 수행
→ plyglot 은 한국어 문장 생성에 목적을 두므로 html과 같은 코드들은 가능한 모두 제거
전처리 되어야 할 또 다른 중요한 문제는 데이터의 길이
→ 문장이 길 수록 많은 정보가 모델에 학습됨
데이터의 길이 분포를 보기 위하여 50datasets를 모아 샘플하여 길이 분포를 box plot 으로 시각화하여 봄
위의 데이터 길이 분포를 보면 대부분의 데이터셋이 짧은 문장들을 포함하고, 소수만이 긴 문장들을 포함
긴 문장들을 포함한 데이터는 대부분 news article, blog데이터
이러한 결과를 바탕으로 문장 길이에 따른 필터 상태를 설립 → new 나 blog 정보의 contextual information이 모델 학습 과정에서 가장 많이 학습됨
위의 데이터 분석 결과로 데이터 전처리 수행
PII Filtering
PII 누수로 인한 손해를 최소화하기 위하여 masking 실시
일부 데이터는 harmful 하더라도 model이 다양한 task를 수행하는데 도움을 줄 수 있으므로 매우 중요한 개인정보의 최소한(bare minimum of critical personal information)만 masking
<|tel|>
<|rrn|>
<|acc|>
→ 12개 은행에 대해 실시Quality Filtering
Gopher 에 명시된 데이터 전처리 filtering logic 사용 → 위의 언급된 문제점 해결할 수 있을 것이라고 판단
EleutherAI의 [GPT-NeoX]https://github.com/EleutherAI/gpt-neox) 베이스 코드 사용
256 A100s(8*32 nodes) 사용
Hyperparameter | Value |
---|---|
n_parameters | 1,331,810,304 |
n_layers | 24 |
d_{model | 2,048 |
d_ff | 8,192 |
n_heads | 16 |
d_head | 128 |
n_ctx | 2,048 |
n_vocab | 30,003 / 30,080 |
Positional Encoding | Rotary Position Embedding (RoPE) |
RoPE Dimensions | 64 |
pipeline paralleism 미사용
batch size : 1024
train, validation data loss이 overfitting 발생(약 100000step)하여 학습 중단
Inference에서도 급격한 성능 저하를 보였으므로 overfitting이전의 checkpoint들 에서 평가과 검증을 통해 모델 선정
Hyperparameter | Value |
---|---|
n_parameters | 3,809,974,272 |
n_layers | 32 |
d_{model | 3,072 |
d_ff | 12,288 |
n_heads | 24 |
d_head | 128 |
n_ctx | 2,048 |
n_vocab | 30,003 / 30,080 |
Positional Encoding | Rotary Position Embedding (RoPE) |
RoPE Dimensions | 64 |
Pipeline parallelization 사용
batch size : 1024
1.3B와 마찬가지로 약 100000step에서 overfitting 발생
Hyperparameter | Value |
---|---|
n_parameters | 5,885,059,072 |
n_layers | 28 |
d_{model | 4,096 |
d_ff | 16,384 |
n_heads | 16 |
d_head | 256 |
n_ctx | 2,048 |
n_vocab | 30,003 / 30,080 |
Positional Encoding | Rotary Position Embedding (RoPE) |
RoPE Dimensions | 64 |
pipeline parallelization 사용
batch size : 256
배치 사이즈가 작아서 320000step까지 overfitting 발생하지 않고 학습 완료
step이 진행될 수록 모델 performance 향상
KOBEST benchmark dataset 을 사용하여 few-shot prompting based evaluation 수행
Parameter 수와 few-shot 수가 늘어남에 따라 Polyglot-Ko의 성능이 항상
다른 한국어 LLM에 비해 좋은 성능 보임
학습된 모델을 huggingface에 업로드 하고자 함
GPT-NeoX의 체크포인트들을 하나의 checkpoint로 합치고 Hugging Face Transformers 형식으로 바꿔야 함
이를 위한 script를 만들고 아래 과정 수행
소중한 정보 잘 봤습니다!