给定一个LLM (base model/sft model), 我现在要进行SFT, 我应该怎么准备数据, 能让使用者满意.
用什么model / 如何进行SFT / 数据来源和组织是什么 / 如何定义使用者满意.
从以下3个里面选,其他的模型不用考虑了。
https://arxiv.org/pdf/2502.06215
如何判断一个model到底处于什么能力阶段
基于benchmark的判断方法. 这里不要看官方的report number, 而是自己用社区常用的default prompt template进行humaneval 和mbpp上的测试. 如果你发现(1) llm的base和instruct版本对于prompt都及其敏感(超过10%的误差), [例如CodeLlama系列] (2) LLM的绝对数值偏低(Humaneval低于25, mbpp低于50) [例如Llama系列], 那么此时我的建议是直接跑路,不要在上面做SFT或者reasoning的实验.不然后续有意外之喜.
基于SFT training的判断方法. 某些非code models的instruct version效果非常好(接近80的humaneval), 但是一训练就崩, 此时可以直接跑路.
Internal clustering方法. 这里可以采用[1]中Figure5类似的方法,笔者自建了不同function的code pairs, 如果完全无法进行区分, 那么可以跑路.
4. 快速调入局部最优陷进的速度的方法. 混合了codeexercise和其超长扩展版本, 如果SFT过程中LLM快速收敛且3epoch后期就装死, 那么可以认为其本身能力有偏差.
如何选择模型的version和大小(本节主要针对资源有限的高校研究者)
一般而言, 开源model 会提供1B~70B+的一系列model, 笔者了解到大部分研究者能接触到的仍旧是3090/4090/A100 , 因此, 7B左右的model是最合适的