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

un

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

임베딩은 함수가 아닙니다

토크나이저 이후의 첫 번째 레이어

모델에 정수 ID를 제공하는 토크나이저는: [256, 1842, 7301, ...]입니다. 전사기는 각 ID를 d_model개의 실수로 변환하는 첫 번째 일을 수행합니다. 해당 벡터는 d_model차원 공간에 존재합니다(ANDREA-120M의 경우 768차원).


임베딩 레이어는 조회 테이블이며, 함수가 아닙니다. 거대한 행렬을 상상해 보세요:


shape: (V, d_model)
row 0:    [e_0_0, e_0_1, ..., e_0_767]
row 1:    [e_1_0, e_1_1, ..., e_1_767]
...
row 8448: [e_8448_0, e_8448_1, ..., e_8448_767]

토큰 ID i는 행 i를 선택합니다. 직접 배열 액세스입니다. 어떠한 산술도, 활성화도 없습니다. 단순히 인덱스입니다.


토큰 및 위치 임베딩 흐름


학습 가능한 실수

그 테이블의 각 행은 일반적으로 d_model의 제곱근에 비례하는 정규 분포에서 작은 난수로 시작합니다. 배치에서 해당 토큰 ID가 나타나면 역전파가 각 행을 업데이트합니다. 훈련 후, 유사한 토큰 (cat, dog, pet)는 유사한 벡터로 끝나고, 관련이 없는 토큰 (cat, Tuesday, xylophone)는 벡터 공간에서 멀리 떨어져 있습니다.


ANDREA-120M 토큰 임베딩 비용


QuantityValue
V8,449
d_model768
Parameters6,488,832

ANDREA-120M의 전체 6.5만 개의 매개변수 중 약 5.4%가 토큰 임베딩 테이블에 있습니다. 각 어휘 슬롯은 이러한 768개의 실수를 얻습니다.

임베딩 테이블 크기 계산

