大家好,注册张大妈很久了,但是一直潜水,白嫖了大佬们无数作业。

今年以来人工智能很火,本菜鸟也给 NAS 加了魔改2080ti 22G,尝试了在unraid上部署了stable diffusion和text generation WebUI。

stable diffusion WebUI大家已经很熟悉了。text generation WebUI则是LLM(大语言模型)领域的"stable diffusion WebUI",可以很方便的运行各种开源大语言模型,比如chatGLM2,Llama2等等。windows和linux平台下已经有不少大佬开发了一键启动器,unraid也可以通过虚拟机来运行,但我更喜欢以docker化的方式来部署,这样硬件占用小,也更加灵活,并且可以通过异地组网或 dd ns的方式远程访问一个完全私有且本地化部署的“GPT”!它还支持各种api和插件,来实现不同功能,比如搭配long-chain和闻达知识库来搭建个人智能知识库,搭配sider来搭建个人AI助理,等等!

stable diffusion在unraid上的部署已经有不少大佬写了教程,text generation WebUI目前在中文互联网似乎没看到unraid下的部署教程。

于是简单记录一下自己在unraid系统下通过docker部署text generation WebUI的过程,算是对众位大佬和unraid用户的一点微小回馈。文笔不是很好,所有也就不BB了,咱们直接上干货。

(以下部署需要magic加持,如果是使用国内源的朋友,请按自己设置的源进行操作。)

(该镜像有 CPU 分支,但本篇作业基于N卡,如果是希望基于CPU部署的朋友可以参考作者的github项目主页说明自行摸索)

(请提前安装nvidia driver、nvidia-smi)

dock镜像:atinoda/text-generation-webui:default

dockhub排行第一的镜像就是,注意作者推荐的tag是default(还有个default-nightly,这个类似于开发版或者尝鲜版) dockhub排行第一的镜像就是,注意作者推荐的tag是default(还有个default-nightly,这个类似于开发版或者尝鲜版)

点击安装,在弹出的对话框选择“是” 点击安装,在弹出的对话框选择“是”

然后经过一段时间的耐心等待,镜像下载完毕,进入docker部署。

以下是抄作业环节:

额外参数: --runtime=nvidia

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

unraid自动CA化后只有3个端口选项,默认是5000、5005、7860,分别对应API、Steaming以及最重要的WebUI端口。这几个可以不需要动。

接下来新建选项(划重点:可以抄作业了!!):

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

1、新建PUID,PGID(可选,个人习惯,不喜欢也可以不建这两项)

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型! UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

uid,gid可以在这里看:

输入“id 用户名” 来查看用户名对应的uid,gid。 输入“id 用户名” 来查看用户名对应的uid,gid。

2、新建变量NVIDIA_VISIBLE_DEVICES(镜像运行环境其实自带了这个变量,默认为all,即允许调用任意nvidia GPU。这里把它独立出来是因为本菜鸟上了两张2080ti,方便指定硬件。)

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

3、最关键的一步!!新建变量EXTRA_LAUNCH_ARGS,最少填入--listen,否则无法访问WebUI!!

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

其他可选项如图,关于这些选项的详细解释,可以参阅这篇博客:http://blog.csdn.net/zhongguobaozi/article/details/132022904。在此感谢原作者!

5、剩下的就是新建各项目录映射,容器路径不可更改, 主机 路径则对应到你需要映射的目录。例如:

/app/characters - /mnt/user/appdata/text-generation-webui-docker/characters/

需要映射的目录容器路径(名称随意,你也可以抄作业):

/app/charaters /app/charaters /app/loras /app/loras /app/models /app/models /app/presets /app/presets /app/prompts /app/prompts /app/training /app/training /app/extensions /app/extensions

最后点击应用进行部署。

部署后查看日志,发现有报错-“文件夹不存在”:

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

到主机目录下找到training文件夹,在下面建两个子文件夹:

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

搞定,这下没有报错了!

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

将下载的LLM放入主机目录下的models文件夹内

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

打开WEBUI,点上方'Model',刷新模型列表,选择LLM模型,调整载入选项,点‘Load’,载入模型。

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型! VRAM拉满,选择4bit量化还是8bit量化。量化bit越低,显存需求越小,运行速度越快,但精度也越低。反之则显存需求越大,速度越慢,但模型精度越高,模型回答的质量也越高。 VRAM拉满,选择4bit量化还是8bit量化。量化bit越低,显存需求越小,运行速度越快,但精度也越低。反之则显存需求越大,速度越慢,但模型精度越高,模型回答的质量也越高。 看到这个就代表模型载入成功了 看到这个就代表模型载入成功了

接下来点击左上角‘Chat’返回对话界面,看看会发生什么?

UNRAID菜鸟作业:docker部署Text generation WebUI,玩转开源大语言模型!

哈哈,搞定!

PS:

关于text generation WebUI的使用方法和设置细节,可以参考上面那篇博客和以下这位B站up主(B站ID: 热爱生活的小鲍 )的视频: