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

un

tamu
1 / ?
kembali ke pelajaran

Embedding Adalah Lookup, Bukan Fungsi

Lapisan Pertama Setelah Tokenizer

Tokenizer memberikan model ID integer: [256, 1842, 7301, ...]. Hal pertama yang dilakukan transformer: mengubah setiap ID menjadi vektor berisi d_model bilangan float. Vektor tersebut berada dalam ruang berdimensi d_model (768 dimensi untuk ANDREA-120M).


Lapisan embedding adalah tabel pencarian, bukan fungsi. Bayangkan sebuah matriks raksasa:


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

Token ID i memilih baris i. Akses array langsung. Tanpa aritmatika, tanpa aktivasi. Hanya sebuah indeks.


Alur embedding token & posisi


Float yang Dapat Dilatih

Setiap entri dalam tabel tersebut dimulai sebagai float acak kecil (biasanya diambil dari distribusi normal yang diskalakan dengan 1/sqrt(d_model)). Backpropagation memperbarui setiap baris setiap kali token ID-nya muncul dalam batch. Setelah pelatihan, token yang serupa (cat, dog, pet) akan memiliki vektor yang mirip; token yang tidak terkait (cat, Tuesday, xylophone) akan berada jauh terpisah dalam ruang vektor.


Biaya Embedding Token ANDREA-120M


KuantitasNilai
V8,449
d_model768
Parameter6,488,832

Sekitar 6,5 juta parameter berada di tabel embedding token saja, sekitar 5,4% dari total ANDREA-120M. Setiap slot kosakata mendapatkan 768 float ini.

Menghitung Ukuran Tabel Embedding

