最近在搞一个私有代码库的补全助手,选了大杯的LLaMA-2-7B做base,用LoRA(r=8, alpha=16)在大概5万条仓库内代码片段上微调。训练loss降得挺漂亮,但实际生成时,补全的代码经常语法错误,甚至不匹配上下文,感觉比原版模型还笨。
我怀疑是不是数据清洗太糙(直接按文件切块,没做去重和格式化),或者超参没调好(learning rate试过2e-4和1e-4,epoch就跑了2轮)。有没有大佬指点下,这种场景是应该先换更好的base模型(比如CodeLlama),还是先优化数据构造?另外,LoRA的target_modules只改了q和v,是不是太保守了?求个实战经验,谢过。