GPT-4 非常强大,但是我们认为,还没有到彻底取代NLP 算法工程师工作的地步,依然有很多能做的方向。
原文作者:许明&阿法兔
原文来源:阿法兔研究笔记
〇、题记
这篇文章的目标:讨论在当前GPT-4 如此强大的技术冲击下,普通NLP 算法工程师该何去何从。本文章主要用来引发思考+讨论,如果您是NLP算法工程师,有什么新的观点或者Comment,可以加微信Alphatue
首先说下结论:GPT-4 非常强大,但是我们认为,还没有到彻底取代NLP 算法工程师工作的地步,依然有很多能做的方向。本文分为以下几部分:
一、GPT-4厉害在哪里?
二、GPT-4存在的问题
三、NLP工程师可以努力的方向
四、何去何从
五、申请Prompt专利?我们会不会失业?
1.更可靠了(胡说八道进一步降低)为什么?详情可见OpenAI的GPT-4 Technical Report(下图) 具体意思是,和以前的GPT-3.5模型相比,GPT-4大大减少了胡说八道的情况。
性能更好:比GPT-3.5 又提升了一大截
具体表现在哪?根据论文里的例子,我们发现GPT-4在技术上有几个进步:
啥是BLIP2?论文:https://arxiv.org/pdf/2301.12597.pdf
Salesforce 研究院的 BLIP-2 模型,是一种视觉语言模型,可以用于图像字幕生成、有提示图像字幕生成、视觉问答及基于聊天的提示等多种应用场景。BLIP-2 通过引入一种新的视觉语言预训练范式来解决端到端视觉语言预训练的高成本问题,并实现了在多个视觉语言任务上最先进的结果,同时减少了训练参数量和预训练成本。
由于GPT-4 完全不公布任何技术细节,所以为什么它有如此强大的能力,我们只能猜,想要研究它变得困难重重。
ChatGPT 的火爆让大家突然忘了曾经非常看重的数据安全问题,preview 版是有可能会参与下次迭代的;而商用API即使强调不会用于模型训练,敏感业务数据你敢用吗?
即使是GPT-3 也有175Billion(1750亿) 参数,所有的训练/推理都是极其消耗资源的,从GPT-4 的价格上涨了50% 来看,我们认为GPT-4 的推理消耗资源也上升了约50% 左右。
这也是最近讨论比较热烈的一个问题。在我们探讨这个问题之前,可以先思考一下理想的NLP 模型应该具有哪些特征。我们认为,比较理想的模型是:
安全可靠/支持长文本/小/快/私有化部署。
所以从个人观点出发,给出一些我们比较关注的方向,抛砖引玉:
目前LLM 最大的问题就是hallucination(hallucination举个例子,就是ChatGPT会一本正经的胡说八道)。那么目前主流两种思路:alignment/多模态。①alignment:alignment 就是让模型理解人类语言
②多模态:多模态(Multimodality)是指涉及多个感官或媒体形式的信息处理和表达方式。在自然语言处理和计算机视觉等领域,多模态通常是指同时处理和理解多种输入方式,如文本、音频和图像等。多模态信息处理可以帮助计算机更好地理解复杂的人类交互和情境,从而提高计算机的智能化水平和应用效果。例如,在图像字幕生成任务中,计算机需要同时处理图像和文本,根据图像内容生成相关的文字描述。
不开源只能复现,目前主要有[facebookresearch/llama](https://github.com/facebookresearch/llama)/[bigscience/bloom](https://huggingface.co/bigscience/bloom)此外还有不开源但是可以使用API 访问的百度文心一言/ChatGLM 等。
很多人提到百度文心一言性能“不够好”,具体指的是哪里不够好?想要回答这个问题,就涉及到:究竟如何量化评估LLM 的性能?曾经自动化的方案及 Benchmark 的参考意义,随着LLM 的能力提升显得越来越弱,现在急需新的数据集/评估方案。目前的工作有:[openai/evals](https://github.com/openai/evals)[stanford-crfm/HELM](https://github.com/stanford-crfm/helm)
更长的输入,对某些任务是有利的,那么如何让模型支持更长的输入?
主要的思路有两个:
PS: GPT-4 的输入从GPT-3.5 的4K(or 8K?) 提升到了30K,具体是如何做的呢?
相同架构的模型通常变小就会变快,让模型变小的方法主要是蒸馏/量化/train 小模型,这个方向目前工作有:[stanford_alpaca](https://github.com/tatsu-lab/stanford_alpaca)[bitsandbytes](https://github.com/TimDettmers/bitsandbytes),中文上也有[ChatGLM-6B](https://github.com/THUDM/ChatGLM-6B)/[BELLE](https://github.com/LianjiaTech/BELLE)等
如何在低成本设备上使用这些模型?如单张GPU 上跑大模型或普通CPU 上跑模型。这个方向的工作也有[FlexGen](https://github.com/FMInference/FlexGen)/[llama.cpp](https://github.com/ggerganov/llama.cpp) 等。
参考[huggingcae/peft](https://github.com/huggingface/peft)
最近的工作有[Simfluence: Modeling the Influence of Individual Training Examples by Simulating Training Runs](http://arxiv.org/abs/2303.08114)
优化器决定了我们训练时需要的资源。虽然我们通常使用Adam 优化器,但是其需要2倍额外显存,而google 好像用Adafactor 更多一点,最近他们又出了一个新工作
如从可控生成角度看,目前可控主要通过control token(prompt)来实现,有没有更好的办法来实现更“精细”的控制?正如controlnet 之于stable diffusion。
如何判别内容是人写的还是模型生成的呢?随着模型的性能越来越强,识别AIGC 也越来越困难。目前的工作也有watermark/[GPTZero](https://gptzero.me/) 等不过我感觉还没什么特别有效的方案目前。对此我有个简单的思路:将AI 生成的与非AI 生成的看作是两种不同的语言,如code 与英语一样,虽然都是相同符号构成,但是对应不同语言。使用大量的AI 生成的内容(或人机交互数据)pretrain 一个”AI 语言模型“,再来进行识别。
我认为在某个任务/领域上通过小模型挑战大模型依然有意义,LLM 虽然强大,但是依然有太多我们不知道的能力,通过小模型刷榜也许能提供一些思路,就像PET 本意是挑战GPT-3,却打开了LLM 的新思路。
这种新的革命性的技术我们普通工程师通常都不是第一线的,我们第一次真正使用bert 也是在其出来两年后了。即使今天,也有很多场景/公司不使用bert这个技术。换个角度,即使我们想参与,我想能参与训练/fine-tuning 一个10B 规模模型的工程师都相当少,更别提更大的了。所以到底是“左右逢源”还是“举步维艰”,让子弹飞一会儿吧。
生活中不缺少美,而是缺少发现美的眼睛。对于普通用户来说,要努力提高自己的鉴别能力(究竟什么是真?什么是假?什么是好?什么是坏?)
随着alignment 的进一步优化,LLM 通常越来越理解自然语言,所以我们认为prompt-trick 越来越不重要,而清晰地用prompt 描述你的需求越来越重要。所谓技术壁垒也许就是如何更清晰有效的描述需求了,但也很难形成技术壁垒。至于专利,软件著作权保护的是制作软件这个技术本身,而非你使用软件时的姿势,所以我想单独的prompt 应该也不会形成专利,但是作为你某个技术的一部分,还是有可能的。
我们认为不会失业,但会转变一部分人的工作方式。在计算这件事上,人类早已被计算机远远地甩在后面,而计算机的出现也带来了大量的新工作。尤其是LLM 现阶段的表现是“懂开车的人才能开车”,所以需要更多更懂某个业务,更熟练使用LLM 工具的人。