oobabooga-text-generation-webui可能是最好的语言模型启动器(包含手把手安装教程)

发布时间 2023-08-08 22:26:36作者: China Soft

https://www.bilibili.com/read/cv24006101/

引言:

问:oobabooga是什么?

oobabooga-text-generation-webui是一个用于运行类似Chatglm、RWKV-Raven、Vicuna、MOSS、LLaMA、llama.cpp、GPT-J、Pythia、OPT和GALACTICA等大型语言模型的Gradio Web用户界面。它的目标是成为文本生成的AUTOMATIC1111/stable-diffusion-webui。

这里是它的github链接:https://github.com/oobabooga/text-generation-webui

简单来说它就是个语言模型的启动器。

你可以加载几乎所有的主流模型,并在本地运行他们。语言模型能做什么,你就可以体验到什么,处理文本,个人管家,知识顾问,私人教学,这就是一个不联网的弱化版本的chatgpt,但不同于chatgpt的收费与对话审查限制,客制化的本地模型几乎提供了无限可能。(是的你完全可以训练出属于你自己的猫娘,或者体验各种奇怪内容,咳咳咳),同时你可以轻松的在huggingface找到十几种以上的模型,活跃的环境让小模型的发展迅速,几乎每周都有几个新模型出现,总有一个符合你的要求。

 

问:oobabooga-text-generation-webui的主要功能有哪些?

webui支持的功能非常多,大部分重点我已经用加粗标注了。
类似stable-diffusion的,用户友好型交互界面。
较为友善的一键安装模式。
模型兼容性极佳,主流模型都可以加载。
一键式模型切换能力,快速在多个语言模型之间切换。
自带人设管理,一键加载
类似于OpenAI的记事本模式交流界面。
用于对话和角色扮演的聊天模式
与Alpaca、Vicuna、Open Assistant、Dolly、Koala、ChatGLM、MOSS、RWKV-Raven、Galactica、StableLM、WizardLM、Baize、Ziya、Chinese-Vicuna、MPT、INCITE、Wizard Mega、KoAlpaca、Vigogne、Bactrian、h2o和OpenBuddy等各种格式兼容的指令模式
包括LLaVA和MiniGPT-4在内的多模态流程
用于GALACTICA的Markdown输出,包括LaTeX渲染
用于GPT-4chan的漂亮HTML输出
高级聊天功能(发送图片,获取带有TTS的音频响应)
非常高效的文本流处理
参数预设丰富
LLaMA模型支持
4-bitGPTQ模型支持
LoRA(加载和训练)
llama.cpp模型支持
RWKV模型支持
8-bit模式
模型层分布GPU、CPU和磁盘
CPU模式
FlexGen
DeepSpeed ZeRO-3
带流式传输和无流式传输的API

 


有关我制作的koishi插件的介绍,如果不知道koishi是什么的可以去这里查看:

https://koishi.chat/zh-CN/

简单介绍一下oobabooga-testbot插件:

oobabooga-testbot插件是一个基于oobabooga-text-generation-webui语言模型启动器的qq机器人插件,实现了一些基本的指令,让你可以在qq机器人上实现与语言模型的对话,不需要扛着电脑,有手机就ok。支持人设加载,vits语音回复,支持AI补充tag调用插件绘图等功能。

(毕竟谁不想要一个在线猫娘随时陪伴呢)

插件教程贴:https://forum.koishi.xyz/t/topic/2391

实际上本教程之前是在koishi论坛上发布的,考虑到大伙都不太了解oobabooga所以在这里重新制作一个教程贴,帮助大家安装。

 

 


目录:

第一部分oobabooga-text-generation-webui

1.oobabooga-text-generation-webui交互页面展示。

2.如何本地搭建(github一键安装,全程没遇到报错的情况)

3.如何本地搭建(github一键安装,依赖安装出现报错的情况)

4.如何本地搭建(github手动分步安装)

5.模型下载

6.oobabooga交互页面大致导览

7.为什么我推荐大家使用oobabooga-text-generation-webui。

第二部分oobabooga-testbot插件使用以及人设文档创建

1.插件安装

2.启用oobabooga的api调用

3.插件使用教程

4.建立自己的人设文档

 


第一部分oobabooga-text-generation-webui

1.oobabooga-text-generation-webui交互页面展示。

文本交流页面:

