English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

게스트
1 / ?
수업 목록으로

토크나이저가 먹는 것이 그것이 아는 것이 된다

토크나이저 다이어트: 정의

Harris 토크나이저는 코퍼스 샘플에서 훈련됩니다. 해당 샘플 전반에 분포 분석을 실행하고, 가장 강하게 반복되는 N개의 세그먼트를 선택하여 어휘에 기록합니다. 훈련 후, 이 N개의 세그먼트는 언어 모델이 훈련, 추론, 모든 입력, 모든 출력에 사용하는 고정된 알파벳이 됩니다.


토크나이저 다이어트 = 토크나이저가 훈련하는 텍스트 샘플.


훈련 식단 = 언어 모델이 훈련하는 코퍼스.


두 식단이 다를 때, 토크나이저는 모델이 절대 보지 않을 텍스트에 맞춰진 세그먼트를 학습합니다. 임베딩 용량(어휘 항목당 하나의 슬롯)은 훈련 중 보상을 받지 않는 세그먼트에 낭비됩니다.


토크나이저 식단 & 포화


ANDREA-12M의 실수

ANDREA-12M은 Harris 토크나이저를 megachat-v8.txt의 원시 헤드에서 훈련시켰습니다. 그 헤드에는 코드 샘플과 도구 호출 데이터가 포함되어 있었습니다. 그러나 훈련 커리큘럼은 코드와 도구 호출을 제외했습니다; ANDREA-12M은 대화 텍스트만 보았습니다.


결과: 토크나이저는 Python 키워드, JSON 중괄호, 쉘 플래그로부터 세그먼트를 학습했습니다. 사전 항목과 대화로 훈련된 모델. 커리큘럼 가중 샘플과 중복되는 세그먼트는 36.4%에 불과했습니다. 나머지 63.6%의 어휘 슬롯은 모델이 훈련 시간에 절대 만나지 못할 세그먼트에 할당되었습니다.


왜 중요한가

각 어휘 항목은 임베딩 매개변수를 소비합니다: V × d_model 모양의 임베딩 행렬의 한 행 (활동 4에서 다룸). V = 4353 & d_model = 384일 때, 모든 어휘 슬롯은 384개의 부동소수점을 비용으로 합니다. 63.6%를 낭비하는 것은 모델이 절대 보지 못할 데이터에 임베딩 행렬의 63.6%를 낭비하는 것입니다.

다이어트 규칙 제시하기

토크나이저-다이어트 규칙을 한 문장으로 설명한 후, 최악의 사례를 설명하세요: 연구원이 Harris 토크나이저를 위키피디아(공식 산문, 인용)로 훈련시키지만 모델을 트위터(속어, 이모지, 해시태그)로 훈련시킬 때. 무엇이 잘못되나요?

N은 얼마나 커야 하는가

어휘 과학 스윕

ANDREA-120M은 어휘 과학 실험을 실행했습니다: 동일한 1.25B 문자 파이어호스 코퍼스에서 다양한 N 값(요청된 세그먼트 수)으로 Harris 토크나이저를 훈련. 토크나이저가 실제로 발견한 세그먼트 수를 측정. 결과를 플롯.


요청된 N실제 발견된 세그먼트 수상태
2,0482,048불포화 (성장 여지 있음)
4,0964,096불포화
8,1928,192포화점
16,38413,106코퍼스 소진

포화가 의미하는 것

작은 N에서는 코퍼스가 반복되는 패턴을 많이 가지고 있어; 토크나이저가 요청하는 모든 슬롯을 채웁니다. 큰 N에서는 토크나이저가 통계적으로 의미 있는 경계를 다 소진합니다. 1.25B 문자 코퍼스는 빈도 임계값 이상의 약 13,106개의 고유 형태소 모양 세그먼트를 포함합니다. 16,384개를 요청하면 13,106개를 얻고; 나머지 3,278 슬롯은 패딩되거나 비어 있게 됩니다.


포화: 요청된 N = 발견된 N인 지점. 포화 너머에서는 토크나이저가 품질을 희석하지 않고(빈도 임계값을 낮추고 노이즈를 수용하지 않고) 더 많은 세그먼트를 발견할 수 없습니다.


8192에서의 Sweet Spot

ANDREA-120M은 N = 8192를 선택했습니다. 이유:


- 8192 미만(예: 4096): 어휘가 일반적인 형태소를 충분히 포착하지 못함; 시퀀스가 더 많은 토큰으로 분할됨; 처리량 저하.

- 8192에서: 모든 세그먼트 슬롯이 코퍼스에서 실제, 반복적인 패턴에 매핑됩니다.

- 8192 이상: 수익 체감; 13,106 < 16,384는 슬롯이 낭비됨을 의미합니다.


최종 ANDREA-120M 어휘: 256 + 8192 + 1 = 8449 토큰. 평균 압축: 토큰당 5.91 UTF-8 바이트, 이는 각 토큰이 원시 텍스트의 ~5.9 바이트를 대체함을 의미합니다. 이 비율은 모델의 효과적인 컨텍스트를 설정합니다: 1024 토큰 × 5.91 바이트/토큰에서 ANDREA-120M은 한 번의 순전파당 대략 6,050 문자를 읽습니다.

포화점 위 또는 아래

연구자가 미래 ANDREA 모델에 대해 두 N 값을 고려한다고 가정: N = 6144 (포화점 아래) 대 N = 12288 (포화점 위, 실제 발견된 세그먼트 = 13106이 여전히 적용됨, 코퍼스가 고정되어 있음). 각 경우에 대해: (a) 최종 어휘 크기(256 + N + 1) 계산, & (b) 각 설정이 어휘 용량을 낭비하는지, 모든 사용 가능한 신호를 포착하는지, 또는 부족하게 포착하는지를 한 구절로 설명. 작업 과정을 보여주세요.

