没算力,能搞大模型吗?

今年应届大模型算法年包一个比一个高,某书某节应届生开七八十万的好像一抓一大把,但是一看JD:有大模型预训练经验,有万卡集群调度经验,发表顶会论文对于我们这种没有大厂实习,没进强组的小卡拉米来说,基本上都是不可能满足的条件。

所以,没显卡的穷孩子真的不能靠大模型算法翻身吗?

关于这个问题,实际上也要看“大模型”的几个具体方向(虽然都叫大模型算法or大模型应用),按照对硬件资源需求的程度从低到高排序大概是这样:

Prompt工程 ≈ Agent 开发 < RAG < LoRA等高效微调 < 全参数后训练(微调) < 预训练

这么看其实很明了了,那些对资源要求极高的JD,基本上也只针对基座模型预训练这一个岗位。

所以,这些乱七八糟的方向平时都在干啥?如果想做大模型应用/算法(这俩很多厂其实区分也不是很明确),得准备点啥呢?我们从资源需求从低到高开始讲吧。

1.prompt工程/提示词工程:仅通过修改提示词,提高大模型输出内容的质量。

听上去可能不那么好理解,举个栗子:

你说“这是我的代码,[一大段粘贴的代码],帮我实现xx功能 ”,大模型可能会自己一顿分析,最后省略了一些代码,你复制过去一跑报错了,或者把你原先定义好的函数名给改了(这个大家应该都很熟吧...)

但如果你说“这是我的代码,[一大段粘贴的代码],请你先分析我现有的代码结构,然后选择合适的位置,帮我实现xx功能,要求将代码封装好,不要全部放在main里面,不要修改我已有的代码,不要新建额外的脚本,不要省略中间的内容 ,给我完整可运行的脚本”,这样你得到的大概率是可以直接cv跑起来的代码 ——这就是一个简单的提示词工程的示例。

总而言之,提示词工程不涉及到任何模型训练,且改善效果大部分是一轮回复就可以看到的,自然也就不需要显卡,不过还是需要一点调api的预算。纯prompt工程的岗也有,但是可能不多,薪资也会略低,不过对应地,其实比较轻松;作为大模型应用岗位,这其实是一个基石性的能力,后续的agent开发,微调等,都离不开prompt工程。

资源需求:能调API就行

2.Agent开发:让LLM不只是回答问题,而是能自己规划、调用外部工具、执行多步任务

关于Prompt工程和RAG,大模型主要是在处理信息,你问它答,无论怎么问,它都只停留在“动嘴”阶段,无法真正执行具体任务。而Agent ,在经过大模型的分析和规划之后,它可以调用工具去做完一件事,画一张图,做一份ppt,生成一份文档,开除一个员工(不是)——总而言之,它很实用

以绘图为例。单纯的大模型只能“请你把数据发给我”-“请你打开excel,粘贴这些数据”-“请你选择上方的插入图表,并选择这些数据”-“请你右键保存这张图”,Agent已经自己完成了读取数据-使用绘图工具-保存图片的流程,这其中的区别在于,前者需要人工进行所有步骤,大模型做指导,而后者是大模型自己调用工具完成整个过程,人只需要下达命令和检查结果。

可见,Agent要达到的目的是自动化地完成复杂任务。那Agent开发具体要做什么呢?

虽然Agent能自动化完成任务,但这个"自动化"是需要人去设计和搭建的。对于复杂任务,agent的执行流程是什么?对于特定的任务,我要选择什么大模型来作为Agent的大脑?怎么管理Agent的状态?完成任务要用哪些工具?工具调用失败了怎么办?——这些都是agent工程师要考虑的,也是面试高频考点。

做agent的企业其实挺多的,中大厂需要有自己的智能客服、办公助手,企业服务公司想给产品加自动化能力,垂直行业公司想在固定的行业流程减少人力成本(自动化风控审批、合同审查Agent、自动化客服和库存管理等等),还有些创业公司,专门做Agent,总之就是一个词,降本增效。

话说回来,Agent开发,顾名思义,也是离传统开发岗最近的地方,需要懂工作流设计、接口对接、错误处理这些传统编程技能,而不只是调模型,所以有时候除了python可能还会需要掌握其他编程语言(......那什么,培训班的不许在评论区卖java课)。

资源需求:能调API就行。但因为是多轮规划,往往比提示词工程的花费要稍微多些。

3.RAG:解决大模型不具备某些专有知识的问题。

(P.S. 大部分人会说是为了解决大模型幻觉的问题,但个人认为幻觉也来源于不具备专有知识)

再举一些例子。

a.你问qwen-max"我工牌丢了,怎么补办?"它肯定要么说不上来,要么就是胡言乱语,因为它没有你们公司的内部资料

b.你问“今天有什么热点新闻?”,早些年的模型会告诉你“我的训练数据截止xx年xx月,我无法得知今天的新闻。”

