Login
Back to Blog
"Tokens vs Bytes trong AI: Mô Hình Ngôn Ngữ Thực Sự 'Nhìn Thấy' Gì Khi Bạn Gõ?"

"Tokens vs Bytes trong AI: Mô Hình Ngôn Ngữ Thực Sự 'Nhìn Thấy' Gì Khi Bạn Gõ?"

C
Crazyrouter Team
March 30, 2026
0 viewsTiếng ViệtTutorial
Share:

Tokens vs Bytes trong AI: Mô Hình Ngôn Ngữ Thực Sự "Nhìn Thấy" Gì Khi Bạn Gõ?#

Bạn gõ "你好 Hello" vào GPT-5. Đó là 7 ký tự. Nhưng mô hình xử lý nó thành 2 tokens — và hóa đơn của bạn được tính dựa trên số tokens đó, không phải số ký tự.

Trong khi đó, máy tính của bạn lưu đoạn văn bản ấy dưới dạng 12 bytes.

Vậy sự khác biệt giữa bytes, ký tự và tokens là gì? Tại sao AI dùng tokens thay vì bytes thô? Và tại sao cùng một câu mà viết bằng tiếng Trung lại tốn hơn tiếng Anh?

Bài viết này sẽ giải thích toàn bộ quy trình — từ bytes trên ổ cứng cho đến tokens mà AI thực sự đọc.


Bắt Đầu Từ Nền Tảng: Byte Là Gì?#

Byte là đơn vị dữ liệu nhỏ nhất mà máy tính lưu trữ. Một byte = 8 bits = một số từ 0 đến 255.

Khi bạn lưu văn bản vào file, máy tính mã hóa từng ký tự thành bytes theo chuẩn UTF-8:

Ký tựUTF-8 BytesSố ByteHex
H72148
e101165
228, 189, 1603e4 bd a0
229, 165, 1893e5 a5 bd
🚀240, 159, 154, 1284f0 9f 9a 80

Quy luật chính:

  • Chữ cái tiếng Anh: 1 byte mỗi ký tự
  • Ký tự Trung/Nhật/Hàn (CJK): 3 bytes mỗi ký tự
  • Emoji: 4 bytes mỗi ký tự

Vậy đoạn "你好 Hello" được lưu thành 12 bytes:

code
你     好     [space]  H   e   l   l   o
e4 bd a0  e5 a5 bd  20  48  65  6c  6c  6f
(3 bytes) (3 bytes) (1) (1) (1) (1) (1) (1) = 12 bytes

Bytes là cách máy tính lưu trữ văn bản. Nhưng mô hình AI không đọc bytes trực tiếp.


Bốn Tầng Biểu Diễn: Bytes → Ký Tự → Từ → Tokens#

Có bốn cách để phân tách một đoạn văn bản. Mỗi tầng nhóm dữ liệu theo cách khác nhau:

Tầng"Hello, World"Số lượngMô tả
Bytes48 65 6c 6c 6f 2c 20 57 6f 72 6c 6412Đơn vị lưu trữ thô
Ký tựH e l l o , ␣ W o r l d12Chữ cái con người đọc được
TừHello, World2Phân tách theo khoảng trắng
TokensHello , World3Đơn vị AI thực sự xử lý

Cùng so sánh với tiếng Trung:

Tầng"你好世界"Số lượngMô tả
Bytese4 bd a0 e5 a5 bd e4 b8 96 e7 95 8c123 bytes mỗi ký tự
Ký tự你 好 世 界4Mỗi ký tự = 1 từ tiếng Trung
Từ你好 世界2Phân đoạn theo nghĩa
Tokens你好 世界2Phụ thuộc vào tokenizer

Four-level hierarchy showing how text is represented as bytes, characters, words, and tokens in AI systems

Điểm mấu chốt: tokens không phải bytes, không phải ký tự, cũng không phải từ. Chúng là một đơn vị trung gian — các đơn vị sub-word (dưới mức từ) cân bằng giữa kích thước bộ từ vựng và độ dài chuỗi.


Tại Sao Không Dùng Luôn Bytes hoặc Từ?#

Nếu bytes và từ đơn giản hơn, tại sao AI lại phát minh ra tokens? Bởi vì cả hai cực đều có vấn đề nghiêm trọng:

Vấn đề với bytes: chuỗi quá dài#

"Hello" là 5 bytes. Một bài blog 1.000 từ khoảng ~5.000 bytes. Một cuốn tiểu thuyết lên đến ~500.000 bytes.

