Đo lường chất lượng bộ Tokenizer (Compression Ratio & Bytes Per Token)
Hai chỉ số hàng đầu để đánh giá hiệu quả của một bộ tokenizer trên tập dữ liệu ngôn ngữ:
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: character-level-tokenizer-vocab.
Nội dung đề bài
Mô tả bài toán
Hai chỉ số hàng đầu để đánh giá hiệu quả của một bộ tokenizer trên tập dữ liệu ngôn ngữ:
- Hệ số nén (Compression Ratio):
Compression Ratio = Tổng số ký tự văn bản thô (Characters)Tổng số tokens sau khi encode
- Số byte trên mỗi token (Bytes per Token - BPT):
BPT = Tổng số byte UTF-8 của văn bản thô (Bytes)Tổng số tokens sau khi encode
Hệ số nén càng cao nghĩa là tokenizer biểu diễn cùng một lượng thông tin bằng ít token hơn, giúp tăng độ dài ngữ cảnh thực tế của mô hình và giảm chi phí suy luận (Inference latency & API cost).
Hãy viết hàm evaluate_tokenizer_metrics(encode_fn: Callable[[str], list[int]], corpus: list[str]) -> dict[str, float]:
encode_fn: hàm nhận một chuỗi văn bản và trả về danh sách token IDs.corpus: danh sách các chuỗi văn bản đánh giá.- Nếu tổng số token sinh ra bằng 0, trả về:
{"total_chars": 0.0, "total_bytes": 0.0, "total_tokens": 0.0, "compression_ratio": 0.0, "bytes_per_token": 0.0}.
- Trả về dictionary với 5 thông số trên (kiểu
float).
Input
- Hàm
evaluate_tokenizer_metrics(encode_fn,corpus): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
evaluate_tokenizer_metrics: Trả về kết quả kiểudict[str, float]theo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 6000ms.
- Giới hạn bộ nhớ: 512MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
def dummy_encode(text):
return [1, 2]
metrics = evaluate_tokenizer_metrics(dummy_encode, ['hello world'])Output
{
'total_chars': 11,
'total_bytes': 11,
'total_tokens': 2,
'compression_ratio': 5.5,
'bytes_per_token': 5.5
}Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
text = 'Việt'
raw_bytes = len(text.encode('utf-8'))
metrics = evaluate_tokenizer_metrics(lambda s: [1], [text])Output
{
'total_chars': 4,
'total_bytes': 6,
'total_tokens': 1,
'compression_ratio': 4,
'bytes_per_token': 6
}Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