두 가지 미래 버전에 대한 토큰 임베딩 매개변수 수를 계산하십시오. (a) ANDREA-480M: V = 16,641 (16,384 세그먼트 토크나이저에 256 바이트를 추가한 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4,353, d_model = 384. 각 경우에 대해 V × d_model 산술을 보여주세요.

Dot Products Measure Similarity

벡터는 화살표입니다

768차원 벡터는 인간이 그림으로 표현할 수 없는 공간에 존재하지만, 같은 대수학은 모든 차원에서 작동합니다. 트랜스포머에서 중요한 두 가지 연산이 있습니다:


모듈러 (화살표의 길이):


||v|| = sqrt(v_0² + v_1² + ... + v_767²)

점곱 (두 화살표의 대응):


u · v = u_0 × v_0 + u_1 × v_1 + ... + u_767 × v_767

점곱이 알려주는 것

모든 차원에서 적용되는 두 가지 사실:


- u · v = ||u|| × ||v|| × cos(theta), 여기서 theta는 두 화살표 사이의 각도입니다.

- 같은 방향으로 가는 벡터는 큰 긍정적인 점곱을 제공합니다.

- 반대 방향으로 가는 벡터는 큰 부정적인 점곱을 제공합니다.

- 서로 직각인 벡터는 점곱이 0을 제공합니다.


점곱은 비정규 유사도를 제공합니다. catdog의 훈련된 토큰 임베딩 두 개는 두 가지 모두 애완동물 관련 컨텍스트를 예측하는 데 사용되었기 때문에 높은 점곱을 얻게 됩니다. catTuesday는 서로 직교하는 방향으로 끝나게 되어 거의 서로 직각이 됩니다.


트랜스포머가 왜 관심을 가질까

활동 5 (grow_a_language_model_attention)은 점곱으로 주의를 집중합니다: 쿼리 벡터가 키 벡터와 점곱하면 과거 토큰이 다음 토큰을 예측하는 데 중요하다는 점을 말해주는 점수들이 나옵니다. 임베딩과 점곱은 트랜스포머 내에서 모든 상호 작용을 담고 있습니다.

유사도 예측

훈련이 끝난 후, ANDREA-120M의 `believ` 토큰에 대한 임베딩(가상, 4287번째 행)은 `know`, `understand`, `learn`와 거의 대응되어 있습니다. 정확한 값을 계산하지 않고, `believ · know`, `believ · stone`, `believ · understand`의 점곱 순서를 큰 점곱에서 작은 점곱 순으로 예측하세요. 각 쌍에 대해 한 문장으로 정당성을 설명하세요.

ANDREA가 학습된 위치 임베딩을 사용합니다

문제

토큰 임베딩은 모델이 특정 위치에 어떤 단어가 있는지 알려줍니다. 그러나 단어가 어디에 있는지에 대한 정보를 제공하지 않습니다. 위치 정보가 없으면 전자식 모델은 the cat sat on a matmat a on sat cat the를 동일한 토큰 세트로 취급하고, 순서 신호가 없습니다.


전체론자에서 세 가지 해결책이 있습니다:


진자법(Sinusoidal, Vaswani 2017). 사인과 코사인 함수에 기반한 고정된 수학적 공식입니다. 위치 0은 특정 768차원 벡터를 받고, 위치 1은 다른 벡터를 받습니다. formula로 일반화됩니다.


RoPE(회전 위치 임베딩). 위치에 따라 쿼리 및 키 벡터를 회전합니다. LLaMA, Qwen에서 사용되며, 추가적인 매개변수가 없습니다. 회전은 주의에 내장되어 있습니다.


학습. 컨텍스트 길이 T와 d_model로 구성된 별도의 임베딩 테이블입니다. 각 행은 백프로파게이션을 통해 학습되며, 토큰 임베딩과 동일하게 학습됩니다.


ANDREA의 선택: 학습

ANDREA는 microGPT에서 유래하고, microGPT는 nanoGPT에서, nanoGPT는 GPT-2에서 학습된 위치 접근 방식을 상속받았습니다. 다음은 그 이유입니다:


- 단순함. 특별한 수학이 전류에 없습니다. 위치 테이블은 토큰 테이블과 동일한 구조입니다.

- custom CUDA와 호환성. ANDREA의 microgpt_cuda.cu 엔진은 두 개의 임베딩 조회를 동일하게 처리합니다. sin/cos 커널이 필요하지 않습니다.

- 고정된 컨텍스트에 충분합니다. ANDREA는 T를 1024으로 고정합니다. 고정된 길이 시퀀스에 대해 학습된 테이블이 충분합니다.


ANDREA-120M 위치 임베딩 비용


수량
T (context)1,024
d_model768
매개변수786,432

ANDREA-120M에 총 0.79M개의 위치 임베딩 매개변수가 있습니다. 토큰 임베딩과 결합하면 6.49M + 0.79M = 7.27M개의 임베딩 매개변수 전체입니다.


어떻게 결합하는가

입력 시퀀스의 각 위치 t에서:


x_t = token_embedding[token_id_t] + position_embedding[t]

두 768 벡터, 원소별 합산. 결과 x_t는 첫 번째 트랜스포머 블록으로 흐른다. 모델은 그들을 다시 분리하지 않음; 결합 신호를 사용하는 것을 배운다.

학습된 대신 수성 위치 인코딩

가상 ANDREA 모델에 대한 위치 인코딩 전략 두 가지를 비교하십시오. 전략 A: 학습, T = 1024. 전략 B: 수성, T 무제한(어느 길이의 시퀀스에도 작동). 각각의 이점을 명명하고 그 후 ANDREA가 선택한 것을 명시하고 CUDA / 공학 관점에서 하나의 이유를 언급하십시오.

인코딩 파라미터 위치

ANDREA-120M 전체 인코딩 레이어


구성 요소모양파라미터
토큰 인코딩 테이블8,449 × 7686,488,832
위치 인코딩 테이블1,024 × 768786,432
합계7,275,264

약 7.3M 파라미터. ANDREA-120M의 전체 파라미터 수: ~120M. 인코딩 레이어만: 6%. 나머지 94%는 트랜스포머 블록(활동 5-7에서 다루는 attention + MLP)에서 살아있다.


묶이지 않은 vs 묶인 인코딩

많은 트랜스포머 설계(포함하여 GPT-2)는 토큰 인코딩을 최종 출력 프로젝션에 묶어: 입력 및 출력(로그이티드 오버 바다코디)에서 동일한 V × d_model 행렬을 사용합니다. 묶음으로 인해 V × d_model 파라미터가 절약되고 종종 품질이 향상됩니다.


ANDREA는 묶이지 않은 인코딩을 사용합니다: 입력 인코딩 및 출력 프로젝션은 별개의 행렬로 학습합니다. 활동 7(grow_a_language_model_transformer_block)에서는 최종 레이어를 다룹니다.


지금까지의 전방향 패스

입력: 토큰 ID [256, 1842, 7301, ...] (1024개가 있다). 각 ID는 768 벡터를 검색합니다. 각 위치는 768 벡터를 검색합니다. 원소별로 합산합니다. 결과: 토큰-+-位置 벡터의 (1024, 768) 행렬 x. x는 첫 번째 트랜스포머 블록으로 흐르며


Activity 5 (grow_a_language_model_attention)는 블록 1이 수행하는 것과 동일합니다: 스케일된 도트 곱 어텐션, 인과 마스크 및 소프트맥스 사용.

예측 임베딩 구조

고민해보십시오: ANDREA-120M은 8449개의 토큰 임베딩과 1024개의 위치 임베딩이 있으며, 동일한 768차원 공간을 공유합니다. 훈련이 끝난 후, 다음 중 어느 것을 기대할까요: (a) 토큰 임베딩 행렬이 어떤 모양으로 보일까요 (클러스터 패턴)? 또는 (b) 위치 임베딩 행렬이 어떤 모양으로 보일까요 (무난한 경사 구조)? 한 가지를 선택하고 한두 문장으로 예측하십시오. 잘못된 답변이 없으며, 논리적인 부분이 중요합니다.