仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注!
所以,我会给出一些我个人认为工作中很常用,但却“没有技术含量”的一些基本功(刷面经的同学可以不用看了哈,我推荐的基本功面试官不会考的)。
在开源社区,llama的网络结构已经一统江湖了,那也就是说modeling_llama. py理论上可以load起来任何一个开源模型。
OK,请自行完成以下脚本,使得我们可以用modeling_llama. py加载任何一个其他开源模型。
trans_qwen_to_llama. py
trans_llama_to_qwen. py
……
完成这些工作,你会理解每个开源模型的独特之处,比如,qwen2的q、k、v的线性变换是有bias的,baichuan的lm_head之前有一个normalize()的操作,甚至每个开源模型你都能观察到一些attention的魔改。再然后,对着他们的论文去找,为什么他们的作者要做这些改动?能不能从这个过程中学到知识就看各自悟性了。
进阶篇:
trans_llama_to_megatron. py(给定参数tp和pp)
trans_megatron_to_llama. py
即然我们已经可以万物转llama了,那为什么我还一定要使用modeling_llama. py呢?毕竟:
modeling_llama. py在加载模型的时候没有skip_build;
modeling_llama. py缺少stream_generate;
modeling_llama. py文件不支持sequence_parallel;
modeling_llama. py默认使用flash_attention;
modeling_llama. py并没有一个可以作为reward_model的lm_head;
……
这样,当市面上出现任何一个新的开源模型,我们就都可以通过“trans_newModel_to_myModel. py”,快速的对该模型进行微调操作,而不用修改任何训练代码。
进阶篇:
我们还可以给自己的modeling文件加入很多有趣的东西来助力日常的debug,比如:
defshow_cos_distance(self,layer):输出某个layer的input_hidden_states和output_hidden_states的余弦距离;
defshow_topk_token(self,layer,K=10):输出用某个layer去预测nexttoken时的最大K个token;
defshow_attention(self,layer,tokenA,tokenB):输出第layer层的某两个token之间的attention_value。
model. generate()我们都再熟悉不过了。在不考虑推理加速等技术时,一个客观事实是:“8卡load1个模型、开大batch_size”的推理速度,远远小于“8卡load8个模型、开小batch_size”的推理速度。
进阶篇:
单机的并行推理已经实现了,不妨试试多机的;
学会用vllm等更快的推理框架,而不是model. generate()。
4. ChannelLoss
在介绍领域模型post-pretrain的时候,我说过一句话:做domainpost-pretrain不看channelloss,你不如别开tensorboard。
基本大部分情况下,post-pretrain的loss曲线都呈“缓慢下降”或“持平”的变化趋势,sft的loss曲线都呈“快速下降”且“阶梯状”的变化趋势,这个时候除了初始loss和最终loss是否符合预期外,我们能从中得到的信息微乎其微。因此,把数据划分成不同的数据源,对每个数据源的loss曲线单独观察,就显得尤为有意义,这也是研究跷跷板问题的必要环节。
题目来了:改进训练代码,给自己的sft数据随机赋予一个channel,然后在训练过程中绘制出每个channel的loss曲线。
tips:考虑通过all_gather_object实现。
进阶篇:
megatron由于有tp和pp存在,实现起来难度远大于deepspeed;
model. trainer()的训练方式封装的很死,如何加入channel_loss呢?
先列出这些吧,这些基本功可能对求职没有任何帮助,但拿来优化开发效率应该蛮好用的!此外,以上提到的所有程序ChatGPT都会写(不包括进阶篇,进阶篇有些我也没调通过),不会的话就问问Chat老师。
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。
收藏,分享、在看,给个三连击呗!