번역 & 요약 &
3. pre-training
3
- 대규모 말뭉치 정제&필터링
- 모델 사이즈/아키텍처 결정하기 위한 스케일링 실험
- 라지 스케일에서 먹히는 효과적인 pre-trainning테크닉
- pre-trainning 레시피
3.1 Pre-training data
- 데이터 클렌징을 통해 고품질 토큰을 얻음. ( 고품질 토큰의 의미? > )
- 개인정보(+ 19금) 제거
3.1.1
다음과 같은 클렌징 프로레스를 웹 데이터에 진행함.
- PII and safety filtering
- Text extraction and cleaning
- (데이터 잘 뽑게) custom parser로 raw HTML 처리, (반복제거, 중요정보 추출)
- custom parser에 대해 human평가 진행했는데, 다른 parser보다 선호 되었음
- 수학적 콘텐츠도 잘 뽑기위해 노력(alt 도 뽑음 수식이 alt에 설명된경우도 있나봄)
- 마크타운 양식(###,##, **) 등이 포함된 웹데이터로 훈련한 모델이 더 성능이 별로였음, 그래서 제거
- De-duplication
- URL 중복제거 (웹사이트 보다보면 버전별로 url 들어있는거있는데, 그건가봄)
- Document-level de-duplication ( MinHash 알고리즘 사용)
-
더보기
예시: 두 문서의 유사성 계산
1. 두 문서 준비:
- 문서 A: "apple orange banana"
- 문서 B: "apple orange grape"
우리는 이 두 문서가 얼마나 유사한지 측정하려고 합니다.
2. 각 문서에서 단어 집합 만들기:
- 문서 A의 단어 집합: {apple, orange, banana}
- 문서 B의 단어 집합: {apple, orange, grape}
3. Jaccard 유사도 계산 (정확한 방법):
Jaccard 유사도는 두 집합의 교집합 크기를 합집합 크기로 나눈 값입니다.
- 교집합: {apple, orange} → 교집합 크기 = 2
- 합집합: {apple, orange, banana, grape} → 합집합 크기 = 4
따라서, Jaccard 유사도는 2/4 = 0.5입니다.
4. MinHash 알고리즘 적용:
MinHash는 이 유사도를 빠르게 근사할 수 있습니다. 이제 각 집합에 대해 해시 함수를 사용하여 최소값을 선택합니다.
- 해시 함수 1: "apple", "orange", "banana", "grape" 각각을 해시한 후, 최소값을 선택합니다.
- 예를 들어, 해시 결과가 아래와 같다면:
- apple → 5
- orange → 3
- banana → 9
- grape → 7
- 이 해시 함수에서 최솟값은 3 (orange)입니다.
- 예를 들어, 해시 결과가 아래와 같다면:
- 해시 함수 2: 다른 해시 함수도 사용하여 최소값을 찾습니다.
- 예를 들어, 해시 결과가:
- apple → 2
- orange → 8
- banana → 4
- grape → 6
- 이 해시 함수에서 최솟값은 2 (apple)입니다.
- 예를 들어, 해시 결과가:
5. 두 집합의 유사도 근사:
MinHash는 여러 해시 함수에 대해 최솟값들을 비교하여 두 집합의 유사도를 근사합니다.
- 문서 A의 해시 최소값: {3, 2}
- 문서 B의 해시 최소값: {3, 2}
위 두 집합의 최소값들이 완전히 일치합니다. 그래서 이 두 문서는 Jaccard 유사도가 1에 가까운 것으로 근사할 수 있습니다.
6. 여러 해시 함수 사용:
실제로 MinHash는 여러 해시 함수를 사용하여 더 정확한 유사도 근사를 제공합니다. 예를 들어, 100개의 해시 함수를 사용하면 유사도 계산이 더 정확해집니다.
결론:
MinHash는 두 집합의 유사성을 빠르게 추정할 수 있는 효율적인 방법입니다. 예시에서처럼, 여러 해시 함수를 통해 각 집합의 최솟값을 비교하여 Jaccard 유사도를 근사합니다. 이 방식은 특히 대규모 데이터셋에서 유용하며, 시간이 오래 걸리는 정확한 계산을 대체할 수 있습니다.
- Line level de-duiplication.: (30M 문서에서 6번 이상 반복된 줄은 제거)
- Heuristic filtering.: n-gram(2021), dirty word counting(2020), token-distribution Kullback-Leibler divergence 로 제거
- Model-based quality filtering:
fasttext(2017): 위키에서 쓰인 단어만 사용
Roberta-based-classifiers : 라마2 output으로 finetuning
DistilRoberta: 품질 점수 사용 - Code and reasoning data:
math,code, 과학자료는 별도 파이프라인(프롬프트 튜닝)으로 처리함.
(자연어와 자연어+코드는 토큰화 했을때 분포가 다름..?) - Multilingual data:
크롤링한 문서데이터를 176언어로 카테고리화 함.
중복제거(doc-level, line-level 각 언어에대해)
저품질 데이터 제거를 위해 각 언어마다 처리방법을 좀 다르게한듯 (휴리스틱, 모델 베이스 필터링 사용)
3.1.2 Determining the Data Mix (학습데이터 구성방법)
2가지 방법사용: 1) 특정 지식 영역으로 분류(수학,과학,문과,역사등), 2) 데이터 ~ 모델 크기간의 관계연구
- Knowledge classification.
- 카테고리 분류기 개발 (데이터가 너무 많은건 줄였는데, arts, entertainment를 줄임)
- scaling laws for data mix :
학습데이터를 다양하게 구성해보고, 이를 기반으로 작은 모델을 학습함. 이 학습 결과를 통해 큰모델에서 사용할 학습 구성을 결정하는듯. - Data mix summary:
최종 학습구성은 다음과 같음: 일반 상식 (약 50%), 수학&논리사고(25%), 코드(17%), 8%(다국어) 토큰
3.1.3 Annealing Data (데이터 최적화 ? ) --잘모르겠음.
작은 규모여도 고품질 데이터로 annealing하면 성능 향상이 뛰어났다!(key benchmarks들에서).
any trainning set도 사용하지않았음, 따라서 lamma3의 도메인 일반화 능력을 확인할 수 있었음.
(의견: 학습 땐 의료정보가 없는데, 테스트때 의료자료에 대해서도 잘 대답(추론)하면 일반화능력이 좋다고 생각할수있는데 이거같음, 새로운 도메인에서의)
7B는 anneaing하니까 좋아졌는데, 405B(flagship)는 효과 별로없었음
- Using annealing to assess data quality. ( assess:평가하다)
annealing을 통해 특정 도메인 DB의 품질을 평가할 수 있음.
데이터셋 평가 방법은, 8B 모델이 50%정도 훈련됐을때, lr을 점차 0으로 낮추는 식으로 진행.
특정 도메인의 총 40B 토큰에 대해 lr 낮추기 작업 진행함
( *** 문맥의미 잘안됨. 총 80B였고, 50%하고나면 40B가 남음? 혹은 40B남았을때 낮추기시작? ) -
더보기Using annealing to assess data quality. Similar to Blakeney et al. (2024), we find that annealing enables us to judge the value of small domain-specific datasets. We measure the value of such datasets by annealing the learning rate of a 50% trained Llama 3 8B model linearly to 0 on 40B tokens. In those experiments, we assign 30% weight to the new dataset and the remaining 70% weight to the default data mix. Using annealing to evaluate new data sources is more efficient than performing scaling law experiments for every small dataset.
3.2 Model Architecture
모델 구조는 lamm1,2랑 비슷하다. 성능향상의 효과는 데이터 질 향상과 trainging scale에서 왔다.
llama2랑 비교했을때, 약간 수정한건,
- grouped query attention (GQA: 2023)
- attention mask를 썻다는데, (?? 무슨 효과가인지 의미 잘 모르겠음. ? )
-
더보기We use an attention mask that prevents self-attention between different documents within the same sequence. We find that this change had limited impact during in standard pre-training, but find it to be important in continued pre-training on very long sequences.
- 새로운 voca token썻는데, 압축성능이 3.17->3.94로 좋아졌다. (같은 cost로 더많이 읽을 수 있음)
total 128K = 영어(100K) + non 영어(28K) , non 영어 28K가 압축률이나 downstream task에서 더 성능이 좋았음 - increase RoPE base frequency hyperparameter to 500,000. (RoPE: transformer의 위치정보 처리방법)
(Rotary Position Embeding)

