BPE (Mã hóa cặp byte)

Thuật toán phân tách văn bản thành các đơn vị subword dựa trên tần suất xuất hiện của các cặp byte (ký tự). Được sử dụng rộng rãi làm tokenizer cho các mô hình ngôn ngữ lớn như GPT và BERT.

BPE (Byte Pair Encoding - Mã hóa cặp byte) ban đầu được Philip Gage đề xuất năm 1994 như một thuật toán nén dữ liệu. Năm 2016, Sennrich và cộng sự ứng dụng BPE vào phân tách subword cho dịch máy, và từ đó nó trở thành phương pháp tokenization tiêu chuẩn trong xử lý ngôn ngữ tự nhiên. Hầu hết các mô hình ngôn ngữ lớn hiện nay như GPT, BERT, LLaMA đều sử dụng BPE hoặc biến thể của nó.

Thuật toán học của BPE khá trực quan. Đầu tiên, văn bản huấn luyện được tách thành các ký tự (hoặc byte) đơn lẻ. Sau đó, tìm cặp ký tự liền kề xuất hiện thường xuyên nhất và gộp chúng thành một token mới. Quá trình gộp lặp lại cho đến khi đạt kích thước từ vựng mục tiêu. Ví dụ, từ "low", "lower", "lowest", các cặp "l"+"o" → "lo", "lo"+"w" → "low" được gộp tuần tự theo tần suất.

Điểm mạnh của BPE là giải quyết vấn đề từ ngoài từ vựng (out-of-vocabulary). Tokenization theo đơn vị từ không thể xử lý từ không có trong dữ liệu huấn luyện. BPE biểu diễn bất kỳ từ nào bằng tổ hợp subword, nên không bao giờ gặp từ lạ. Ví dụ, "unhappiness" được tách thành "un" + "happiness" hoặc "un" + "happ" + "iness", mỗi subword đều có trong từ vựng.

Tiếng Việt có đặc điểm thuận lợi cho BPE nhờ cấu trúc âm tiết rõ ràng với khoảng trắng phân cách. Mỗi âm tiết tiếng Việt (ví dụ: "nguyễn", "phương", "trình") thường trở thành một token riêng biệt. Tuy nhiên, các dấu thanh và dấu phụ tạo ra nhiều biến thể ký tự (ă, â, ê, ô, ơ, ư cùng 5 dấu thanh), khiến từ vựng BPE cho tiếng Việt cần kích thước lớn hơn so với tiếng Anh để đạt hiệu quả tương đương. Với GPT-4 (cl100k_base), một âm tiết tiếng Việt có dấu thường tiêu tốn 1-2 token.

Tỷ lệ token/ký tự khác nhau đáng kể giữa các ngôn ngữ. Tiếng Anh trung bình 1 token ≈ 4 ký tự, tiếng Nhật 1 token ≈ 1-2 ký tự, còn tiếng Việt khoảng 1 token ≈ 2-4 ký tự. Giới hạn 128.000 token của GPT-4 tương đương khoảng 500.000 ký tự tiếng Anh, nhưng chỉ khoảng 300.000-400.000 ký tự tiếng Việt. Sự chênh lệch này ảnh hưởng trực tiếp đến chi phí sử dụng API và thiết kế prompt.

Trong thời đại AI, cần quan tâm đến cả "số ký tự" lẫn "số token". Khi thiết kế prompt cho ChatGPT, số token là yếu tố giới hạn chứ không phải số ký tự. Để diễn đạt cùng ý nghĩa với ít token hơn, cần tránh biểu đạt dư thừa và viết câu có mật độ thông tin cao. Hiểu cơ chế BPE giúp dự đoán được cách diễn đạt nào tiết kiệm token hơn.

Chia sẻ bài viết này