文本交流页面


人设创建页面:

人设创建页面
模型加载与选择界面:

模型加载与选择界面

 

2.如何本地搭建(全程没遇到报错的情况)

github上提供了两种搭建方式:

     一键安装包。

     分步手动安装。


其他途径搭建:

b站大佬 coyude 提供了一个一键解压安装的懒人包,但我并没有尝试过是否兼容插件。

https://www.bilibili.com/video/BV1tP411d7wo/

专栏地址:

https://www.bilibili.com/read/cv23495183?

b站大佬 AI斯基摩人 提供了一个详细的视频教程。

https://www.bilibili.com/video/BV1fP41127ra/?

 

本专栏将着重用细致的文字描述来帮助各位使用github上的一键安装包安装与分步手动搭建。

 


github一键安装流程

 

1.首先前往github主页。

地址:https://github.com/oobabooga/text-generation-webui

 

2.找到如下选项:


可以看到现在一键安装是支持Windows,Linux和MacOS的。


我们以Windows系统为例:

(注:接下来的全程都是在Windows10系统下的)

选择链接下载:

 

下载的应该是一个压缩包:


解压缩
这里是解压缩后的文件:

 

注意!请务必将文件放置在全英文路径下,并且不要包涵空格或者其他特殊符号

这里是一个例子:D:\oobabooga\oobabooga_windows

oobabooga本体大约会占用10g左右的磁盘空间,单个语言模型大小在10g左右,也有特别大的14b模型可以到29g以上,所以请确保你的磁盘空间至少有50g左右。加载模型的时候会将数据导入到运存中,所以你的磁盘读取速度越快越好,个人建议放在SSD中,可以显著加快加载速度。

特别注意:

接下来的步骤需要全程上网,才能正确安装,如果不会的话请百度,这里不多做赘述。

然后我们双击运行start_windows.bat

 

它会自动下载miniconda并且安装在当前目录下。

miniconda安装完成:


这里会让你选择你的GPU类型

A:NVIDIA ,N卡选A

B:AMD ,A卡选B

C:Apple M Series,苹果选C

D:没显卡,或者显卡太弱,用CPU跑模型的用户选D(会导致回复非常慢)

我这里本地是RTX3090显卡,所以我选A,输入A,然后回车继续。

 

然后它就会开始自动下载一堆东西,不需要进行操作。

 

这一步需要等待较长时间,取决于你的网速,请你耐心等待。

我这里等待了15分钟左右完成。

出现这个表示下载完成,开始解压安装。请继续等待。


出现这个说明开始安装依赖了。请继续等待。


这一步报错的概率非常大,如果出现红色报错,说明你依赖安装出现了问题。绝大部分安装问题都出在这里。详见下方的第二种方式。

 

出现以下提示:

 

恭喜你,你已经成功安装了oobabooga了。

 

现在的目录结构应该是这样的:

 

我们运行start_windows.bat,来测试启动oobabooga。

 

由于我们只安装了oobabooga,并没有下载任何模型,所以启动的时候会提示你选择模型下载。

你可以选择一个下载,但速度会比较慢,个人建议还是用idm直接去huggingface找到对应模型下载比较好。

接下来请跳转到下载模型部分

 

 

3.如何本地搭建(依赖安装出现报错的情况)

看起来你很不幸的遇到了报错,报错可能长得很不一样,但是解决方法都大同小异。

现在将以这种安装报错为例:


这代表依赖未完全下载,出现的原因一般是因为你的网络环境不稳定,可以的话请更换节点后再次运行安装程序,如果不行的话就请按照以下内容进行。

 

再次安装依然失败的情况:

如果依然失败请先关闭当前控制台,然后随便进入一个外国网址确定你的梯子没有问题后,再进行以下步骤。

进入根目录:

 

依赖安装错误这个问题一般发生在安装完成miniconda,并且成功git clone了github项目之后,这时你的miniconda一般是没有问题的,你的更目录应该和图片一样,存在一个叫做text-generation-webui的文件夹。

如果没有请你不要继续并前往私信或评论区提问。

 

确定文件存在后你可以继续操作了:

为了解决这个问题我们需要首先进入miniconda。

双击运行cmd_windows.bat文件

这时会弹出一个黑色的窗口:


输入:cd text-generation-webui

回车

输入: pip install -r requirements.txt

回车