Mô hình AI cần xử lý mối quan hệ giữa tất cả các vị trí trong chuỗi. Chi phí tính toán tăng theo bình phương độ dài chuỗi (O(n²) cho cơ chế attention). Gấp đôi độ dài chuỗi → chi phí tính toán tăng gấp 4 lần.

Dùng bytes thô sẽ khiến chuỗi dài hơn 3-4 lần so với cần thiết, làm mô hình AI chậm đến mức không khả thi.

Vấn đề với từ: bộ từ vựng bùng nổ#

Tiếng Anh có hơn 170.000 từ thông dụng. Thêm thuật ngữ chuyên ngành, tên riêng, URL, code, và các ngôn ngữ khác — bạn sẽ cần một bộ từ vựng hàng triệu phần tử.

Bộ từ vựng quá lớn đồng nghĩa:

  • Bảng embedding khổng lồ (tốn bộ nhớ)
  • Hầu hết từ hiếm gặp, nên mô hình hầu như không học được chúng
  • Bất kỳ từ nào ngoài bộ từ vựng đều hoàn toàn "vô hình" (vấn đề "OOV" — Out of Vocabulary)

Tokens: điểm cân bằng tối ưu#

Tokens tách văn bản thành các đơn vị sub-word — những mảnh lớn hơn byte nhưng nhỏ hơn từ:

code
"unbelievable" → ["un", "bel", "ievable"]    (3 tokens)
"tokenization" → ["Token", "ization"]         (2 tokens)
"Hello"        → ["Hello"]                    (1 token — đủ phổ biến để giữ nguyên)

Kết quả:

  • Chuỗi ngắn (xử lý hiệu quả)
  • Bộ từ vựng nhỏ (~100K-200K mục, không phải hàng triệu)
  • Không có từ lạ (bất kỳ văn bản nào cũng có thể tách thành các sub-word đã biết)

Cách Tokenization BPE Thực Sự Hoạt Động#

Hầu hết LLM hiện đại sử dụng một biến thể của Byte Pair Encoding (BPE) để xây dựng tokenizer. Đây là cách nó hoạt động:

Bước 1: Bắt đầu với từng ký tự riêng lẻ#

Lấy dữ liệu huấn luyện và tách mọi thứ thành ký tự đơn:

code
"low" → ["l", "o", "w"]
"lower" → ["l", "o", "w", "e", "r"]
"newest" → ["n", "e", "w", "e", "s", "t"]

Bước 2: Đếm cặp ký tự xuất hiện nhiều nhất#

Duyệt qua tất cả các cặp ký tự liền kề và tìm cặp phổ biến nhất:

code
("l", "o") xuất hiện 2 lần  ← phổ biến nhất
("o", "w") xuất hiện 2 lần
("e", "w") xuất hiện 1 lần
...

Bước 3: Gộp cặp phổ biến nhất#

Thay thế tất cả lần xuất hiện của ("l", "o") bằng token mới "lo":

code
"low" → ["lo", "w"]
"lower" → ["lo", "w", "e", "r"]

Bước 4: Lặp lại hàng nghìn lần#

Tiếp tục đếm và gộp cho đến khi đạt kích thước bộ từ vựng mục tiêu (thường 50K-200K tokens).

Sau nhiều lần gộp, các từ phổ biến như "the", "Hello", "you" trở thành token đơn lẻ, trong khi từ hiếm bị tách thành các mảnh sub-word.

Step-by-step visualization of BPE byte pair encoding tokenization process showing character splitting, frequency counting, and merging

Tự kiểm tra với tiktoken#

Bạn có thể kiểm tra chính xác cách GPT-5 tokenize bất kỳ đoạn văn bản nào bằng thư viện tiktoken của OpenAI:

python
import tiktoken

# o200k_base được dùng bởi GPT-4o và GPT-5
enc = tiktoken.get_encoding("o200k_base")

text = "你好 Hello"
tokens = enc.encode(text)
token_strings = [enc.decode([t]) for t in tokens]

print(f"Text: {text}")
print(f"UTF-8 bytes: {len(text.encode('utf-8'))}")
print(f"Tokens ({len(tokens)}): {token_strings}")
print(f"Token IDs: {tokens}")

Kết quả thực tế:#

code
Text: 你好 Hello
UTF-8 bytes: 12
Tokens (2): ['你好', ' Hello']
Token IDs: [177519, 32949]

12 bytes nén thành chỉ 2 tokens. Đó là sức mạnh của BPE — các cụm từ phổ biến được gán token riêng, giúp rút ngắn đáng kể độ dài chuỗi.


