相信不少人都有在玩 ChatGPT 甚至用来工作,不过不是要翻墙,就是要透过第三方软件,还可能要课金。如果家中有部电竞电脑,能不能像图像生成一样,在家建立一个人工智能助理聊天机械人呢?最近由柏克莱加州大学等多间大学组成的一个团队,就发表了一款开源对谈机械人 Vicuna(小羊驼),不单可以在自己的 PC 搭建,还宣称获 GPT-4 评为有 ChatGPT 九成回应质素。
Vicuna-13B 是由柏克莱加州大学、CMU、史丹福大学、圣地牙哥加州大学组成的团队,利用公众在 ShareGPT 平台分享、数以十万计对话集来微调的 LLaMA 开源大型语言模型 ,当中的 13B 就是指模型具有 130 亿个参数。
LLaMA 就是 Facebook 母公司 Meta 在 2 月时发表的大型语言模型,以低成本部署具 ChatGPT 水平的聊天机械人见称,早前史丹福大学就有另一团队发表经过微调、可以在小至 Raspberry Pi 上安装运行的 Stanford Alpaca 模型。而本文介绍的 Vicuna-13B 模型,就宣称经 GPT-4 初步评估,获得回答质素达到 ChatGPT 九成水平,与 Google Bard 不相伯仲,更在九成用例中优胜於原装 LLaMA 和 Stanford Alpaca。
官方也提供 FastChat 网站供大家网上试用,不过就没有角色扮演功能。
自建步骤
就像 Stable Diffusion 一样,大家也可以在一般 PC 上运行 Vicuna 聊天机械人,甚至具备与 Stable Diffusion WebUI 大同小异的介面。Vicuna 可以单靠 CPU 运行,不过效能当然是有 NVIDIA 显示卡会较好。安装步骤颇为简单,但因为模型都很大,需要预留 45GB 以上储存空间。
1. 安装 64-bit 版本 Git
Git 下载网址: 按此
2. Text generation web UI
Text generation web UI 与 Stable Diffusion WebUI 都是使用 Gradio 框架来建立的人工智能网页介面,所以操作和设定非常相似。事实上,作者 oobabooga 就是希望像 AUTOMATIC1111 一样建立一个通用的文章生成网页介面。oobabooga 提供了一个一键式安装程序 oobabooga-windows.zip
,方便大家安装介面。
下载一键式安装程序: oobabooga-windows.zip
3. 安装介面
解压下载回来的 oobabooga-windows.zip
之後会产生名为 oobabooga-windows
的文件夹,当中有多个 bat 批次档,首先点击 install.bat
先安装介面。
开启後程式会问大家有没有 NVIDIA 显示卡,有的话就输入 A
并按 Enter
以 GPU 运行,否则就输入 B
以 CPU 运行。然後程式就会开始下载 Python 3 虚拟环境、CUDA 模组等执行环境安装程式。由於容量达 17GB,需时十多分钟完成。
4. 安装 Facebook 模型
聊天机械人要有 LLM 模型才能运作,Text generation web UI 可以运行各种 LLaMA 模型。下一步就先装一个模型。执行 oobabooga-windows
文件夹的 download-model.bat
批次档,就会列出现时可供选用的模型。这里就选择 Facebook OPT 的 67 亿参数模型,输入 A
按 Enter
就会开始下载。由於容量超过 12GB,需要十多分钟完成。程式会自动将模型放到 oobabooga-windows\text-generation-webui\models\
文件夹内。
5. 安装 Vicuna-13B 模型
GPTQ 对应版本 Vicuna-13B 模型专案网站: Hugging Face
进入网站後,点击右边「⁝」按钮并选「Clone repository」,就会显示拷贝这个模型的指令。
按介面右边的「Copy」掣把指令拷贝下来。
然後在档案总管进入刚下载了 Facebook OPT 模型的 oobabooga-windows\text-generation-webui\models\
文件夹,在地址页输入 cmd
并按 Enter
,就能打开直接打开进入了该文件夹的命令列窗口。
在命令列窗口按 Ctrl+V
就能将刚才拷贝下来的指令贴上去。这时 Windows 会发出警告,只要按「仍要贴上」,并按一下 Enter
就能开始下载 Vicuna-13B 模型。
要留意这个模型超过 6GB,但不会像刚才下载 Facebook OPT 模型那样显示进度,命令列视窗会像死了一样,但其实一直在运作,需时近十分钟。打开 Task Manager 查看网络流量、记忆体用量和碟机的写入状况就会知道是否在工作。完成後,命令列窗口会重新显示提示符给你输入,这时就可以输入 exit
并按 Enter
来关闭命令列窗口。
完成後, oobabooga-windows\text-generation-webui\models\
文件夹里会多出一个容量近 7GB 的 vicuna-13b-GPTQ-4bit-128g
文件夹。
6. 修改 start-webui.bat
最後,在 oobabooga-windows\text-generation-webui\models\
文件夹里选择 start-webui.bat
批次档後右击,然後选择「Edit」(Windows 11 或需选择「Show more options」才会显示这选项),就会在《记事本》开启那档案。
在 call python server.py --auto-devices --cai-chat
一行最後加入 --wbits 4 --groupsize 128
,并将 --cai-chat
改为 --chat
,然後储存并关闭,就完成安装。
执行和调校
双击 start-webui.bat
批次档,就会启动「Text generation web UI」。
与 Stable Diffusion WebUI 不同,Text generation web UI 需要在启动时就选定 LLaMA 模型,输入模型的编号按 Enter 就能继续启动程序。这里就输入「2」以选用 Vicuna-13B 模型。
完成启动後命令列视窗会显示一个网址: http://127.0.0.1:7860
,按着 Ctrl 来点击它就能开启 Text generation web UI 网页介面。可以看到它的介面跟 ChatGPT 差不多,也可以使用中文来交谈。
「input」框下方有三种模式:cai-chat、chat 和 instruct,其中 cai-chat 将会被淘汰,今後应用 chat 作预设聊天介面。但用作 AI 编程的话,最好使用 instruct 模式,才可以正确显示程式码。
文字生成的效率方面,以小编的 RTX 4090 + 64GB RAM 算是顶配 PC,可以达到每秒 6-8 tokens 的速度,以一个人独享来说,略较 ChatGPT 快一点。
至於回答质素方面,小编试用了半天就觉得 Vicuna-13B 模型在创作故事和一般聊天方面有不错表现,对答流利并可维持角色性格。不过在翻译和编程方面就较差,英文翻译还可以,但日文翻译就有颇多错误。
网页有多个标签页,其中「Parameters」可以用来微调 LLaMA 模型的回答效果,例如「max_new_tokens」可以用来加长回答长度,不用经常用「continue」来催促继续,而「Generation parameters preset」就有一系列预设参数设定,可供大家试用看看回答的效果变化。大家可以参考下图的设定,看看是否合自己的需要。
不过大家要记住,这些参数会在重载网页时重置,需要重新设定。
深奥的角色扮演
Vicuna-13B 模型的强项是角色扮演聊天,在 Text generation web UI 有一个「Character」标签页,大家可以在当中设定角色的名称、欢迎语、角色的性格、交谈范例和照片,这些设定不是自我满足,是真的可以影响他/她的语气、回应的内容、用字和精确程度。而且同一个角色的对话会纪录下来,即使重启程式,仍会继续影响角色今後的对答。
Text generation web UI 将角色储存在 oobabooga-windows\text-generation-webui\characters\
文件夹内,每个角色包含两个档案,就是角色头像的 png 档和角色设定 yaml 档,两个档案必须用同一个档名来命名。文件夹里有一位 Example 角色 Chiharu Yamada 山田千春,大家可以参考她来制作自己的角色。
除了自己建立角色外,大家还可以加入 Discord 的 Pygmalion AI 伺服器 ,在「#bot-share」下载其他用户分享的角色。并可以透过 AI Character Editor 网站来编辑角色设定。
AI Character Editor 网站:按此
下载角色时留意要一同下载头像 png 档和设定 json 档。在 Text generation web UI 的 Character 页面有个「Upload character」标签页,分别将头像 png 档和设定 json 档抓放到相应的区域,按「Submit」掣即可将角色安装在 Text generation web UI 里备用。
在 Text generation 聊天页面底部有个 gallery 区域,可以直接在那里切换储存下来的角色。
比较可惜的是这些分享角色大多都是英语对答的,用中文交谈会出现古怪现象,例如不停自问自答。
实际试用後,虽然 Vicuna-13B 模型与 ChatGPT 还有一定差距,Text generation web UI 也有不少要补修的地方,不过在聊天和角色扮演上就有颇高水平,相信今後会有更多新的模型和针对特定用途优化的 LoRA 模型推出,可以丰富自建聊天机械人的功能,值得期待。