ai-223Đọc toàn bộ đề miễn phí

Đ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ữ:

AICơ bản30 phút

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ủ đề

compression-ratiobytes-per-tokentokenizer-evaluationnlp-metrics

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ểu dict[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ế.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.