Исследование и разработка метода эффективного представления проектного контекста для больших языковых моделей в задачах, применимых к исходным текстам на программных языках
Введение 3
Постановка задачи 4
1. Обзорный раздел по предметной области 5
1.1. Базовая модель 5
1.2. LoRA 5
1.3. Длинный контекст 6
1.4. Обзор литературы 8
2. Описание разработанного метода 10
2.1. Представление контекста 10
2.1.1 Полезный контекст 10
2.1.2 Рекурсивная генерация 11
2.2. Дообучение модели 13
2.2.1 Использование реальной документации 13
2.2.2 Использование синтетических данных 15
2.2.3 Чистка данных 16
2.3. Метрики 18
3. Результаты 21
Заключение 22
Список литературы 23
Современные большие языковые модели демонстрируют возможность качественно выполнять большое количество различных задач, связанных с обработкой текстов, которые до этого невозможно было автоматизировать. В том числе они способны выполнять задачи, связанные с исходным кодом, такие как: генерация кода, исправление ошибок в коде, генерация тестов, генерация документации. На данный момент стандартный способ использовать модели для таких задач - это передать им минимальное количество информации, необходимое для понимания, что требуется от модели.
Очевидно, что можно получить более точные ответы, если также передавать модели информацию о контексте проекта, в рамках которого выполняется задача. Например, при написании кода новой функции, можно сообщить, какие ещё функции существуют в проекте, чтобы у модели была возможность вызывать их. Однако просто передавать исходный код всего проекта в промпт модели либо неэффективно, либо вовсе невозможно, поэтому необходимо каким-то образом сжать эту информацию. Данная работа посвящена решению этой проблемы.
В рамках данной работы был разработан метод эффективного представления проектного контекста в задаче автоматической генерации документации. Также был найден способ дообучить базовую модель, чтобы модель смогла правильно использовать переданный в промпт контекст. Наконец, для измерения качества модели был разработан новый набор метрик, хорошо отражающий человеческие предпочтения.
Для тестирования разработанного метода были дообучены две модели двумя разными способами. Обученные модели были сравнены с базовой моделью, для которой был подобран хороший промпт. Полученные метрики показывают, что модель, дообученная с помощью синтетики, генерирует более полные и менее тривиальные описания, и при этом не проигрывает базовой модели по количеству галлюцинаций и практически не проигрывает по количеству фактических ошибок.
Разработанный метод показывает хорошие результаты для выбранной задачи и базовой модели. Предполагается, что этот метод можно перенести на похожие задачи и на более большие модели с похожей архитектурой. Для того, чтобы выяснить, насколько этот метод возможно обобщить, требуется провести дополнительные исследования.
[1] Baptiste Roziere, Jonas Gehring, Fabian Gloeckle, Sten Sootla, Itai Gat, et al. «Code Llama: Open Foundation Models for Code». 2023. URL: https: //doi.org/10.48550/arXiv.2308.12950
[2] Hugo Touvron, Louis Martin, Kevin Stone, Peter Albert, Amjad Almahairi, et al. «Llama 2: Open Foundation and Fine-Tuned Chat Models». 2023. URL: https://doi.org/10.48550/arXiv.2307.09288
[3] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. «Attention Is All You Need». 2017. URL: https://doi.org/10.48550/arXiv.1706.03762
[4] Dan Hendrycks, Collin Burns, Saurav Kadavath, Akul Arora, Steven Basart, Eric Tang, Dawn Song, Jacob Steinhardt. «Measuring Mathematical Problem Solving With the MATH Dataset». 2021. URL: https://doi.org/10.48550/ arXiv.2103.03874
[5] Dan Hendrycks, Collin Burns, Steven Basart, Andy Zou, Mantas Mazeika, Dawn Song, Jacob Steinhardt. «Measuring Massive Multitask Language Understanding». 2020. URL: https://doi.org/10.48550/ arXiv.2009.03300
[6] Wanjun Zhong, Ruixiang Cui, Yiduo Guo, Yaobo Liang, Shuai Lu, Yanlin Wang, Amin Saied, Weizhu Chen, Nan Duan. «AGIEval: A Human-Centric Benchmark for Evaluating Foundation Models». 2023. URL: https:// doi.org/10.48550/arXiv.2304.06364
[7] Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen, et al. «Evaluating Large Language Models Trained on Code». 2021. URL: https://doi.org/10.48550/ arXiv.2107.03374
[8] Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan, Henrique Ponde de Oliveira Pinto. «LoRA: Low-Rank Adaptation of Large Language Models». 2021. URL: https://doi.org/10.48550/arXiv.2106.09685
[9] OpenAI, Josh Achiam, Steven Adler, Sandhini Agarwal, Lama Ahmad, et al. «GPT-4 Technical Report». 2005. URL: https://aclanthology.org/W05- 0909.pdf
[10] Gemini Team Google: Machel Reid, Nikolay Savinov, Denis Teplyashin, Dmitry Lepikhin, Timothy Lillicrap, et al. «Gemini 1.5: Unlocking multimodal understanding across millions of tokens of context». 2024. URL: https: //doi.org/10.48550/arXiv.2403.05530
[11] Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, et al. «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks». 2020. URL: https://doi.org/10.48550/arXiv.2005.11401
[12] Hao Liu, Matei Zaharia, Pieter Abbeel. «Ring Attention with Blockwise Transformers for Near-Infinite Context». 2023. URL: https://doi.org/ 10.48550/arXiv.2310.01889
[13] Aakash Bansal, Chia-Yi Su, Collin McMillan. «Revisiting File Context for Source Code Summarization». 2023. URL: https://doi.org/10.48550/ arXiv.2309.02326
[14] Changan Niu, Chuanyi Li, Vincent Ng, Dongxiao Chen, Jidong Ge, Bin Luo. «An Empirical Comparison of Pre-Trained Models of Source Code». 2023. URL: https://doi.org/10.48550/arXiv.2302.04026
[15] Paheli Bhattacharya, Manojit Chakraborty, Kartheek N S N Palepu, Vikas Pandey, Ishan Dindorkar, Rakesh Rajpurohit, Rishabh Gupta. «Exploring Large Language Models for Code Explanation». 2023. URL: https:// doi.org/10.48550/arXiv.2310.16673
[16] Mingyang Geng, Shangwen Wang, Dezun Dong, Haotian Wang, Ge Li, Zhi Jin, Xiaoguang Mao, Xiangke Liao. «Large Language Models are Few-Shot Summarizers: Multi-Intent Comment Generation via In-Context Learning». 2023. URL: https://doi.org/10.48550/arXiv.2304.11384
[17] Ramakrishna Bairi, Atharv Sonwane, Aditya Kanade, Vageesh D C, Arun Iyer, Suresh Parthasarathy, Sriram Rajamani, B. Ashok, Shashank Shet. «CodePlan: Repository-level Coding using LLMs and Planning». 2023. URL: https://doi.org/10.48550/arXiv.2309.12499
[18] Disha Shrivastava, Denis Kocetkov, Harm de Vries, Dzmitry Bahdanau, Torsten Scholak. «RepoFusion: Training Code Models to Understand Your Repository». 2023. URL: https://doi.org/10.48550/arXiv.2306.10998
[19] Jeff Wu, Long Ouyang, Daniel M. Ziegler, Nisan Stiennon, Ryan Lowe, Jan Leike, Paul Christiano. «Recursively Summarizing Books with Human Feedback». 2021. URL: https://doi.org/10.48550/arXiv.2109.10862
[20] Kishore Papineni, Salim Roukos, Todd Ward, Wei-Jing Zhu. «BLEU: a Method for Automatic Evaluation of Machine Translation». 2002. URL: https://aclanthology.org/P02- 1040.pdf
[21] Chin-Yew Lin. «ROUGE: A Package for Automatic Evaluation of Summaries». 2004. URL: https://aclanthology.org/W04-1013.pdf
[22] Satanjeev Banerjee, Alon Lavie. «METEOR: An Automatic Metric for MT Evaluation with Improved Correlation with Human Judgments». 2005. URL: https://aclanthology.org/W05-0909.pdf
[23] Antonio Mastropaolo, Matteo Ciniselli, Massimiliano Di Penta, Gabriele Bavota. «Evaluating Code Summarization Techniques: A New Metric and an Empirical Characterization». 2023. URL: https://doi.org/10.48550/ arXiv.2312.15475
Содержание бакалаврской работы - Исследование и разработка метода эффективного представления проектного контекста для больших языковых моделей в задачах, применимых к исходным текстам на программных языках
Выдержки из бакалаврской работы - Исследование и разработка метода эффективного представления проектного контекста для больших языковых моделей в задачах, применимых к исходным текстам на программных языках