暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

莫要陷在自己的思维里

白鳝的洞穴 2023-06-02
417
思维陷阱是做技术的大忌,能力不足大不了做起事情来效率不高,工作成果不显。而如果陷入了思维陷阱,那就麻烦了。不过人都是会有执念的,在有意见不一致的时候,往往会更相信自己,于是就会有争论或者争议。有争论或者争议并不怕,只要讲道理,总是能讲明白的。不过很多事情很难用道理就能分得清楚,因为很多条道路最后都能到达终点,到底哪条更好,可能当前也看不清楚。所以我虽然也经常与人争论,但是不会陷入长时间的争吵。有些问题,停止争论,自己仔细想想,对错的问题就能想得比较清楚了。从泡ITPUB时代开始,我就这个性格,不大在网上和别人打嘴仗。绝大多数时候,辩论出你更对一点实际上并无意义,大多数时候遇到争议多自己想想比舌战群儒收获更大一些。
不过在很多时候跳出自己的思维陷阱里并不容易,特别是我们对某种知识知之甚少,或者认知不足的时候,这时候特别容易偏执,而偏执的结果往往是在错误里越走越远。前阵子在训练领域大模型的时候,我直接使用了别人开源的Ptuning代码,因此在调参时不过是根据自己的样本数量调整LR,PRE_SEQ_LEN、gradient_accumulation_steps、max_steps等参数。当时并不了解此类训练EPOCH与训练效果之间的关系,因此当一个朋友和我讨论参数的时候,我总是陷在这些参数里,而朋友则不断地建议我观察EPOCH,并根据EPOCH与LOSS来判断训练的有效性。于是我陷在我的思维里,他陷在他的模式里,最终也没讨论出个所以然来。最近我的训练样本集达到了数万规模,开始做一些实用性的训练测试了,我才发现为每次训练预估一个能达到效果的EPOCH是如此的重要。明白了这一点,做事情的效率就高了很多。
最近经常有朋友聊起PTUNING的优缺点,优点是专业化的知识比较容易成为模型中的优势部分,领域应用效果很好,但是模型容易训练傻了,专业知识问答还不错,但是其他方面的能力下降很厉害。Finetune则不容易出现这个问题,不过Finetune的效果被原有模型消减的很厉害。如何在模型训练时只要好处,不要害处,这一点十分让人头疼。在这个逻辑怪圈里,我无法跳出来。
前阵子我折腾DB-GPT的时候,突然发现开发者在一个系统里整合了多个模型,分别用于解决不同的问题,我突然有种醍醐灌顶的感觉。我为什么要费那么大的劲去训练一个全能的大模型。互联网上的大模型因为运营的需要,才需要他既能够这样又能够那样,还要不发呆。而为了解决领域问题的“小“大模型,可以单机单卡部署的模型,为什么不能做成多个专门为某个专业任务训练的”傻模型“呢?跳出这个思维陷阱,一些事情就变得简单了。
         
本周三上海的朱教授到南京,我们在一起闲聊了几个小时,我谈起这个想法,他觉得应该是可以落地的。训练废掉的模型,既然不适合聊天,只能做专业领域知识问答,那么我为什么不用没有微调过的模型去做CHAT,而用这个废物去应答专业知识呢?有时候跳出固有的思维定式,很多事情就简单多了。
记得前些年运维Oracle数据库的时候遇到一个NUMA导致的问题,客户的CPU核数很多,关闭NUMA,某些任务会变慢,开了NUMA,又会经常出现资源耗尽,数据库宕机,他也陷入两难中无法权衡。后来他发现开了NUMA后最容易耗尽的是匿名网络端口,而每个会话在NUMA下都会消耗多个网络端口号。因此他选择了限制会话数。但是限制会话数有时候又会让应用的数据库连接池不够用。不过为了解决宕机问题,他只能做这个选择。
我就问他为啥非要限制会话数而不考虑不增加几千个网络端口号给Oracle 使用,难道你们的网络端口限制必须如此死吗?他仔细一想,也对,网络端口申请一下就行了,公司没理由不批准。于是这个问题就迎刃而解了。
实际上解决一个问题,可能会有很多种方法,而陷在自己的思维惯性里是十分可怕的。有些问题,稍微听一听别人的建议,或者多发散一下思维,实际上并不是很难解决的。

文章转载自白鳝的洞穴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论