c.你问“帮我查一下CAS号为1269110-12-4的分子的SMILES结构”,大部分大模型会给你编一个,甚至给出了参考网址,但当你真的去看,你发现完全不是这个编号

d.你说“帮我总结一下这个开源框架的架构”,结果就是大模型因为阅读长文本,你要等半天,或者后面的文本淹没了前面的文本,漏掉了很多关键信息

这里实际上引出了业务普遍需要RAG的场景:数据有隐私限制、数据时效性强、需要溯源和容错率低、长上下文推理效果差

RAG并非所有业务中都需要,但面试基本都会问两句,因为大家发现,小模型回答不好问题不是因为它不会说话,只是因为它缺少这方面的知识,一旦引入知识库,小模型也能作为一个好用的助手,用在公司的各个提效场景,帮你查询一些内部信息;kaggle的很多比赛也证明,有了优质数据加持,参数量带来的提升其实不那么明显,但其成本可是实打实地增加了。

所以我们就知道:要做RAG,主要就是处理数据,构建一个好的数据库,找到合适的检索方式。数据要存储成什么格式?怎么切片?用什么方法做embedding?用什么向量数据库?用什么方法检索?如何评估检索效果?如何判断大模型回答错了是因为数据问题还是模型能力问题?...以上都是我被问到比较多的问题,大家可以参考。

资源需求:需要一定的存储空间(用来存数据)+ Embedding模型 + API调用,成本比前两个稍高但还算友好。

4.后训练(高效微调)and 5.后训练(全参微调):解决现有模型在特定任务上效果不好的问题

前面说的Prompt、Agent和RAG,其实都没有改变大模型本身的权重。而在实际工程中,直接调大模型API,有时候输出格式或内容不能遵循特定指令,又或者是推理速度有点,再或者是单纯的token太长导致费用增加

贵是可以理解的,毕竟大模型在预训练的时候,被塞进了各种能力:翻译、写诗、逻辑推理等等。但真实的业务线,其实只需要它干好一件事,比如社交媒体需要分析用户消息是否违规,电商行业要提取用户评论内容。每次为了干这一件事去调用几百上千亿参数的模型......可以,但有更好的办法。

所以针对特定任务,大部分有显卡公司的解法是:大模型蒸馏小模型。相当于用全能大模型的平均水平,去专门培养小模型在某一个特定任务上的“长板”。在这个具体的业务场景里不用管什么木桶原理,小模型只要有这一块长板,能在这个特定任务上平替掉大模型,那就是给公司省钱了。 当然,虽然目的差不多,但这两个方向的资源需求差别还是有点大:

高效微调(比如LoRA):消费级显卡(3090/4090)就能跑,或者租云服务器,成本很低。

由于只训练很小一部分附加参数,省掉了优化器和中间状态的显存,1.7b的模型训练可能只需要6-8G,稍微好点的游戏卡基本都可以做;如果是微调 8B 模型,配合一些显存优化技巧,一张24G的3090、4090也不是不能做(强烈建议大家在这个方向进行一些尝试,哪怕没卡,租一张,跑个小微调,最多也就花个百来块钱)。

全参微调:需要专业级显卡,甚至多卡并行,学校实验室基本没这条件。

全参微调要把大模型所有的参数解冻,用高质量的垂直数据重新刷一遍。微调一个 1.7B 的小模型,全参可能需要 16GB-20GB 显存,单卡4090勉强能跑(但需要各种优化技巧,体验不太好)。训一个 8B 的主流模型,全参起步需要 80GB+ 显存(单卡H100/A800),学校里有这个实力的导师怕是不太多......想积累这个经验,基本只能靠去中大厂实习,蹭企业的资源,(不过这个比基座模型预训练的门槛要低得多,因为针对特定任务微调的评价指标其实相对较少,毕竟不需要大模型保持通用能力,且训练时长和数据量也远小于基座训练)。

基座模型预训练本人目前没接触过,就不瞎bb了,以免误导大家,欢迎各位大佬在评论区补充

p.s. 感谢各位看到这里。准备投LLM方向的朋友,可以私信或评论,我可以帮忙看看简历有没有什么问题,或者模拟面试

(其他算法方向也可以...不过我不太了解,可能帮不上太多哈哈)

#AI求职实录#
全部评论
要赚这么高的薪资也是需要本事的
点赞 回复 分享
发布于 昨天 21:40 北京

相关推荐

求求要我吧:你教育经历放在下面干什么,而且27届还是28届啊()另外看你简历有两面,通常来说投递运营岗位一面简历就够了。另外个人总结要写也放在简历最下面,然后你奖项那里是2019年的哇哈哈,那你究竟投递的是社招还是实习?实习的话你是第几届是肯定要写出来的,社招的话你这个工作经历又太短太花了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务