63.6%가 어디서 왔는지

낭비된 슬롯 세기

ANDREA-12M의 토크나이저는 원시 megachat-v8.txt로 훈련되었습니다 (요청된 4096 세그먼트 발견). 팀이 커리큘럼 가중치 샘플링된 부분 집합을 샘플링했습니다: 밴디트에 의해 각 소스가 끌려온 빈도에 따라 가중된 코퍼스. 그 가중 샘플에 대해 Harris 분석을 다시 실행하고 물었습니다: 원래 4096 세그먼트 중 몇 개가 여전히 나타납니까?


결과: 36.4% 중복. 4,096 세그먼트 중 1,491개가 커리큘럼 가중치와 일치. 나머지 2,605 세그먼트는 모델이 제외한 소스에서 왔습니다.


모델이 한 번도 보지 못한 바이트에 어휘 슬롯의 63.6%가 할당되었습니다.


임베딩 비용

모든 어휘 항목은 (V, d_model) 모양의 임베딩 행렬의 한 행을 차지합니다. ANDREA-12M의 경우:


- V = 4353 (256 + 4096 + 1)

- d_model = 384

- 임베딩 매개변수 = V × d_model = 4353 × 384 = 1,671,552 parameters


대화형 훈련에서 사용되지 않은 매개변수의 63.6%. 1,063,107 매개변수 할당, 0 보상 신호. ANDREA-12M은 256 기본 바이트가 항상 모든 문자를 커버하기 때문에 생존하지만, 매개변수당 용량이 급격히 감소했습니다.


ANDREA-120M이 이를 어떻게 수정했는가

ANDREA-120M의 토크나이저는 포화 N = 8192에서 전체 파이어호스(1.25B 문자, 21 소스)로 훈련되었습니다. 훈련 코퍼스 = 동일한 파이어호스. 다이어트 정렬: 100%. 채팅 가중 샘플에서의 결과 중첩: 36.5%. (참고: 36.5%는 중첩이며, 커버리지가 아닙니다; 채팅만 전체 파이어호스의 부분집합이므로 이 숫자는 12M의 36.4%와 다르게 동작합니다.)


효과적인 압축: 토큰당 5.91 UTF-8 바이트. ANDREA-120M의 임베딩 매트릭스: 8449 × 768 = 6,488,832 매개변수. 모든 매개변수가 실제로 훈련하는 텍스트에 매핑되는 모든 세그먼트 때문에 보상 신호를 받습니다.

커버리지 대 중첩

ANDREA-120M의 토크나이저 코퍼스는 훈련 코퍼스와 일치합니다. 그럼에도 '채팅 가중 샘플에 대한 세그먼트 커버리지'는 여전히 36.5%로, 12M의 36.4%와 유사합니다. 왜 120M에게 36.5%는 문제가 되지 않는 반면 12M에게 36.4%는 문제가 되었을까요? 어느 부분이 어떤 부분인지에 대한 구절을 사용하세요.

왜 5.91 Bytes Per Token이 중요한가

압축 비율

토큰당 평균 UTF-8 바이트는 각 어휘 항목이 얼마나 많은 원시 텍스트를 압축하는지를 측정합니다. ANDREA-120M은 평균 5.91입니다. 더 짧은 조각(토큰당 3바이트)의 모델은 순전파당 더 적은 맥락을 읽습니다; 더 긴 조각(토큰당 8바이트)의 모델은 더 많이 읽지만 훈련이 느립니다(각 조각이 잘 학습되려면 더 많은 샘플이 필요합니다).


효과적인 컨텍스트


수량
토큰 컨텍스트 창1,024 토큰
토큰당 평균 바이트5.91
효과적인 문자 컨텍스트1024 × 5.91 ≈ 6,050

대략 6,000개의 UTF-8 문자가 하나의 ANDREA-120M 순전파에 들어갑니다. 밀도 높은 영어 산문 한 페이지는 ~3,000-4,000 문자 정도입니다. ANDREA는 한 번의 순전파당 약 페이지와 반 정도를 읽습니다.


다이어트가 압축을 강화합니다

잘 정렬된 토크나이저는 더 잘 압축합니다. 토크나이저가 훈련 코퍼스에서 반복되는 세그먼트를 학습하면, 토큰당 더 많은 텍스트가 들어갑니다. ANDREA-12M의 부정렬 토크나이저는 채팅에서 더 나쁘게 압축되었습니다(채팅 세그먼트가 어휘에서 희박했기 때문에 바이트 대체 조각에 더 많은 바이트가 소모됨). ANDREA-120M의 다이어트 정렬 토크나이저는 채팅 모양의 조각을 빠른 경로에 유지하고 드문 스크립트를 바이트 대체로 처리합니다.


활동 4 계속

Activity 4 (grow_a_language_model_embeddings)는 그 8449개의 어휘 항목에 무슨 일이 일어나는지 다룹니다: 이들은 V × d_model 모양의 임베딩 행렬의 행이 되고, 첫 번째 트랜스포머 블록으로 흐르기 전에 학습된 위치 임베딩을 더합니다.

N을 선택하세요

트레이드오프에 대해 반성하세요: 미래 ANDREA 모델은 N = 4096 (더 빠른 훈련, 더 많은 bytes-per-token = 더 긴 효과적 컨텍스트) 또는 N = 16384 (더 길지만 드문 세그먼트, 텍스트 조각당 더 적은 토큰, 하지만 포화 후 낭비되는 슬롯)을 사용해야 할까요? 하나를 선택하고 한 문장 이유를 설명하세요. 정답 없음.