这时程序应该开始安装了:


安装完成后oobabooga应该就可以正常运行了。

 

如果更加不幸的事情发生到你身上了,在安装过程中依然报错,类似这样:

 

请你继续以下步骤:

现在请你到更目录,进入text-generation-webui,找到requirements文件:

 

打开后,删除z这三行,并保存退出:

 

然后回到根目录,找到cmd_windows.bat,双击运行重新创建一个新的控制台:

依次输入并回车

pip install peft

pip install transformers

pip install accelerate

cd text-generation-webui

pip install -r requirements.txt

然后等待安装完成。

完成后,请回到根目录。


运行update_windows.bat来检查一遍所有依赖

如果正常完成:


那么你的oobabooga应该就可以正常工作了。

接下来请跳转到下载模型部分

如果还未解决问题,那么就请你私信up或者在评论区留言

 

 

 

4.如何本地搭建(github手动分步安装)

 

接下来我将会讲解github上分步手动搭建流程。

手动安装需要一些进阶的知识,所以我是假设你已经具备了这些知识的,所以教程会比较简单。

首先你需要安装Conda或者WSL

这里的话我就不具体讲解如何安装了,b站教程很多,大家自己学习一下就行。

 

以下我将会以windows系统,安装了conda虚拟环境的方式继续

进入你想要的安装oobabooga的目录

 


鼠标选择后编辑:


回车,你应该打开了一个cmd窗口:

 

首先创建虚拟环境:

conda create -n textgen python=3.10.9

激活conda:

conda activate textgen

 

然后根据你的系统,安装Pytorch

 

windows环境就是第一句:

pip install torch torchvision torchaudio

 

然后安装oobabooga

git clone https://github.com/oobabooga/text-generation-webui

 

cd进入文件夹

cd text-generation-webui

 

安装依赖

pip install -r requirements.txt

 

等待依赖跑完就算安装完成了。

更多细节请前往github页面:https://github.com/oobabooga/text-generation-webui

接下来请跳转到模型下载部分

如果出现报错

请尝试使用上一个方法中的出现报错的处理方式进行处理

如果依然不行可以选择在评论区提问,或者私信up。

 

 


5.模型下载

 

接下来我将简单介绍一下如何下载模型并在oobabooga内启动

我们先前往huggingface官网:https://huggingface.co/

 

 

我将以Chatglm模型作为例子。

搜索模型:

 

选择第一个:https://huggingface.co/THUDM/chatglm-6b

然后我们会来到这个界面:

 


接下来有两个选择,你可以使用oobabooga自带的下载器,下载模型,或者自己选择文件下载。

 

使用oobabooga内置下载器

优点:简单,不容易出错,模型文件格式肯定正确。

缺点:速度慢。

方法:我们首先点击这里:

 

然后我们回到这个界面:

 

选择L选项 Manually specify a Hugging Face model

 

然后我们把刚刚复制的内容粘贴进去

 

回车,它就会开始自动下载了。

下载目录为:\oobabooga_windows\text-generation-webui\models

 

文件夹里面就是下载的模型了。

这种方式只会出现在你没有任何模型的时候

如果你已经有模型了,然后仍然希望用oobabooga进行模型下载,那么可以转跳到交互页面大致导览的model选项卡介绍。

 

自己下载模型文件:

优点:速度快

缺点:得手动

方法:我们首先进入model存储目录

\oobabooga_windows\text-generation-webui\models

创建一个新的文件夹,比方说:

 

然后我们去到Chatglm的huggingface页面:

https://huggingface.co/THUDM/chatglm-6b

选择files:

 

把这里所有的文件都下载到刚刚创建的文件里面:

 

完成后的模型文件夹内部应该类似这样:

 

注意!

不同类型的模型有不同的模型格式,一般来说只要把huggingface里所有的文件都下载下来就行了。如果还有问题请加群询问。

 

接下来我们继续oobabooga的模型加载

你应该已经下载好了模型。

如果model文件夹下只有一个模型,那oobabooga会自动加载,如果有多个模型,像我这样,它就会跳出模型选择的页面:

 

 

现在我们以Vicuna-13b作为案例,来启动模型。

(为何不用Chatglm做例子是因为Chatglm需要额外安装一下icetk,稍后我会详细讲的)

(注意!请关闭clash,oobabooga与clash会冲突,导致页面可以启动但是无法与模型对话)

 

