Encode rồi decode: chỗ nào còn lossless, chỗ nào không?

Encode rồi decode: chỗ nào còn lossless, chỗ nào không? A sequence diagram generated by Archify. raw bytes, chưa đụng vào gì chuỗi đã chuẩn hoá — bước này có thể lossy input_ids — reversible ở tầng byte token ID sinh ra từng bước một text đọc được, ghép lại từ bytes Encode Sinh token Decode Văn bản gốc · bytes đúng như người gõ · Sequence participant Văn bản gốc bytes đúng như người gõ Normalizer · NFC/NFKC, case, whitespace · Sequence participant Normalizer NFC/NFKC, case, whitespace Tokenizer · BPE trên byte · Sequence participant Tokenizer BPE trên byte Transformer · logits trên |V| · Sequence participant Transformer logits trên |V| Detokenizer · IDs → bytes → text · Sequence participant Detokenizer IDs → bytes → text Legend request return security default message

Hai câu hỏi khác nhau về lossless

  • • Segmentation có reversible không? Với byte-level BPE thì thường có
  • • Toàn bộ pipeline có reversible với raw input không? Thường là không
  • • Cái làm mất thông tin nằm ở normalization, không ở bước cắt token

Token boundary không trùng ký tự UTF-8

  • • Một token đơn lẻ có thể chứa bytes chưa tạo thành ký tự hợp lệ
  • • Vì vậy API tách riêng decode bytes và decode ra text
  • • Ghép đủ các token lân cận thì chuỗi byte mới thành text đọc được

Decode của tokenizer không phải decoder của Transformer

  • • Detokenizer chỉ tra ngược IDs thành pieces rồi nối bytes lại
  • • Nó không chạy attention và không suy luận gì cả
  • • Hai chữ "decode" nằm ở hai tầng hoàn toàn khác nhau