Анализ крупных программных проектов, таких как MySQL, VS Code, Blender, Linux и LLVM, показывает значительные различия в количестве токенов, необходимых для их представления в моделях LLM. Использовался подход, который включает в себя объединение всех исходных файлов в единый текстовый файл, с предварительной генерацией дерева директорий, где каждый файл выделяется в формате markdown. Подготовку кодовой базы проводили с помощью многопоточной программы на C++, а подсчёт токенов выполнялся с использованием токенизатора Tiktoken от OpenAI, применяемого в моделях GPT-4o.
Структура объединенного файла состоит из дерева директорий, далее содержимого всех файлов, при этом в начале и в конце каждого файла добавляется имя файла и три обратных кавычки (
Реализация подготовки кодовой базы, включая скачивание и распаковку, занимает несколько минут. Итоговые числа токенов варьируются от десятков миллионов до более чем шестисот миллионов, в зависимости от размера проекта. Так, MySQL насчитывает 242 миллиона токенов, VS Code – 31 миллион, Blender – 82 миллиона, ядро Linux – 456 миллионов, а LLVM – 631 миллион токенов.
Полученные результаты показывают масштаб кодовых баз, представляющих интерес для анализа с использованием LLM. Подобная обработка кодовой базы позволяет получить представление об общей структуре проекта, но при этом метаданные, добавленные при подготовке, могут немного искажать итоговое количество токенов. Тем не менее, подобный подход дает общее понимание о размерах токенизированных проектов, пригодных для дальнейшей обработки нейросетями.
Изображение носит иллюстративный характер
Структура объединенного файла состоит из дерева директорий, далее содержимого всех файлов, при этом в начале и в конце каждого файла добавляется имя файла и три обратных кавычки (
`). Этот подход добавляет «шум» в виде метаданных, но даёт общее представление о кодовой базе. Программа на C++ также выполняет примитивный подсчет «слов», который дает значительно меньшее количество, чем количество токенов, подсчитанное Tiktoken. Важно отметить, что удаление каталогов.git и других подобных каталогов перед обработкой, как правило, должно проводиться, но не является обязательным условием. Программа на C++ для подготовки кодовой базы может быть использована на Unix и Windows системах. Реализация подготовки кодовой базы, включая скачивание и распаковку, занимает несколько минут. Итоговые числа токенов варьируются от десятков миллионов до более чем шестисот миллионов, в зависимости от размера проекта. Так, MySQL насчитывает 242 миллиона токенов, VS Code – 31 миллион, Blender – 82 миллиона, ядро Linux – 456 миллионов, а LLVM – 631 миллион токенов.
Полученные результаты показывают масштаб кодовых баз, представляющих интерес для анализа с использованием LLM. Подобная обработка кодовой базы позволяет получить представление об общей структуре проекта, но при этом метаданные, добавленные при подготовке, могут немного искажать итоговое количество токенов. Тем не менее, подобный подход дает общее понимание о размерах токенизированных проектов, пригодных для дальнейшей обработки нейросетями.