학습 데이터인 대화문은 어떻게 생겼을까?
트랜스포머 모델은 입력 시퀀스의 최대 길이 제한이 있다.
현재 베이스라인에 설정된 최대 길이는 아래와 같다.
"tokenizer": {
"encoder_max_len": 512,
"decoder_max_len": 100,
"bos_token": f"{tokenizer.bos_token}",
"eos_token": f"{tokenizer.eos_token}",
# 특정 단어들이 분해되어 tokenization이 수행되지 않도록 special_tokens을 지정해줍니다.
"special_tokens": ['#Person1#', '#Person2#', '#Person3#', '#PhoneNumber#', '#Address#', '#PassportNumber#']
},
너무 긴 시퀀스가 들어가면 메모리를 많이 사용한다. 실제 데이터 길이에 맞춰서 최대값을 설정해주면 좋다고 하니,
학습 데이터 대화문의 최대 길이를 확인해보자. 그리고 토크나이저를 적용해 토큰화된 후의 최대 길이값도 함께 알아보자!
대화문 길이에 대한 정보
count 12457.000000
mean 438.765112
std 220.134710
min 99.000000
25% 299.000000
50% 396.000000
75% 540.000000
max 2546.000000
Name: dialogue, dtype: float64
대화문 최대 길이: 2546
대화문 평균 길이: 438
토큰 기준 최대 길이: 1115
토큰 기준 평균 길이: 206
요약문 길이에 대한 정보
count 12457.000000
mean 87.397929
std 37.641178
min 19.000000
25% 61.000000
50% 80.000000
75% 106.000000
max 478.000000
Name: summary, dtype: float64
최대값을 너무 작게 설정해놓으면 중요한 정보가 잘릴 수도 있다고 한다. 데이터의 95% 이상을 커버할 수 있는 길이를 설정해야 좋다고 하는데(?) 95%까지 커버하려면 812자까지 늘려야한다; 그러기엔 데이터가 너무 적긴 한데. 굳이 그렇게까지 할 필요 있나 싶기도 하고.
일단 실험을 해보면,
# 실험 1: 현재 설정
"encoder_max_len": 512
"per_device_train_batch_size": 50
# 실험 2: 중간값 시도
"encoder_max_len": 650 # 95퍼센타일과 현재값의 중간
"per_device_train_batch_size": 40
# 실험 1: 현재 설정 "encoder_max_len": 512 "per_device_train_batch_size": 50
# 실험 2: 중간값 "encoder_max_len": 650 # 95퍼센타일과 현재값의 중간 "per_device_train_batch_size": 40
흠 별 차이 없다 ㅋㅋㅋ
'공부방 > Upstage AI Lab 4기' 카테고리의 다른 글
[NLP] 화자가 몇 명인지 정보를 주면 좋을까? (0) | 2024.11.20 |
---|---|
[NLP] 대화의 턴수와 주요 발화자를 토큰으로 추가해보자 (1) | 2024.11.19 |
[NLP 경진대회] 대회에 들어가며, 베이스라인 이해하기 (0) | 2024.11.18 |
RNN에 attention 더하기 (3) | 2024.11.15 |
Attention! Attention! Attention! (0) | 2024.11.15 |