Оценка размера токенов в кодовых базах крупных проектов

Анализ крупных программных проектов, таких как MySQL, VS Code, Blender, Linux и LLVM, показывает значительные различия в количестве токенов, необходимых для их представления в моделях LLM. Использовался подход, который включает в себя объединение всех исходных файлов в единый текстовый файл, с предварительной генерацией дерева директорий, где каждый файл выделяется в формате markdown. Подготовку кодовой базы проводили с помощью многопоточной программы на C++, а подсчёт токенов выполнялся с использованием токенизатора Tiktoken от OpenAI, применяемого в моделях GPT-4o.
Оценка размера токенов в кодовых базах крупных проектов
Изображение носит иллюстративный характер

Структура объединенного файла состоит из дерева директорий, далее содержимого всех файлов, при этом в начале и в конце каждого файла добавляется имя файла и три обратных кавычки (`). Этот подход добавляет «шум» в виде метаданных, но даёт общее представление о кодовой базе. Программа на C++ также выполняет примитивный подсчет «слов», который дает значительно меньшее количество, чем количество токенов, подсчитанное Tiktoken. Важно отметить, что удаление каталогов.git и других подобных каталогов перед обработкой, как правило, должно проводиться, но не является обязательным условием. Программа на C++ для подготовки кодовой базы может быть использована на Unix и Windows системах.

Реализация подготовки кодовой базы, включая скачивание и распаковку, занимает несколько минут. Итоговые числа токенов варьируются от десятков миллионов до более чем шестисот миллионов, в зависимости от размера проекта. Так, MySQL насчитывает 242 миллиона токенов, VS Code – 31 миллион, Blender – 82 миллиона, ядро Linux – 456 миллионов, а LLVM – 631 миллион токенов.

Полученные результаты показывают масштаб кодовых баз, представляющих интерес для анализа с использованием LLM. Подобная обработка кодовой базы позволяет получить представление об общей структуре проекта, но при этом метаданные, добавленные при подготовке, могут немного искажать итоговое количество токенов. Тем не менее, подобный подход дает общее понимание о размерах токенизированных проектов, пригодных для дальнейшей обработки нейросетями.


Новое на сайте

19209Как беспрецедентный бунт чернокожих женщин в суде Бостона разрушил планы рабовладельцев? 19208Как новые поколения троянов удаленного доступа захватывают системы ради кибершпионажа и... 19207Почему мировые киберпреступники захватили рекламные сети, и как Meta вместе с властями... 19206Как фальшивый пакет StripeApi.Net в NuGet Gallery незаметно похищал финансовые API-токены... 19205Зачем неизвестная группировка UAT-10027 внедряет бэкдор Dohdoor в системы образования и... 19204Ритуальный предсвадебный плач как форма протеста в традиционном Китае 19203Невидимая угроза в оперативной памяти: масштабная атака северокорейских хакеров на... 19202Как уязвимость нулевого дня в Cisco SD-WAN позволяет хакерам незаметно захватывать... 19201Как Google разрушил глобальную шпионскую сеть UNC2814, охватившую правительства 70 стран... 19200Как простое открытие репозитория в Claude Code позволяет хакерам получить полный контроль... 19199Зачем киберсиндикат SLH платит женщинам до 1000 долларов за один телефонный звонок в... 19198Устранение слепых зон SOC: переход к доказательной сортировке угроз для защиты бизнеса 19197Скрытые бэкдоры в цепочках поставок по: атаки через вредоносные пакеты NuGet и npm
Ссылка