3.2.1 Scaling Laws
scaling laws (2020) paper를 참고 (요약 tistory: https://nuevo-devo.tistory.com/76)
> 다음 2가지 이슈 때문에, 최적의 모델사이즈를 결정하기 위해서, downstream benchmark tasks를 통해 flagship모델의 성능을 평가하는 방법을 사용한다. 1) 현존하는 scaling laws가 특정 벤치마크에서의 성능 보다 next token prediction loss만 예측한다. 2) scaling laws가 부정확할 수있다 ( pre training을 small compute budget에서 해서)
데이터가 적은 downstream task에서도 모델의 성능을 잘 예측하려면
1. establish a correlation between the compute-optimal model’s negative log-likelihood on downstream tasks and the training FLOPs.
2. Next, we correlate the negative log-likelihood on downstream tasks with task accuracy, utilizing both the scaling law models and older models trained with higher compute FLOPs. In this step, we specifically leverage the Llama 2 family of models
메타애들은 실험을 매우 열심히 했다.

fig2 : 모델사이즈와 트레이닝 토큰별 validation loss ( 모델의 규모에 따라 적정 trainning token 규모가 있다)
fig3 : 최적 트레이닝 토큰 (fig2 중심부)와 compute(FLOPs)간의 관계
을 통해 power law relation 을 산출 compute budget, C, optimal number of trainning tokens(N*(C))
질문) 405B가 어케 나옴?
'AI상식 w.GPT' 카테고리의 다른 글
SigLIP 리뷰 (0) | 2024.12.06 |
---|---|
Attention 모듈 설명 (매우 쉽게 설명) (0) | 2024.10.28 |
[핵심요약?] On Distillation of Guided Diffusion Models (1) | 2024.10.09 |
SNR in Diffusion (w. GPT) (0) | 2024.10.03 |
GmP CLIP MLP. (clip finetuning) (1) | 2024.10.03 |