Введение
Кодирование пары байтов (также известное как диграммовое кодирование) - алгоритм, впервые описанный в 1994 году Филиппом Гейджем для кодирования строчек текста в табличную форму для использования в нижневосточном моделировании. Его модификация примечательна как большой языковой модель токенайзер с возможностью объединять оба токены, которые кодируют одиночные символы (включая одиночные цифры или одиночные знаки препинания) и те, которые кодируют целые слова (даже самые длинные сложные слова). Эта модификация, на первом этапе, предполагает, что все уникальные символы являются начальным набором из 1 символа длиной n граммов (т.е. начальные "токены"). Затем последовательно наиболее часто встречающаяся пара соседних символов объединяется в новую длину n граммов, длиной 2 символа, и все экземпляры пары заменяются этим новым токеном. Это повторяется до тех пор, пока не будет получен словарный запас установленного размера. Обратите внимание, что новые слова всегда могут быть построены из окончательных токенов словарного запаса и начальных символов. Все уникальные токены, найденные в корпусе, перечислены в токенном словаре, размер которого, в случае GPT 3.5 и GPT 4, составляет 100256. Разница между модифицированным и оригинальным алгоритмом заключается в том, что оригинальный алгоритм не объединяет наиболее часто встречающиеся пары байтов данных, а заменяет их новым байтом, который не содержался в первоначальном наборе данных. Для восстановления исходного набора данных требуется таблица поиска замены. Алгоритм эффективен для токенования, потому что он имеет низкую вычислительную накладную и остается последовательным и надежным.
Byte pair encoding (also known as digram coding) is an algorithm, first described in 1994 by Philip Gage for encoding strings of text into tabular form for use in downstream modeling. Its modification is notable as the large language model tokenizer with an ability to combine both tokens that encode single characters (including single digits or single punctuation marks) and those that encode whole words (even the longest compound words). This modification, in the first step, assumes all unique characters to be an initial set of 1 character long n grams (i. e. initial "tokens"). Then, successively the most frequent pair of adjacent characters is merged into a new, 2 character long n gram and all instances of the pair are replaced by this new token. This is repeated until a vocabulary of prescribed size is obtained. Note that new words can always be constructed from final vocabulary tokens and initial set characters. All the unique tokens found in a corpus are listed in a token vocabulary, the size of which, in the case of GPT 3.5 and GPT 4, is 100256. The difference between the modified and the original algorithm is that the original algorithm does not merge the most frequent pair of bytes of data, but replaces them by a new byte that was not contained in the initial dataset. A lookup table of the replacements is required to rebuild the initial dataset. The algorithm is effective for tokenization because it has low computational overhead and remains consistent and reliable.
Оригинальный алгоритм
Оригинальный алгоритм работает путем итеративного замены наиболее распространенных последовательных последовательностей символов в целевом тексте на неиспользованные байты "местного знака". Итерация заканчивается, когда не удается найти последовательности, оставляя целевой текст эффективно сжатым. Декомпрессию можно выполнять путем обращения этого процесса, запроса известных терминах-местных знаков по их соответствующей обозначенной последовательности, используя таблицу поиска. В оригинале эта таблица поиска кодируется и хранится вместе с сжатым текстом.