Stanford Alpaca (羊驼):ChatGPT 学术版开源实现
文章目录
- Stanford Alpaca (羊驼):ChatGPT 学术版开源实现
- 前言介绍
- Alpaca 在线体验
- 查语病
- 写代码
- 连续对话能力
- 原理简要分析
- 一些有意思的观察
- 总结
前言介绍
最近 ChatGPT 大热,让人惊叹其强大的对话、上下文理解、代码生成等等能力,3 月 15 日 OpenAI 又放出了能实现图像理解的多模态大模型 GPT-4,直让人感觉通用人工智能 (AGI)仿佛离自己不远了。有生之年看到人类命运共同体能有这样的进展我是由衷的高兴,并不自觉地给 OpenAI 点了一个赞:
但另一方面由于 GPT 系列模型 & ChatGPT 均未开源,再加上高昂的训练成本所构成的坚不可摧的护城河,让普通人 & 公司望而却步,说实话,还是挺让人焦虑的。当然焦虑的不止国内的研发人员,今天惊喜的发现斯坦福大学开源了学术版的 ChatGPT, 他们命名为 Alpaca (羊驼,没错,说的就是神兽),目前放出了在线体验网址、数据生成代码、训练过程和超参,不久就会放出模型权重参数以及完整的训练代码。详情如下:
- 在线体验网址:https://alpaca-ai-custom2.ngrok.io/
- 模型介绍文章:https://crfm.stanford.edu/2023/03/13/alpaca.html Alpaca: A Strong Instruction-Following Model
- Github 代码地址:https://github.com/tatsu-lab/stanford_alpaca
代码刚放出来不久,我先 mark 一下,趁代码量还比较少的时候赶紧看看,否则后面代码越多看不过来🤣。简单看了下这个开源库,发现一些挺有意思的现象,待会分享,先说下 Alpaca 的体验。
Alpaca 在线体验
查语病
比如写这篇文章的时候,突然不清楚上文写的 “再加上高昂的训练成本所构成的坚不可摧的护城河” 一句是否有语病,我就尝试把它扔给 Alpaca 替我检查一下,测试其智能程度,此外再验证下它是否能识别中文,效果如下:
第一个红框中输入我的问题,第二个红框是 Alpaca 的回答,它不仅指出 “坚不可摧的护城河” 没有语病,还把这句话翻译了一下。保险起见我还到 Google 中搜了一下,确认有句子是这样用的,那我只能默认它是对的 🤣。
另外注意到第二个红框下还有 “Upvote response” 和 “Downvote response” 两个按钮,用来给回答进行反馈。
写代码
给它出了一道简单的编程题,LeetCode 中的链表反转问题,让它用 Python 实现一下:
居然写对了,能运行🤣!算是一个小惊喜。说明这个模型虽然轻便,但也有足够强的能力。
连续对话能力
为了测试 Alpaca 的连续对话能力,我仍然从代码的角度进行提问;我首先让它写非常简单的 python 代码,可能 5 ~ 10 行的样子,它顺利的完成了:
之后我让它将代码写复杂一些,我在提问的时候说的是 “make it more complex”, 其中 “it” 需要它理解了上下文,才能知道我指的是它前面所写的简单代码:
我表扬它 “Good”,它还回我一句 “Perfect”,商业互吹这是… 但是回复的时候偷懒,只给了思路,但是没有具体的 code, 因此我决定 CPU 它一下:“Talk is cheap, show me the code”:
果然,它给了一个稍微复杂的 code… 还挺好玩。
功能体验就介绍到这。
原理简要分析
Alpaca 本身的介绍 blog:https://crfm.stanford.edu/2023/03/13/alpaca.html 其实说的非常清晰了,模型的训练流程基本可以用下图来概括:
它使用 52K 个 intruction-following examples 来微调 Meta 的大语言模型 LLaMA 7B (Meta 开放了模型权重以及 Inference 代码,详见 https://github.com/facebookresearch/llama),从而生成了 Alpaca 7B。
但是这 52K 个 intruction-following examples 是如何生成的呢?Alpaca 团队使用 https://github.com/yizhongw/self-instruct 提供的 175 个 seed tasks,这些 seed tasks 长这样:
调用 OpenAI 的 text-davinci-003
模型,利用 OpenAI 的模型来产生有价值的 instructions!
不得不说,有点机智,这种方式很像蒸馏训练啊。将 OpenAI 性能完备的模型作为 Teacher,来指导参数更少的 Alpaca 模型进行训练,大幅降低了训练成本 。其中调用 OpenAI API 的成本不到 500 美刀,另外微调 7B 参数的 LLaMA 模型,使用云服务商提供的 8 块 80GB A100 显卡,训练 3 小时,消费不到 100 美刀。因此整体成本是小于 600 美刀。
相对来说,确实方便了独立的研究人员、学术机构以及大部分公司。
一些有意思的观察
在前言中曾说查看 https://github.com/tatsu-lab/stanford_alpaca 这个库时发现一些有意思的现象。那是因为我在 PR (https://github.com/tatsu-lab/stanford_alpaca/pull/24) 中发现,这些研发人员看东西都超细致…
比如上面小哥发现 prompt.txt
行号标错了:
这都能注意到,当时我就震惊了!也许是运行代码时发现的错误也说不定,but never mind。
总结
本文简要介绍了 Alpaca, 一个关于 ChatGPT 的学术版开源实现。最近想复现 ChatGPT 的工作有很多,我目前关注的几个除了 Alpaca, 还有:
- OpenChatKit: https://github.com/togethercomputer/OpenChatKit
- ChatRWKV: https://github.com/BlinkDL/ChatRWKV
好想自己有多个分身,以有涯随无涯,殆矣!
最后:可以在微信中搜索 “珍妮的算法之路” 或者 “world4458” 关注我的微信公众号, 可以及时获取最新原创技术文章更新. 🤣