Những gì Tokenizer Ăn Trở thành Những gì Nó Biết
Chế độ ăn Tokenizer: Một Định nghĩa
Một tokenizer Harris huấn luyện trên một mẫu kho ngữ liệu. Nó chạy phân tích phân bố trên mẫu đó, chọn N phân đoạn lặp lại mạnh mẽ nhất, & ghi chúng vào từ vựng. Sau khi huấn luyện, những N phân đoạn đó trở thành một bảng chữ cái cố định mà mô hình ngôn ngữ sử dụng cho mọi thứ: huấn luyện, suy luận, mọi đầu vào, mọi đầu ra.
Chế độ ăn Tokenizer = một mẫu văn bản mà tokenizer huấn luyện trên.
Chế độ ăn huấn luyện = một tập dữ liệu (corpus) mà mô hình ngôn ngữ huấn luyện trên đó.
Khi hai chế độ ăn khác nhau, tokenizer học các phân đoạn được điều chỉnh cho văn bản mà mô hình sẽ không bao giờ thấy. Dung lượng embedding (một khe cho mỗi mục từ vựng) bị tiêu tốn vào các phân đoạn không mang lại phần thưởng nào trong quá trình huấn luyện.
SAI LẦM CỦA ANDREA-12M
ANDREA-12M đã huấn luyện tokenizer Harris của nó trên một phần thô của megachat-v8.txt. Phần đó chứa các mẫu code & dữ liệu tool-call. Tuy nhiên, chương trình huấn luyện đã loại trừ code & tool calls; ANDREA-12M chỉ thấy văn bản hội thoại.
Kết quả: tokenizer học các phân đoạn từ từ khóa Python, dấu ngoặc JSON, cờ shell. Một mô hình được huấn luyện trên các mục từ điển & hội thoại. Chỉ 36.4% các phân đoạn chồng lấp với mẫu có trọng số chương trình huấn luyện. 63.6% còn lại của các khe từ vựng được phân bổ cho các phân đoạn mà mô hình không bao giờ gặp trong thời gian huấn luyện.
Tại Sao Điều Đó Quan Trọng
Mỗi mục từ vựng tiêu thụ các tham số embedding: một hàng của ma trận embedding có hình dạng V × d_model (được đề cập trong hoạt động 4). Với V = 4353 & d_model = 384, mỗi khe từ vựng tốn 384 số thực. Lãng phí 63.6% đồng nghĩa với việc lãng phí 63.6% ma trận embedding cho dữ liệu mà mô hình không bao giờ thấy.
Nêu Một Quy Tắc Chế Độ Ăn
N Nên Lớn Đến Mức Nào
Một Quét Khoa học Từ vựng
ANDREA-120M đã chạy một thí nghiệm khoa học từ vựng: huấn luyện các tokenizer Harris với các giá trị N khác nhau (số đoạn yêu cầu) trên cùng một tập dữ liệu firehose 1.25B ký tự. Đo lường số đoạn mà tokenizer thực sự tìm thấy. Vẽ biểu đồ kết quả.
| Số lượng yêu cầu N | Số đoạn thực tế tìm thấy | Trạng thái |
|---|---|---|
| 2,048 | 2,048 | Chưa bão hòa (còn chỗ phát triển) |
| 4,096 | 4,096 | Chưa bão hòa |
| 8,192 | 8,192 | Điểm bão hòa |
| 16,384 | 13,106 | Bộ ngữ liệu đã cạn kiệt |
Ý nghĩa của Bão hòa
Ở N nhỏ, một corpus có nhiều mẫu lặp lại; một tokenizer lấp đầy mọi slot mà nó yêu cầu. Ở N lớn, một tokenizer hết các ranh giới có ý nghĩa thống kê. Một corpus 1.25B ký tự chứa khoảng 13,106 phân đoạn hình dạng morpheme riêng biệt trên ngưỡng tần suất. Yêu cầu 16,384 chỉ thu được 13,106; 3,278 slot còn lại được đệm hoặc để trống.
Bão hòa: điểm mà N yêu cầu = N tìm thấy. Vượt quá bão hòa, một tokenizer không thể phát hiện thêm phân đoạn mà không làm loãng chất lượng (hạ ngưỡng tần suất & chấp nhận nhiễu).
Điểm Ngọt tại 8192
ANDREA-120M chọn N = 8192. Lý do:
- Dưới 8192 (ví dụ 4096): từ vựng không nắm bắt đủ các morpheme phổ biến; chuỗi phân mảnh thành nhiều token hơn; thông lượng giảm.
- Tại 8192: mọi khe segment đều ánh xạ đến một mẫu thực tế, lặp lại trong corpus.
- Trên 8192: lợi nhuận giảm dần; 13,106 < 16,384 nghĩa là các khe bị lãng phí.
Từ vựng cuối cùng của ANDREA-120M: 256 + 8192 + 1 = 8449 tokens. Nén trung bình: 5.91 byte UTF-8 mỗi token, nghĩa là mỗi token thay thế ~5.9 byte văn bản thô. Tỷ lệ đó xác định ngữ cảnh hiệu quả của mô hình: tại 1024 tokens × 5.91 bytes/token, ANDREA-120M đọc khoảng 6,050 ký tự ngữ cảnh mỗi lần forward pass.
Trên hoặc Dưới Bão Hòa
Nguồn gốc của 63.6%
Đếm các Khe Lãng phí
Bộ mã hóa của ANDREA-12M được huấn luyện trên dữ liệu thô megachat-v8.txt (yêu cầu 4096 phân đoạn, đã tìm thấy). Một nhóm đã lấy mẫu một tập con có trọng số theo chương trình học: một kho ngữ liệu được trọng số hóa theo tần suất mỗi nguồn được kéo bởi bandit. Họ chạy lại phân tích Harris trên mẫu có trọng số đó & hỏi: bao nhiêu trong số 4096 phân đoạn gốc vẫn xuất hiện?
Kết quả: 36.4% chồng lấp. 1,491 trong 4,096 phân đoạn khớp với trọng số chương trình học. Còn lại 2,605 phân đoạn đến từ các nguồn mà mô hình loại trừ.
63.6% các ô từ vựng được phân bổ cho các byte mà mô hình chưa từng thấy.
Chi phí Embedding
Mỗi mục từ vựng chiếm một hàng của ma trận embedding có hình dạng (V, d_model). Đối với ANDREA-12M:
- V = 4353 (256 + 4096 + 1)
- d_model = 384
- Tham số Embedding = V × d_model = 4353 × 384 = 1,671,552 tham số
63.6% trong số các tham số đó không được sử dụng cho việc huấn luyện hội thoại. 1.063.107 tham số được cấp phát, 0 tín hiệu phần thưởng. ANDREA-12M sống sót vì 256 byte cơ bản luôn bao quát bất kỳ ký tự nào; nhưng dung lượng trên mỗi tham số giảm mạnh.
Cách ANDREA-120M Khắc Phục Nó
Bộ mã hóa của ANDREA-120M được huấn luyện trên một dòng dữ liệu đầy đủ (1.25B ký tự, 21 nguồn) ở mức bão hòa N = 8192. Bộ dữ liệu huấn luyện = cùng một dòng dữ liệu. Căn chỉnh chế độ ăn: 100%. Độ chồng chéo kết quả trên mẫu có trọng số chat: 36.5%. (Lưu ý: 36.5% là độ chồng chéo, không phải độ bao phủ; chat chỉ là một tập con của dòng dữ liệu đầy đủ, vì vậy con số này hoạt động khác với 36.4% của 12M.)
Nén hiệu quả: 5.91 byte UTF-8 trên mỗi token. Ma trận nhúng của ANDREA-120M: 8449 × 768 = 6.488.832 tham số. Mỗi tham số đều nhận được tín hiệu phần thưởng vì mỗi đoạn đều ánh xạ đến văn bản mà mô hình thực sự huấn luyện trên đó.
Độ Bao Phủ So Với Độ Chồng Chéo
Tại sao 5.91 Bytes Per Token Quan trọng
Tỷ lệ Nén
Số bytes UTF-8 trung bình mỗi token đo lường lượng văn bản thô mà mỗi mục từ vựng nén được. ANDREA-120M trung bình 5.91. Một mô hình với các mảnh ngắn hơn (3 bytes/token) đọc ít ngữ cảnh hơn mỗi forward pass; một mô hình với các mảnh dài hơn (8 bytes/token) đọc nhiều hơn nhưng huấn luyện chậm hơn (mỗi mảnh cần nhiều mẫu hơn để học tốt).
Ngữ Cảnh Hiệu Quả
| Số lượng | Giá trị |
|---|---|
| Cửa sổ ngữ cảnh token | 1.024 token |
| Số byte trung bình mỗi token | 5,91 |
| Ngữ cảnh ký tự hiệu quả | 1024 × 5,91 ≈ 6.050 |
Khoảng 6.000 ký tự UTF-8 vừa khít trong một lần forward pass của ANDREA-120M. Một trang văn xuôi tiếng Anh dày đặc có khoảng ~3.000-4.000 ký tự; ANDREA đọc được khoảng một trang rưỡi mỗi pass.
Chế Độ Ăn Làm Siết Chặt Nén
Một tokenizer được căn chỉnh tốt sẽ nén tốt hơn. Khi tokenizer học được các phân đoạn lặp lại trong tập huấn luyện, nhiều văn bản hơn sẽ vừa trong mỗi token. Tokenizer kém căn chỉnh của ANDREA-12M nén kém hơn trên chat (chi tiêu nhiều byte hơn cho các mảnh byte-fallback vì các phân đoạn chat thưa thớt hơn trong từ vựng). Tokenizer được căn chỉnh theo chế độ ăn của ANDREA-120M giữ một phần chat-shaped trên đường nhanh & các kịch bản hiếm trên byte fallback.
Hoạt Động 4 Tiếp Tục
Hoạt động 4 (grow_a_language_model_embeddings) bao quát điều gì xảy ra với 8449 mục từ vựng đó: chúng trở thành các hàng của ma trận embedding có hình dạng V × d_model, sau đó cộng thêm position embeddings đã học trước khi chảy vào khối transformer đầu tiên.