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

Анализ крупных программных проектов, таких как 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. Подобная обработка кодовой базы позволяет получить представление об общей структуре проекта, но при этом метаданные, добавленные при подготовке, могут немного искажать итоговое количество токенов. Тем не менее, подобный подход дает общее понимание о размерах токенизированных проектов, пригодных для дальнейшей обработки нейросетями.


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

20854Как дешёвые Android-смартфоны превращаются в чужие прокси? 20853В Индии имя звонящего появится на экране вместе с номером 20852Как проверить готовность команды к звонку с клонированным голосом? 20851Уязвимости MarkLogic: делегированные права могли открыть путь к администраторскому... 20850Как GitHub закрыл лазейку, угрожавшую тысячам npm-пакетов? 20849Hirudo подменяет банковские приложения, чтобы обойти их защиту 20848Как Vghost превратил старую ошибку Linux в путь к root? 20847Уязвимости в PAN-OS и Cisco Secure Email Gateway уже используют атакующие 20846Как уязвимость GitLab могла открыть сервер для чужого кода? 20845Уязвимость SAP Cloud SDK могла отправить OAuth2-секреты злоумышленнику 20844Уязвимость в Nextcloud открыла путь к веб-оболочкам на серверах 20843Смогут ли малые ИИ-модели превратить бытовую технику в ботнет? 20842Пять уязвимостей NGINX: кому грозит риск и как закрыть его 20841Тайный диктофон в OpenAI: что утверждают следователи 20840Как проверять уязвимость входа, не заходя дальше дозволенного?
Ссылка