Mỗi Mô Hình, Mỗi Tokenizer Khác Nhau#

Mỗi dòng mô hình AI sử dụng tokenizer riêng với bộ từ vựng khác nhau. Cùng một đoạn văn bản có thể cho ra số token khác nhau:

Văn bảncl100k_base (GPT-4)o200k_base (GPT-4o/5)UTF-8 Bytes
Hello, how are you today?7725
Explain quantum computing in simple terms7641
你好,请用中文解释一下什么是token15947
こんにちは、トークンとは何ですか?121051
Python fibonacci function (5 lines)282892

Điểm nhấn: Tokenizer của GPT-5 (o200k_base) hiệu quả hơn đáng kể cho tiếng Trung và tiếng Nhật — cùng một câu tiếng Trung mà trên GPT-4 tốn 15 tokens, trên GPT-5 chỉ còn 9 tokens. Giảm 40% chi phí chỉ nhờ tokenizer tốt hơn.

Claude sử dụng tokenizer riêng, và Gemini dùng SentencePiece. Số token sẽ khác nhau giữa các nhà cung cấp — nghĩa là cùng một prompt có thể tốn chi phí khác nhau tùy bạn dùng mô hình nào.


Số Token Ảnh Hưởng Hóa Đơn Như Thế Nào#

API AI tính phí theo token, không phải theo byte hay từ. Và các ngôn ngữ khác nhau có hiệu suất token rất khác nhau:

Hiệu suất token theo ngôn ngữ (o200k_base)#

Ngôn ngữVăn bảnTokensBytesBytes/Token
Tiếng Anh"Hello, how are you today?"7253.6
Tiếng Trung"你好,今天怎么样?"5275.4
Tiếng Nhật"こんにちは"11515.0
Tiếng Hàn"안녕하세요"2157.5
Codedef fibonacci(n): (5 dòng)28923.3

Với tokenizer của GPT-5, tiếng Nhật thực ra là ngôn ngữ hiệu quả nhất về token — こんにちは nén 15 bytes vào chỉ một token duy nhất.

So sánh chi phí thực tế#

Giả sử bạn xử lý 1 triệu ký tự văn bản qua GPT-5 ($1.25/M input tokens):

Ngôn ngữ~Tokens / 1M ký tựChi phí
Tiếng Anh~330K$0.41
Tiếng Trung~500K$0.63
Hỗn hợp (EN+CN)~400K$0.50

Văn bản tiếng Trung tốn khoảng 50% hơn tiếng Anh cho cùng số ký tự — vì mỗi ký tự Trung trung bình chiếm nhiều token hơn.

Mẹo tối ưu: so sánh mô hình trước khi chọn#

Mỗi mô hình có tokenizer khác nhau, giá khác nhau, và khả năng khác nhau. Lựa chọn rẻ nhất cho use case của bạn có thể khiến bạn bất ngờ.

Với một API gateway thống nhất, bạn có thể test cùng một prompt trên nhiều mô hình và so sánh cả chất lượng lẫn chi phí:

python
from openai import OpenAI

client = OpenAI(
    api_key="your-crazyrouter-key",
    base_url="https://crazyrouter.com/v1"
)

# Test cùng prompt trên nhiều mô hình
for model in ["gpt-5", "gpt-5-mini", "deepseek-v3.2", "claude-sonnet-4"]:
    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "Explain tokenization in 2 sentences"}],
        max_tokens=100
    )
    usage = response.usage
    print(f"{model}: {usage.prompt_tokens} in / {usage.completion_tokens} out")

Với Crazyrouter, chỉ cần một API key là bạn truy cập được hơn 627 mô hình — giúp dễ dàng tìm mô hình hiệu quả nhất về chi phí cho ngôn ngữ và khối lượng công việc cụ thể của bạn.


Tương Lai: Mô Hình Byte-Level Có Thay Thế Tokens Không?#

Cuối năm 2024, Meta công bố nghiên cứu về Byte Latent Transformer (BLT) — một kiến trúc mô hình xử lý trực tiếp bytes thô, loại bỏ hoàn toàn tokenizer.

Tại sao mô hình byte-level đáng chú ý:#

  • Thực sự đa ngôn ngữ — không có thiên lệch tokenizer thiên về tiếng Anh
  • Không có vấn đề OOV — bất kỳ chuỗi byte nào cũng là đầu vào hợp lệ
  • Không có sai lệch tokenizer-model — mô hình nhìn thấy chính xác những gì bạn gõ

