声明
开头声明,个人并非为了故意羞辱和诋毁某公司而写的本篇博客, 只是想单纯的做技术分析,因为技术的探索上是无止境的,我们可以原谅国内计算机技术的不成熟,也可以理解生活的不容易,每个人都在努力,但是依旧不喜欢资本家掠夺式的玩钱手段。
文心一言怎么样
无意中看到了这个报道:
抱着对文心一言的期待,本NLP民工很希望有个国产的大模型,可以帮忙生成一些训练用的数据,或者解析文档中的关键内容,以指定的格式 返回列表,字典,类似格式的数据,或者按照我想要的结果,对海量数据集循环进行解析,也就是所谓的“提示任务”。
这是chatgpt:
这是文心一言:
目前看来基本可以。
但是接下来的一些就有些放飞自我了:
我让chatgpt和文心一言,给我生成一些相似文本,作为训练用的数据集,要求语义一样。
这是chatgpt:
这是文心一言
接下来挑战文心一言的对手,是claude in slack 也算是openai的核心技术人员从openai离职后,自己成立公司,做的模型, 推理速度比chatgpt快, 效果不比chatgpt差,有些问题甚至更优。
上面的这个回答,个人更倾向于claude的答案,理性,且有理有据
泰勒公式,我问的都是“实用价值” , 文心给出的都是数学上的应用, 而claude给出的实际工程上使用泰勒公式的价值。 甚至神经网络前向传播过程也离不开拟合曲线, 以及填补数值缺失。 泰勒公式在深度学习领域有着不可磨灭的价值。
《巴黎圣母院》的问题, 实际上claude分析的更深(话多)
至于最后一个,我让AI假装是女孩子,并进行性格设定, 这个能看出其对文本语义的理解能力,以及回答效果,以及多轮对话效果。 不得不说,这家伙话是真的多。
有句老话:“外行人看热闹,内行人看门道”
咱也不算什么内行人,只是觉得,类chatgpt的LLM任务,其最终不是能讲个笑话,查询饭店这种的生活助手,这些任务实际上目前国内大厂做的很好。 更重要的是,长文本语义理解精确, 长文本生成,长文本问答,多轮对话如何捕捉几百轮之前的对话,并结合之前的对话内容,与现在的内容一起去构造一个语境。
chatgpt推理部分技术简单分析
在使用chatgpt的过程中,俺发现,chatgpt经常会卡住那么一下,时间长短不固定。 并且,明明是生成式任务,网页前端非要做一个字一个字生成的动画。 并且伴随着一些长文本的生成,经常有一个容易被忽略的细节, 那就是有时候chatgpt生成,有的时候就像重新生成的,重新开启话题一样, 这么说可能不太具体。 举个例子,有些话可以连贯说, 就像你和你朋友聊天, 应该在一个语境下,一直聊。 假如说,你朋友聊天聊着,突然就像换了一个人,又新开语境,就有一种是不是朋友被“夺舍”既视感。
chatgpt在某一轮对话中,如果需要生成一些几千字符的长文本,需要整理出序号, 就是 1. 2. 3. 4. 看上去没什么。 大部分人会说chatgpt条理清晰。
然而,openai一定是在掩盖什么。
有没有可能, 在硬件上,国内大厂,已经可以达到openai的算力水平。 但是在一些训练模型的细节, 或者推理模型的细节上做的不足?
总结一下现有条件:
1.明明可以一次性输出完整的文本, 要做动画一个字一个字输出。
2.经常会喜欢总结前文,然后再继续生成。
3.chatgpt是一个text_generation模型,生成式模型。
4.NLP有一个文本语义连贯性分析
因此,我猜想, chatgpt的推理部分有很大的说法。也许是可以作为学习的内容之一。
解决思路浅析
多轮对话,长文本生成,也许是循环生成的。
假设在训练阶段的数据集部分。 在每一条数据的结尾加一个end_check, 也就是停止符, 代表话说完了。 那么在推理的时候,只要生成的没有出现停止符,那么就循环生成,直到出现停止符。
那么,常规的生成,都是根据前文内容,进行生成。 那么前文选多少个句子,根据这几个句子进行生成。才能保证后续的内容是围绕用户问题续写的。
下一个问题,如何避免多次“续写”之后,偏离中心问题点? 解决方法,可以每一次生成,结合上一次生成的末尾,代表告诉模型“接着说”,同时,把用户的问题也加进去,代表告诉模型“别跑题”。如何避免生成重复内容? 那么截取每次生成的最后n个句子, 告诉模型“这些是已经说过的,别重复”
这些推理策略,要结合数据集特征情况,模型的表现效果,硬件算力,等综合因素去考虑超参数设置,以及策略设置。
当然, 在nlp推理过程,大多数在decoder阶段,根据隐马尔科夫时间序列,一般是选择概率最大的。 然而,实际上,生成的序列不只是一个。 也许得分第二的文本序列,跟总体语义更契合? 因此,在生成语义的时候,还需要加一个文本语义连贯性判断。 输入可以是每一次生成的文本,然后与候选的文本进行语意连贯性计算。 这个语义连贯性模型,我知道的是没有中文的, 不知道是不是某些项目组研究过这个东西。
当然了,这一切的策略都建立在一个基础上,就是足够的算力能保证单次生成超过多少个字符,以及神经节点数量充足,能让文本语义有充分的表现,以及优质的数据集,不论是覆盖的领域范围, 还是数据质量, 毕竟数据决定模型表现效果的上限。
根据claude in slack的回答, 其单次可解析最长的文本,可以达到2万到3万个字符,这还是在能保证理解语义的前提下。对于整体语义的理解。
那么,这就可以解决多轮对话的问题。 根据B站某UP使用AutoGPT,调用chatgpt的apikey,让chatgpt自我反思了10个小时, 一个劲的自问自答, 在很多次对话之后,chatgpt还能回想起来自己之前漏掉了什么,并及时做出补充。 这在外行人看来,这个很像人类的做事方式了。 实际上,有可能,只是将所有的对话内容结合,包括每次用户的输入,以及自己的输出。并将整体作为输入的query,输入到模型,循环生成输出。
如果这样想的话,又会引申出一个新的问题,多轮对话,如果多次捕捉之前对话的输入输出,并完整进行输入,不出几轮对话,肯定超过几万字符了, 对于这种的怎么整? 那么就压缩文本量,并保留关键 特征。 比如卷积,比如降维。 或者经过文本摘要模型。
因此,光是推理部分的工作量,几乎是结合了很多NLP领域其他的研究技术, 一个chatgpt,并不是我们大众所熟知的,输入模型,等输出,decode还原成文本,就结束的。 其包含的策略是一个非常值得研究的问题。
之前国内市场大部分公司的发家史,都是打的信息差, 谁先得到消息,谁先抢占市场,谁就能疯狂捞钱。 典型例子就是,上世纪日本乐坛,美国乐坛,养活了一大群内地以及香港歌手。
在计算机领域,就是:“国外开源了,国内很快就有自主研发。 国外不开源技术,就一直都是霸权主义垄断技术。”
但是,一个chatgpt不知道是否能扯下国内计算机领域,各自抢市场,都想无止境的捞钱,这块遮羞布。 国外将所有用到的技术开源了,包括爬虫,包括神经网络,包括研究论文,都是开源的。 但是能否将这些技术串起来。 国内还没有这个领头的。 热爱技术的人,最终都成为了热爱金钱与享受生活的人。 不能说这种行为错误, 这是人的本性,辛辛苦苦为了生活努力,最终学会了知识就指望翻身,如果能者多劳,会的越多,干的活越多, 肯定对于整个行业发展非常不利。
可能,计算机技术领域,需要一个“疯子”,一个超脱了物质为主,而是以技术这个东西作为兴趣的人。
再次声明
个人并非饱含恶意去抨击国产,去不理解国人付出的辛苦, 只是想分析技术,个人不是什么顶级学者,也许我想到的这些问题,早就已经被解决,或者早就被注意到了。那就全当作个人记录自己想法了。
希望文心一言,或者其他LLM模型早日成熟吧,俺目前的工作是银行外包,给银行干活,他们的数据非常不想被上传到openai的服务器, 一直在等好用的国产LLM。
加油吧。
-----------------------------来自一个AI开发者(幼儿园水平)