Code2LoRA:软件演化下超网络生成的代码语言模型适配器
Code2LoRA: Hypernetwork-Generated Adapters for Code Language Models under Software Evolution
摘要
代码语言模型需要存储库级上下文来解析导入、API 和项目约定。现有方法将这些知识作为长输入(通过 RAG 或依赖性分析检索)或通过每个存储库的 微调 和 LoRA 注入——在存储库规模上成本高昂,并且对于不断发展的代码库来说很脆弱。我们引入了 Code2LoRA,这是一个超网络框架,可生成特定于存储库的 LoRA 适配器,以零推理时间词元开销有效地注入存储库知识。 Code2LoRA支持两种使用场景:Code2LoRA-Static将单个存储库快照转换为适配器,适合稳定代码库的理解;而 Code2LoRA-Evo 则维护一个由 GRU 隐藏状态支持的适配器,该状态根据代码差异进行更新,适合不断发展的代码库的主动开发。为了根据参数高效的 微调 基线评估 Code2LoRA,我们构建了 RepoPeftBench,这是一个包含 604 个 Python 存储库的基准,具有两个轨道:一个包含 40K 训练和 12K 测试断言完成任务的静态轨道,以及一个包含 215K 提交衍生训练和 87K 提交衍生测试任务的演化轨道。在静态赛道上,Code2LoRA-Static 实现了 63.8% 的跨存储库和 66.2% 的存储库内精确匹配,匹配每个存储库的 LoRA 上限;在进化轨迹上,Code2LoRA-Evo 实现了 60.3% 的跨存储库精确匹配(比单个共享 LoRA 提高了 5.2 pp)。 Code2LoRA的代码可以在https://anonymous.4open.science/r/code2lora-6857找到;模型检查点和 RepoPeftBench 数据集可以在 https://huggingface.co/code2lora 找到。