弹出

Running on local URL: http://127.0.0.1:7860

To create a public link, set share=True in launch().

就说明启动成功,然后和stable-diffusion一样,我们访问127.0.0.1:7860

就可以看到webui界面了:

 

 

 

 

接上面的oobabooga中使用Chatglm模型

我们再加载Chatglm模型的时候,会遇到缺少依赖的报错,一般来说是icetk:

(暂时没找到对应的图片)

为了解决这个问题,我们需要安装icetk。

 

首先我们来到oobabooga文件夹:

 

选择cmd_windows.bat运行

输入pip install icetk

回车运行

等待安装完成(如果报错可能是你没开上网)

然后返回oobabooga文件夹,找到webui.py文件:


右键用记事本打开:

向下翻到140-180行左右,找到“def run_model()”

在python sever.py后面

添加--trust-remote-code


保存并退出

然后重开oobabooga,你就应该可以加载Chatglm模型了。

如果遇到更多问题,请在评论区提问,或者私信up。

 

 

6.oobabooga交互页面大致导览

 

我会简单介绍一下oobabooga的界面选项,以及如何与模型对话和切换模型。

在页面顶端,我们可以看到这几个选项卡。

 

第一个是我们与模型对话的主要界面

第二个是人设/角色加载和设定界面

第三个是模型详细参数调节

第四个是模型切换,加载与下载界面

第五个是lora训练界面

第六个是webui的选项卡

 

我主要来介绍第一个与模型对话的主要界面和第四个模型切换,加载与下载界面

详细设定我就不讲了,大伙自己用翻译看一下就行。

 

Text generation界面

 

我们在input输入我们想要与模型对话的内容,然后使用黄色的generate按钮,就可以与模型对话了。下面的几个按钮,就是一些正常的聊天用的按钮,自己摸索一下就都明白了。

 

然后是这部分,这你有三个模式,基本上就是切换不同的对话框模式,这里展示的chat模式,选择了人设后会出现相对应的头像,更增加代入感:

 

然后是下面的chat style

 

这里个选项取决于你的模型支持什么样的chat style,一般来说oobabooga会自动帮你选择最佳的。

 

最下面是gallery

这个是用来加载角色的。oobabooga自带了一个example角色:

 

选中角色卡就可以加载。

 

 

与模型对话的主要界面介绍就到这里。

 

接下来是第四个模型切换,加载与下载界面

model界面

我们选择选项卡来到model:

 

我将会分区来进行详细说明:

左上角是模型选择界面,我们可以直接选择模型进行加载,右边是lora界面,同样可以选择加载,下面是Transformers模型的选项,可以选择限制模型占用的内存大小,右侧可以选择使用的模式:

 

这里是GPTQ模型使用的选项,一般来说oobabooga会自动选择合适的,但使用较新的模型的时候,你可能得自己选择对应的模式:

 

这部分是是否自动加载模型,就是你上面的选项选择模型后是否会自动加载。
下面是模型自动下载,和之前提到的oobabooga自带的下载器使用方式一样

只需要在下面的框中输入huggingface上的名称,然后点击download就可以自动下载模型:


这里是llama模型的选项卡:

 

这里是应用lora,加载模型,重载模型,保存模型设定的按钮:

 

 


对于oobabooga界面的介绍就到此为止了

除了我介绍的部分之外,oobabooga还提供非常多的各种类型的功能,同时和stable-diffusion一样,也支持插件安装,大家可以自行探索。

也可以在评论区留言或私信up讨论。

 

 


7.为什么我推荐大家使用oobabooga-text-generation-webui

这部分主要是我的主观想法,大伙就当做安利就行了。

我个人对于语言模型非常感兴趣,(主要是因为想要一个个人助理),从openai发布chatgpt开始我就开始广泛的关注小模型。然而初期各种模型对于我这种不太会编程的人而言门槛太高了,很多模型我都跑不起来。

而在大量关注小模型的时候,我注意到国外的小模型发展速度非常快,从RWKV,alpaca,Vicuna,到wizard,stableVicuna,小模型的迭代速度非常的快,几乎每隔几天就有一个新的模型出现,我很希望更多人能够参与到这场变革中来,oobabooga-text-generation-webui就是一个非常好的抓手。

