Индекс — адрес, а не смысл
Vocabulary задаёт отображение token↔ID. Для размераV допустимы целые IDs от0доV−1. Номер используется для выбора строки embedding matrix; арифметическое расстояние между IDs не является семантическим расстоянием.
В нашем byte-BPE исходный словарь содержит все256байт. ID97 соответствует байту ASCII a, ID98 — b, ID32 — пробелу. ID0 здесь означает байт0, не padding и не unknown. Специальные BOS/EOS токены потребовали бы отдельного контракта; сейчас их нет.
После merge новый token хранит последовательность байт родителей и получает новый ID. Байтовая последовательность одного token не обязана быть законченной UTF-8 строкой. Например, один байт многобайтной буквы нельзя честно назвать отдельным символом. Inspector показывает hex и текст только там, где отдельное декодирование допустимо.
Эксперимент. Найдите исходные bytes кириллической буквы в таблице. Затем включите merges и найдите token, содержащий несколько bytes. Важно различать размер словаря, количество токенов конкретного текста и число уникальных токенов, встретившихся в нём.
Граница. Полное покрытие256байт позволяет кодировать новые корректные Unicode-строки без <unk>, но не означает, что модель умеет их понимать. Embedding для редкой byte-комбинации может быть плохо обучен. Tokenizer и нейросеть — связанные, но разные части системы.