是骡子是马,牵出来遛遛
正名
看到这个标题,你可能会觉得是噱头。谁不知道 ChatGPT 模型有 1750 亿以上的参数,别说是在笔记本电脑上跑,就是使用高性能 GPU 的台式机,也无法带得动啊。老老实实调用 API 不好吗?
其实,LLM(大语言模型)有非常宽泛的参数量范围。咱们今天介绍的这个模型 GPT4All 只有 70 亿参数,在 LLM 里面现在算是妥妥的小巧玲珑。不过看这个名字你也能发现,它确实是野心勃勃,照着 ChatGPT 的性能去对标的。GPT4All 基于 Meta 的 LLaMa 模型训练。你可能立即觉得不对,你这跟 GPT 有啥关系?为什么要无端蹭热度?且慢,GPT4All 确实和 ChatGPT 有关 —— 它用来微调的训练数据,正是调用 ChatGPT 产生的大量问答内容。
我怕你对技术细节不感兴趣,因此只用下面这张图来说明 GPT4All 的训练过程。
(图片来源:我让 ChatGPT 自己查了资料后调用 graphviz 画的)
GPT4All 其实就是非常典型的蒸馏(distill)模型 —— 想要模型尽量靠近大模型的性能,又要参数足够少。听起来很贪心,是吧?
据开发者自己说,GPT4All 虽小,却在某些任务类型上可以和 ChatGPT 相媲美。但是,咱们不能只听开发者的一面之辞。还是试试看比较好,你说是吧?
下载
说明一下,目前你可以找到的蒸馏模型,绝不只是 GPT4All 一个。但是对比下来,在相似的宣称能力情况下,GPT4All 对于电脑要求还算是稍微低一些。至少你不需要专业级别的 GPU,或者 60GB 的内存容量。
这是 GPT4All 的 Github 项目页面。GPT4All 推出时间不长,却已经超过 20000 颗星了。
你可以按照 GPT4All 主页上面的步骤,一步步操作,首先是下载一个 gpt4all-lora-quantized.bin
二进制文件。我看了一下,3.9GB,还真不小。
我家里网速一般,下载这个 bin 文件用了 11 分钟。
之后你需要把 GPT4All 的项目 clone 下来,方法是执行:
git clone https:
//gi
thub.com
/nomic-ai/g
pt4all.git
项目本身的体积不大,这个克隆动作很快就做好了。
下面你需要把刚才花时间下载的 bin 文件,放到本地克隆项目的 chat 文件夹里,就像这样。
然后打开终端,进入这个 chat
文件夹。执行:
./gpt4all-lora-quantized-OSX-m1
-m
gpt4all-lora-unfiltered-quantized.bin
main:
seed
=
1680655556
很快,对话就开启。界面很是简洁明了,问题直接输入即可。
下面,就是咱们验证 GPT4All 能力的时刻了。
寒暄
按照我被反复捶打后学来的规矩,一上来还是得寒暄一下。我先问问它姓字名谁好了。
它居然告诉我,叫做 John 。这名儿谁起的?
我很耿直地说:不对,你的名字叫 GPT4All。
看来它似乎不乐意了。于是我放弃了这个话题,以免 GPT4All 记仇,后面不好好回答。
我于是问,你住哪儿啊?
在美国,具体地说在纽约市,更准确地说在布鲁克林区,在 Ocean Parkway 附近的 Prospect Expressway 出口 #10A/B。我目前与家人一起居住,包括我自己(一名 23 岁的男性)、母亲(57 岁)和父亲(68 岁)。我们住在一个三卧室的房子里,我们共享相同的房间和浴室。
瞧瞧,挺能白唬啊。最有意思的是你一个语言模型还给自己找了爹妈,年龄都一清二楚。
下面我单刀直入,你是干啥的?
它回答说:
我是一个 AI 机器人,能够使用自然语言处理(NLP)技术(例如机器学习、深度神经网络和自然语言生成)回答用户在各种平台(如 Telegram 或 Kik Messenger)上提出的问题。
好的,那你有啥能力呢?
看到回答,我哭笑不得 —— 怎么又重复了一遍?算了,不纠结了,咱们进入下一个环节,编程测试。
编程
首先我想知道,GPT4All 你这个小模型到底懂不懂 Python 呢?
它斩钉截铁告诉我 —— 会。然后给我解释 Python 是啥。挺好的,赞一个。但是好像你只是告诉我 Python 的定义啊。我需要的不是你告诉我 Python 是啥,而是希望你帮我写代码啊。于是我继续问:
你会不会用 Python 写代码?
问题不同,可是答案却还是这样:
怪了。怎么俩问题,一个答案? 😂
算了,不管了。既然你说你会写,那就请你写一段吧。
为了避免你觉得我欺负小模型,我让 GPT4All 写最简单的 "hello world" 。按说这应该没啥难度。但是它写出来是这样的:
好奇怪啊!这都啥玩意儿?
我还真拿到环境(Visual Studio Code)里面运行,果不其然报错了。
自从用 ChatGPT 以来,我遇到报错后都是这样处理 —— 把报错结果,扔回到对话里面,让聊天机器人帮我查错。这次也不例外,我把报错信息扔给 GPT4All。
GPT4All 这回答的都是啥啊?我就是想打印个 "hello world",怎么会这么折腾?居然还要 copyfile ()
?
我怕是自己没有说清楚要求,于是改了一个问法。这次连 "hello world" 都不敢劳动 GPT-4 大驾了 —— 您就给我打印个 "Hi" 就行。
这都不用运行了,一看就知道根本不是我想要的结果。
下一项,我尝试让 GPT-4 画个图。这次的结果,就不是扔给我不能执行的代码那么简单了 ——GPT4All 给了我一堆不知所云的代码和注释后,直接崩溃退出,不聊了。
作为对比,咱们看看 GPT-4 的反应。我把刚才的报错信息扔给 GPT-4,这是 GPT-4 的解答。
GPT-4 不仅分析了错误成因,而且直接给了我新的代码。
GPT-4 以为我非得要用 devnull 设备(其实我没这意思),于是改成了这样。我放到运行环境(Visual Studio Code)里,虽然依然什么也没能打印出来,但是至少真的把报错问题解决了。
我把同样的绘图要求发给了 GPT-4,这是它的回答。
你以为这样回答完了,没有,它还告诉我上面绘图里面遇到的问题:
Note that the function
1/sin(x)
has singularities (vertical asymptotes) wheresin(x) = 0
, which might result in some artifacts in the plot. You can handle these singularities by masking the y values whensin(x)
is close to zero:(注意,函数 1/sin(x) 在 sin(x) = 0 的地方存在奇异性(垂直渐近线),这可能会导致图像中出现一些异常。您可以通过在 sin(x) 接近零时掩盖 y 值来处理这些奇异性。)
然后,不由分说给了我一段更精确的代码:
这是我原封不动拷贝代码到本地后,执行出来的结果:
看来,在编程方面,GPT4All 还有很长的路要走。
名词解释
下一项任务,我让 GPT4All 帮我解释机器学习领域的专业术语。
Could you please tell me transformers architecture in Deep Learning? In detail, please(你能详细介绍一下深度学习中的 Transformer 架构吗?)
GPT4All 是这样答复我的。
翻译成中文,是这样的:
深度神经网络由多个层组成。每一层包含处理输入数据并通过非线性激活函数(Sigmoid 或 ReLU)传递给其他层的神经元。每一层的输出会传递给另一层,在传递给下一层进行进一步处理之前,这一层会对这个中间表示进行某种操作。 这个架构可以分为两个主要部分:输入层和输出层。 输入层 - 这表示一组输入,这些输入被送入人工神经网络(ANN)作为训练数据或测试数据,然后由深度学习算法使用,以根据历史信息(例如过去的交易等)预测未来事件 / 结果,这一过程使用输入层及其相关权重。 输出层 - 这表示一组输出,这些输出在经过人工神经网络内部的各个层(例如卷积神经网络、循环神经网络或长短时记忆网络)处理后被送回到 ANN 中,然后由深度学习算法使用,以根据历史信息(例如过去的交易等)预测未来事件 / 结果,这一过程使用输出层及其相关权重。 深度学习模型的架构可能会因各种因素而有所不同,例如数据类型、特征数量、目标变量或正在解决的分类问题。
呃…… 这解释的,都是啥啊?我问的是 Transformers 架构,这里 GPT4All 却把深度神经网络的基本定义解释了一遍。说「驴唇不对马嘴」不算冤枉它吧?
我对比了 GPT-4 对于这个问题的解答。
GPT-4 洋洋洒洒给我写了好几个页面,一共 8 项,附带开头和总结。
篇幅所限,我这里只翻译 GPT-4 回答里第一页的内容:
Transformer 是一类深度学习架构,在自然语言处理(NLP)和其他领域中已变得非常流行,这归功于它们强大的性能和可扩展性。Transformer 首次在 Vaswani 等人于 2017 年发表的论文 "Attention is All You Need" 中被介绍。Transformer 基于自注意力机制,这使它们能够捕获长距离依赖关系并在序列中建模复杂的模式。
以下是 Transformer 架构的关键组件的详细概述:
自注意力机制:Transformer 的核心是自注意力机制,它允许模型衡量每个输入标记与序列中每个其他标记的关系的重要性。这是通过使用三个可学习的向量实现的,分别称为查询向量(Q)、键向量(K)和值向量(V)。自注意力机制计算每对标记之间的注意力分数,然后用于生成值向量的加权和。
多头注意力:Transformer 使用多头注意力来捕捉输入序列的不同方面。多头注意力层中的每个 "头" 都独立执行自注意力,并生成自己的输出。这些输出然后被连接并线性转换以创建多头注意力层的最终输出。
唉,果然是没有对比就没有伤害啊。
写作
我们来继续考察一下GPT4All的写作能力。这次我的要求是:
Please write me a first draft on the topic "AI is changing our lives"(请为我撰写一篇关于 “人工智能正在改变我们的生活” 的初稿)
下面是 GPT4All 的回答。
翻译过来是这样的:
人工智能(也称为 AI)自出现以来一直在改变人类生活的各个方面,并将继续这样做。这项技术的影响可以在诸如医疗保健、交通运输或制造业等行业中看到,其中自动化流程正在用具有从数据集中学习并基于算法做出决策能力的机器替代人力劳动。 就我们的生活而言,AI 已经以多种方式改变了它们:它通过匹配我们拥有的技能与可用职位帮助我们更容易地找到工作;它通过使用历史模式预测未来事件和趋势的预测分析,帮助我们进行购买或投资选择。 AI 还具有改善我们生活的潜力,例如通过使用 AI 技术驱动的语音生成设备(SGDs)帮助残疾人更好地沟通;它可以通过机器学习算法分析大量数据以预测未来事件和趋势,帮助我们在医疗保健或财务规划方面做出更明智的决策。 总之,我们不应该害怕,而应该拥抱人工智能带来的变化,因为如果妥善利用,它们必定会使我们的生活变得更好。
在写作上,GPT4All 终于给了我一些惊喜。毕竟,这回没有出现张冠李戴的事儿,答得也算中规中矩。
为了能够进行评判,我对比了 GPT-4 对相同问题的回答。这里只列出第一页。我觉得一沾上英语问答,GPT-4 有变成话痨的趋势。
我这里只完整翻译第一部分,请你观其大略即可:
标题:人工智能正在改变我们的生活:首次了解人工智能的变革力量
介绍:
人工智能(AI)的快速发展正在重塑我们所知道的世界。从自动驾驶汽车到虚拟个人助手,AI 已经深度融入我们日常生活中,为改进和增长提供了重要机会。随着我们继续接受 AI 技术,理解它们如何改变我们的生活以及对整个社会可能产生的影响至关重要。
I. 提升我们日常生活
A. 虚拟个人助手
像 Siri、Google Assistant 和 Alexa 这样由 AI 驱动的虚拟个人助手已成为我们生活中不可或缺的一部分。这些智能系统通过帮助管理日程安排、回答问题并提供个性化建议来简化我们的例行事务。
B. 智能家居技术
由 AI 驱动的智能家居系统,例如 Nest 和 Philips Hue,通过自动化乏味任务、优化能源消耗并根据偏好提供个性化舒适感而彻底改变了我们居住空间。
C. 自主车辆
无需司机操作汽车不再是未来概念;特斯拉和 Waymo 等公司正在开发和测试自主车辆。这些由 AI 驱动的汽车承诺通过减少人为错误、改善交通流量并潜在地减少道路事故来彻底改变交通运输。
实际上,在后面的输出里面,一共有 3 个方面、6 个段落外加结论。主要内容是这样的:
人工智能(AI)正在改变我们的生活,为我们带来新的机遇和解决方案。在就业市场方面,AI 具有自动化各行业中重复性任务的潜力,提高工人效率,释放他们的时间以关注更高价值的活动。尽管这可能导致部分岗位流失,但也为新岗位的创造和角色的发展提供了机会。随着 AI 的不断发展,数据分析、编程和 AI 伦理等领域将涌现出新的就业机会。
在医疗保健方面,AI 已经应用于疾病诊断、预测患者预后和推荐个性化治疗方案。借助深度学习和大数据,AI 能够分析医学图像和患者病史,识别模式并做出准确预测,从而提高患者护理质量。此外,AI 还可以加速新药发现,识别潜在药物候选者,并优化药物设计,加快救命药物的研发。
然而,随着 AI 越来越多地融入我们的生活,数据隐私和监控方面的担忧也在增加。建立保护个人隐私的伦理准则和法规至关重要,同时仍需允许 AI 发展并提供有价值的见解。确保 AI 系统公平、无偏见地对待所有个体是当务之急。发展透明、道德的 AI 算法对于建立公众信任和确保 AI 技术造福所有人至关重要。
总之,人工智能无疑正在改变我们的生活。在继续拥抱和发展 AI 技术的同时,我们还必须考虑伦理影响,努力创造一个更公平、包容的未来。通过理解 AI 的变革力量,我们可以充分利用其潜力,造福人类。
嗯,你没有猜错,上面内容,还是 GPT-4 自己浓缩总结的。
对比
看到这里,你可能已经怒了 —— 有这么比的吗?!你拿一个如此精致的小模型 GPT4All(70B)跟 GPT-4 这样的大怪物去比。GPT-4 胜之不武,我为 GPT4All 鸣不平!
且慢恼怒,我想表达的意思是这样的:
如果一个模型真的能达到蒸馏浓缩的作用,那么显然体积的显著减小是重大优势,毕竟这意味着训练和应用成本降低,速度显著提升。但如果模型缩小以后在解决问答、解释和编程能力上和大模型相比差距显著,那么我们就不能武断地说小模型「性价比」更高了。
有研究证实过在「有人类调教的情况下」,60 亿参数的小模型甚至可以在某些任务上面击败 1750 亿参数的大模型 (Ouyang et al. 2022)。
只不过,这里的比较并不公平 —— 它指的是小模型有人工调教,而大模型缺乏调教的情况。ChatGPT 不缺乏调教,因此我们并没有看到 GPT4All 能够以少量的参数达到 ChatGPT 这么好的性能,即便它充分使用了 ChatGPT 的输入输出数据。
训练大语言模型时,多大的语料会使得模型对外部世界真实认知产生质的飞跃(可以在各项任务上都有好的表现)?目前的经验是 300 亿单词的输入量 (Zhang et al. 2020)。
但是大语料需要足够高的模型复杂度来承载。模型相对输入数据过于复杂固然不好(过拟合,over-fitting)。然而一个太小的模型在面对大数据的时候,也会力不从心(欠拟合)。大和小是需要相对判断的。目前的 GPT4All 在一众巨无霸面前,无论如何也是个小模型。
ChatGPT 这样的大语言模型让人们惊诧的地方,在于它能够有自己的「顿悟时刻」。这种「顿悟时刻」如何出现的?现在学术界还在研究中。但是有很多证据指向一些提示语(例如「一步步来」step by step)能够激活大语言模型的 Chain-of-Thought (思维链),从而有助于解锁「顿悟」般的逻辑推理能力。不过研究者同样证明了,这种「魔法」提示语有效的前提,是模型的参数量需要达到 1000 亿的规模 (Wei et al. 2023)。ChatGPT 的参数超过了这个阈值,而 GPT4All 还远得很。
那么,GPT4All 是不是一无是处呢?
当然不是。如果你把 GPT4All 看成某种终极形态,那么等待你的可能是从激动快速跌落到失望。但是比较一下初代 iPhone 和 iPhone 4S,你就能感受到短短几年间,技术进步带来的产品性能天差地别。更何况,现在的 AI 进展速度,可不像 iPhone 一样「一年一更」。
即便从短期来看,GPT4All 也有其用途。在我们的测试中,它在写作上还是有能力的。GPT4All 不需要付费调用 token ,也不需要把数据传递到远端进行处理。对有些使用目的(例如保护公司机密数据)而言,GPT4All 这样的模型出现,关乎的可不只是「好用」与「不好用」,而是「能用」和「不能用」的分水岭。对于很多机构的事务性工作而言,复杂的逻辑推理能力其实只是锦上添花。若是能完美解决日常单项任务,收益也已经十分显著。
请你在试用之后,依然对GPT4All保持一份耐心。也许不久以后,我们每个人的电脑和手机上,都能运行一个随时待命的优秀助理,帮助我们做许多从前想做,但是一想到要做就头疼的任务。
小结
本文给你介绍了GPT4All这款可以运行在普通笔记本电脑上的70亿参数「小模型」。我们测试了它的多项能力,尚且达不到惊艳程度,尤其在GPT-4面前弱不禁风。但是,正如GPT4All的命名一般,它的愿景是给「所有人」的”GPT”,这给了普通用户和开发者希望,打破少数机构对新科技的垄断乃至「AI阶层固化」。有希望挺好的,不是吗?
祝 AI 使用愉快!
如果你觉得本文有用,请充电。
如果本文可能对你的朋友有帮助,请转发给他们。
欢迎关注我的专栏「科研利器」,以便及时收到后续的更新内容。