KenT-300M-Base / README.md
KenteaKe11's picture
Upload 4 files
e2a3b30 verified
|
Raw History Blame Contribute Delete
2.9 kB
---
library_name: transformers
license: apache-2.0
language:
- en
pipeline_tag: text-generation
tags:
- recurrent
- ema
- dct
- swiglu
- custom_code
- base
datasets:
- wikimedia/wikipedia
- HuggingFaceFW/fineweb-edu
---
# KenT-300M-Base
~299.7M tham số, mô hình ngôn ngữ hồi quy **một token mỗi bước**. Không attention theo thời gian: lịch sử nằm trong bộ nhớ EMA học được ở mọi độ sâu; attention chỉ chạy theo trục độ sâu (N tap) của chính token hiện tại.
```
h_0 = x[t] # embedding, (1, D)
h_i = h_{i-1} + SwiGLU(RMSNorm(h_{i-1})) # i = 1..n khối xanh
u_i = RMSNorm(h_i) · D^T · W_i # i = 0..n khối cam "~DCT-II Proj (D^T)W"
H_i[t+1] = (1 - A_i) ⊙ H_i[t] + A_i ⊙ u_i # Learnable EMA Vector, A = sigmoid(logits), shape (N, D), N = n+1
Hcat = Concat_i H_i[t+1] # (N, D)
p = Q + Wo · Attn(Q, K, V) # Attn Pooling -> Query Residual
K, V = RMSNorm(Hcat) ; Q = learner query (1, D) học được, pooling hết N vector
g = p + SwiGLU(RMSNorm(p)) # khối xanh cuối
y = g · D # "DCT-II Proj" (DCT ngược)
out = x[t] + y # Add với đầu vào gốc x[t]
logits = LM_head(RMSNorm_f(out)) # tied với embedding
```
D là ma trận DCT-II trực chuẩn cố định (hàng = tần số, vector hàng nên DCT là `x·D^T`); W học được, khởi tạo ≈ I.
`RMSNorm_f` không có trong sơ đồ, thêm để logits ổn định.
Tiêu chí siêu tham số: **D là độ phân giải** (D cao => chênh lệch góc giữa các tần số DCT nhỏ), **N = n+1 là khả năng tư duy** (N sâu => học quan hệ tốt hơn). SwiGLU hidden giữ ở ~2D để dồn ngân sách tham số cho D và N.
| | |
|---|---|
| vocab | 50257 (GPT-2), tied embedding / LM head |
| D (`hidden_size`) | 1152 |
| n khối xanh (`num_hidden_layers`) | 24 (→ N = 25 tap EMA) |
| SwiGLU hidden (`intermediate_size`) | 2352 (~2D) |
| Attn Pooling heads (`pool_num_heads`) | 9 (head_dim 128) |
| tham số | ≈ 299.68M (embedding 57.89M) |
| trạng thái giải mã | H shape (25, 1152), O(1) theo độ dài |
![KenT diagram](KenT.png)
EMA khởi tạo theo cấp số nhân từ 0.5 (tap đầu, feature đầu) đến 0.01 (tap cuối, feature cuối); vẫn học được.
EMA chạy FP32 bằng affine-scan log-depth, kết quả bằng đúng hồi quy tuần tự.
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("Vi-LAB/KenT-300M-Base", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("Vi-LAB/KenT-300M-Base", trust_remote_code=True)
```
Hoặc `python infer.py --model Vi-LAB/KenT-300M-Base --prompt "Today the weather is"`.