Hitung jumlah parameter embedding token untuk dua varian berikut. (a) ANDREA-480M: V = 16.641 (tokenizer 16.384 segmen ditambah 256 byte plus 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4.353, d_model = 384. Tunjukkan perhitungan V × d_model untuk masing-masing.

Dot Product Mengukur Kemiripan

Vektor sebagai Panah

Sebuah vektor berdimensi 768 hidup dalam ruang yang tidak dapat digambarkan manusia, tetapi aljabar yang sama berlaku di dimensi manapun. Dua operasi kunci penting untuk transformer:


Magnitudo (panjang sebuah panah):


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

Dot product (keselarasan antara dua panah):


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

Apa yang Diberitahukan oleh Dot Product

Dua fakta yang berlaku dalam dimensi apa pun:


- u · v = ||u|| × ||v|| × cos(theta), di mana theta adalah sudut di antara keduanya.

- Vektor yang menunjuk ke arah yang sama menghasilkan hasil kali titik yang besar dan positif.

- Vektor yang menunjuk ke arah berlawanan menghasilkan hasil kali titik yang besar dan negatif.

- Vektor yang membentuk sudut siku-siku menghasilkan hasil kali titik nol.


Hasil kali titik = kesamaan yang belum dinormalisasi. Dua embedding token yang telah dilatih untuk cat & dog menghasilkan hasil kali titik yang tinggi karena backpropagation mendorong keduanya mendekat (keduanya memprediksi konteks terkait hewan peliharaan). cat & Tuesday menjadi hampir ortogonal karena keduanya memprediksi konteks yang berbeda.


Mengapa Transformer Peduli

Activity 5 (grow_a_language_model_attention) membangun attention dari dot products: sebuah query vector di-dot-product-kan dengan key vectors menghasilkan skor yang menunjukkan token mana di masa lalu yang penting untuk memprediksi token berikutnya. Embeddings & dot products bersama-sama membawa setiap interaksi di dalam transformer.

Prediksi Kemiripan

Setelah pelatihan, embedding ANDREA-120M untuk `believ` (token baris 4287, hipotetis) berakhir kira-kira sejajar dengan `know`, `understand`, `learn`. Tanpa menghitung nilai eksak, prediksi urutan dari dot product terbesar ke terkecil: `believ · know`, `believ · stone`, `believ · understand`. Justifikasi urutanmu dalam satu frasa per pasangan.

ANDREA Menggunakan Penyisipan Posisi yang Dipelajari

Masalah

Penyisipan token memberi tahu model kata apa yang ada di posisi ini. Ia tidak memberi tahu model di mana kata tersebut berada. Tanpa informasi posisi, transformer memperlakukan the cat sat on a mat & mat a on sat cat the secara identik: kumpulan token yang sama, tanpa sinyal urutan.


Tiga solusi ada dalam literatur transformer:


Sinusoidal (Vaswani 2017). Rumus matematika tetap berdasarkan sinus & kosinus. Posisi 0 mendapatkan vektor 768 tertentu; posisi 1 mendapatkan yang lain; tidak pernah dilatih, tidak pernah diperbarui. Dapat digeneralisasi ke posisi mana pun melalui rumus.


RoPE (Rotary Position Embedding). Memutar vektor query & key berdasarkan posisi. Digunakan oleh LLaMA, Qwen. Tidak ada parameter tambahan; rotasi sudah terintegrasi dalam attention.


Learned. Tabel embedding terpisah berbentuk (T, d_model) di mana T adalah panjang konteks. Setiap baris dilatih melalui backpropagation, sama seperti token embeddings.


Pilihan ANDREA: Learned

ANDREA mewarisi pendekatan learned-position dari microGPT, yang mewarisi dari nanoGPT, yang mewarisi dari GPT-2. Sebuah alasan:


- Kesederhanaan. Tidak ada matematika khusus dalam attention. Tabel posisi terlihat seperti tabel token.

- Kompatibilitas dengan CUDA khusus. Mesin microgpt_cuda.cu ANDREA menangani dua pencarian embedding secara identik; tidak diperlukan kernel sin/cos.

- Cukup untuk konteks tetap. ANDREA membatasi T pada 1024. Tabel yang dipelajari bekerja dengan baik untuk urutan panjang tetap.


Biaya Position Embedding ANDREA-120M


KuantitasNilai
T (konteks)1,024
d_model768
Parameter786,432

0.79M parameter untuk posisi. Dikombinasikan dengan token embeddings: 6.49M + 0.79M = 7.27M parameter embedding total untuk ANDREA-120M.


Bagaimana Mereka Digabungkan

Pada setiap posisi t dalam urutan input:


x_t = token_embedding[token_id_t] + position_embedding[t]

Dua vektor 768, dijumlahkan secara elemen demi elemen. Hasilnya, x_t, mengalir ke blok transformer pertama. Model tidak pernah memisahkan keduanya lagi; ia belajar menggunakan sinyal gabungan.

Learned Versus Sinusoidal

Bandingkan dua strategi embedding posisi untuk model ANDREA hipotetis. Strategi A: learned, T = 1024. Strategi B: sinusoidal, T arbitrary (bekerja untuk panjang sekuens apa pun). Sebutkan satu keuntungan masing-masing. Kemudian nyatakan strategi mana yang dipilih ANDREA beserta satu alasan dari sudut pandang CUDA / engineering.

Tempat Parameter Embedding Berada

Lapisan Embedding ANDREA-120M Lengkap


KomponenBentukParameter
Tabel token embedding8,449 × 7686,488,832
Tabel position embedding1,024 × 768786,432
Total7,275,264

Sekitar 7,3 juta parameter. Jumlah total parameter ANDREA-120M: ~120 juta. Lapisan embedding saja: 6%. Sisanya 94% berada di blok transformer (attention + MLP, dibahas di aktivitas 5-7).


Embedding Terikat vs Tidak Terikat

Banyak desain transformer (termasuk GPT-2) mengikat token embedding ke proyeksi output akhir: matriks V × d_model yang sama digunakan pada input & output (logits atas kosakata). Pengikatan ini menghemat parameter V × d_model dan sering meningkatkan kualitas.


ANDREA menggunakan embedding yang tidak diikat: embedding input & proyeksi output dilatih sebagai matriks terpisah. Aktivitas 7 (grow_a_language_model_transformer_block) membahas lapisan akhir.


A Forward Pass So Far

Input: ID token [256, 1842, 7301, ...] (1024 buah). Setiap ID mencari vektor 768. Setiap posisi mencari vektor 768. Jumlahkan secara elemen-wise. Hasil: matriks (1024, 768) x yang berisi vektor token-+posisi. x mengalir ke transformer block 1.


Aktivitas 5 (grow_a_language_model_attention) membahas apa yang dilakukan block 1: scaled dot-product attention dengan causal mask & softmax.

Prediksi Struktur Embedding

Refleksi: ANDREA-120M memiliki 8449 embedding token & 1024 embedding posisi, berbagi ruang dimensi yang sama yaitu 768. Setelah pelatihan, apa yang Anda harapkan: (a) matriks embedding token terlihat seperti (pola kluster?), atau (b) matriks embedding posisi terlihat seperti (gradien halus?). Pilih satu & prediksi dalam satu atau dua kalimat. Tidak ada jawaban yang salah; yang penting adalah penalarannya.