oobabooga-text-generation-webui作为语言模型启动器,对于模型的支持范围可以说是最广的,同时高效的模型加载方式,很大程度上满足了我对于大量模型测试的需求。同时,自带的人设加载功能,也很好满足了我对于个性化的需求。

如果你也和我一样,对于小模型有很浓厚的兴趣,而且希望在模型发布的时候就能第一时间玩到,那我强烈推荐你使用。

 

 

第二部分插件使用以及人设文档创建

1.插件安装

在koishi的插件市场搜索oobabooga

 

 

点击添加就可以安装了

在插件配置页面进行配置即可正常使用:

 

 


2.oobabooga启用api服务

接下来我将讲解如何打开oobabooga的api选项,让插件可以调用本地的oobabooga。

我们来到oobabooga文件夹下,选中webui.py

向下找到140-180行

找到“def run_model()”

在python sever.py后面

添加--api


然后保存并关闭,正常启动webui

你可以在Interface mode选项卡中看到:

 

这样api服务就正常启动了,你的插件应该可以通过默认的url地址调用oobabooga了。

 

 

 

2.插件使用教程

截止到5月24日,插件版本号是1.2.0

插件提供了多样化的指令:

 


我们先来看看配置页面:

 

apiURL是用来填写你的oobabooga的api地址的。想要开启oobabooga的api,请看楼上。

 

用户使用逻辑如下:

首先我们先试用oob.list指令查看当前的人设

 

然后我们使用oob.load指令,加载我们想要使用的人设

 

在插件文件夹内,将会创建一个新的历史记录


然后我们才可以使用oob与模型进行对话

oob指令是基础指令,通过使用oob指令可以直接与模型对话

 

历史记录将会实时保存在对应文件内,同时historylimit将会限制上下文长度,具体取决于你的设置。

 

使用oob.undo指令,可以撤回刚刚的一个提问

 

使用oob.reset指令,可以重置当前会话的历史记录

 

使用oob.del指令,可以删除当前的会话,来加载新的人设。

 

oob.tag指令可以,让Ai帮助补充tag,进行绘图。

 

oob.check指令是一个检查指令,它会检查是是否已经存在会话了

 

现在的插件已经支持昵称与@唤醒

 

 

 


4.建立自己的人设文档

请注意,人设文档完全在本地读取和保存,每次插件更新都会导致其清空,请注意自己留存备份。

首先我们来到

koishi-plugin-oobabooga-testbot\lib\characters

文件夹下

 

使用记事本打开任意一个人设文件,你会发现人设文件的格式都是类似的。

 

人设文件由两部分组成:

基础人设+示例对话

 

人设文件实际上是以数组的形式存放的,这里是一个比较好理解的例子:

[“Hello”,“Hello”]

这样就组成了一组对话。

 

但我们的人设文件还要再稍微复杂一些,你可以看到,我们首先给出了一段人设:

“你是人工智能语言模型,你将会用中文回复,你将作为助手,给出有帮助且友善的回复。你只需要作为助手回复。”

 

然后在标准的对话例子中增加了开头结尾,这里是一个例子:

[“You: ||Hello||”,“Assistant: ||Hello||”]

 

这是为了让模型更好的认识到哪些是人设,哪些是示例对话。同时规范模型的返回格式,以方便我们后续的处理。

请注意你的人设文件名称:

 

这是Aqua人设的内部,你可以看到这里的会话格式变成了:

[“You: ||Hello||”,“Aqua: ||Hello||”]

 

这是因为插件会自动识别人设文件的名称,让模型扮演角色,这样可以让模型的回复更加符合人设。

现在你已经大致了解了人设文件的格式了,你可以尝试性的创建一个自己的人设了。

进一步讨论请私信up或者在评论区讨论

 

一些想说的话

各位看官如果能坚持看到这里,那真是太了不起了,能忍受我这么长的没有一点乐趣的教程。好累,一边写论文,一边写插件,一边还在写教程,感觉身体被掏空。但各位看官如果能从我的教程中学到点什么,或者哪怕是获得一点启发,我都已经非常高兴了。希望大家能够愉快的使用oobabooga-text-generation-webui,在语言模型快速发展的现在,大家能够更得上时代的步伐,一起体验到小模型给我们带来的便利。

——smzh敬上 作者:_Smzh_ https://www.bilibili.com/read/cv24006101/ 出处:bilibili