Tại sao tokens vẫn thống trị trong năm 2026:#

  • Chuỗi byte dài gấp 3-4 lần — tốn kém hơn nhiều để xử lý
  • Tất cả mô hình production (GPT-5, Claude, Gemini) vẫn dùng kiến trúc token-based
  • BLT vẫn đang ở giai đoạn nghiên cứu — chưa có sẵn dưới dạng API thương mại

Thực tế: tokens sẽ tiếp tục là tiêu chuẩn trong ít nhất 3-5 năm tới. Hiểu cách chúng hoạt động là kỹ năng cần thiết cho bất kỳ developer nào sử dụng API AI.


Tổng Kết Nhanh: Tokens vs Bytes vs Ký Tự vs Từ#

Thuộc tínhBytesKý tựTừTokens
Là gìĐơn vị lưu trữ thôKý hiệu con người đọcVăn bản tách theo khoảng trắngĐơn vị sub-word cho AI
Kích thướcLuôn 1 byte1-4 bytes (UTF-8)Thay đổiThay đổi
"Hello"5511
"你好"6211
"unbelievable"121213
Dùng bởiMáy tính (lưu trữ)Con người (đọc)Công cụ tìm kiếmMô hình AI
Tính phí AI?KhôngKhôngKhông

Các mối quan hệ chính:#

  • 1 token tiếng Anh ≈ 4 ký tự ≈ 4 bytes ≈ 0.75 từ
  • 1 token tiếng Trung ≈ 1-3 ký tự ≈ 3-9 bytes ≈ 1-2 từ
  • 1.000 tokens ≈ 750 từ tiếng Anh ≈ 4.000 ký tự

Công cụ tokenizer hữu ích:#


Câu Hỏi Thường Gặp#

Tokens có giống bytes không?#

Không. Bytes là đơn vị lưu trữ thô của máy tính (1 byte = 8 bits). Tokens là đơn vị đã được xử lý mà mô hình AI đọc. Đoạn "Hello" là 5 bytes nhưng 1 token. Đoạn "你好" là 6 bytes nhưng cũng chỉ 1 token. Mối quan hệ giữa bytes và tokens phụ thuộc vào ngôn ngữ và tokenizer cụ thể.

Tại sao mô hình AI không xử lý bytes thô luôn?#

Hiệu suất. "Hello" dưới dạng bytes là chuỗi có độ dài 5; dưới dạng token thì chỉ có độ dài 1. Với một bài viết 1.000 từ, xử lý byte-level sẽ tạo ra chuỗi dài gấp 3-4 lần. Vì chi phí tính toán của transformer attention là O(n²), điều này sẽ khiến mô hình AI đắt hơn và chậm hơn đáng kể.

Cùng đoạn văn bản thì số token có giống nhau trên mọi mô hình không?#

Không. GPT-5 dùng tokenizer o200k_base, GPT-4 dùng cl100k_base, và Claude có tokenizer riêng. Một câu tiếng Trung có thể là 15 tokens trên GPT-4 nhưng chỉ 9 tokens trên GPT-5. Điều này có nghĩa cùng một prompt có thể tốn chi phí khác nhau trên các mô hình khác nhau.

Tại sao văn bản tiếng Trung tốn hơn tiếng Anh khi gọi API AI?#

Hai lý do. Thứ nhất, mỗi ký tự Trung cần 3 bytes trong UTF-8 (so với 1 byte cho chữ cái tiếng Anh). Thứ hai, ngay cả với tokenizer hiện đại, ký tự Trung được nén thành token kém hiệu quả hơn. Một câu tiếng Trung thông thường tốn khoảng 50% token nhiều hơn so với câu tiếng Anh cùng ý nghĩa.

Làm sao để giảm chi phí token?#

Năm cách thực tế: (1) Viết prompt ngắn gọn — mỗi từ thừa đều tốn token. (2) Dùng max_tokens để giới hạn độ dài output. (3) Chọn mô hình rẻ nhất đáp ứng yêu cầu chất lượng. (4) Cache các truy vấn lặp lại. (5) Sử dụng API gateway như Crazyrouter để dễ dàng so sánh giá trên 627+ mô hình chỉ với một API key duy nhất.


Đọc Thêm#


Hiểu sự khác biệt giữa bytes và tokens là bước đầu tiên để kiểm soát chi phí AI. Để xem thêm các hướng dẫn dành cho developer và dữ liệu giá mô hình mới nhất, hãy truy cập Crazyrouter Blog.

Related Articles