使用自托管模型
本指南基于作者的个人经验和知识,并非绝对真理。所有的言论都应该持保留态度。如果您有任何更正或建议,请通过 Discord 联系我们或发送 PR 至 SillyTavern 文档库.
简介
本指南旨在帮助您设置使用 SillyTavern 和在您的 PC 上运行的本地 AI(我们将从现在开始使用正确的术语并将其称为 LLM)。在向人们提出技术支持问题之前请先阅读此内容。
最好的大型语言模型是什么?
这个问题无法回答,因为没有标准的“最佳”尺度。社区在 Reddit 和 Discord 上有足够的资源和讨论,至少可以就什么是首选/首选模型形成一些意见。您的里程可能会有所不同。
最好的配置是什么?
如果有最好的或简单的设置,是否还需要进行配置?最好的配置就是适合您的配置。这是一个反复试验的过程。
硬件要求和方向
这是一个复杂的主题,因此我将坚持要点并进行概括。
- 您可以从互联网上下载数以千计的免费法学硕士,类似于稳定扩散拥有大量用于生成图像的模型。
- 运行未经修改的 LLM 需要具有大量 VRAM(GPU 内存)的巨型 GPU。比你拥有的还要多。
- 通过使用量化技术(例如 GPTQ 或 AWQ)压缩模型,可以减少 VRAM 要求。这使得模型的能力稍差,但大大降低了运行它的 VRAM 要求。突然之间,拥有 3080 等游戏 GPU 的用户可以运行 13B 型号。尽管它不如非量化模型,但仍然不错。
- 它变得更好:还存在一种称为 GGUF(以前称为 GGML)的模型格式和量化,它已成为没有巨型 GPU 的普通人的首选格式。这使您可以在没有 GPU 的情况下使用法学硕士。它只会使用 CPU 和 RAM。这比使用 GPTQ/AWQ 在 GPU 上运行 LLM 慢得多(可能是 15 倍),尤其是在提示词处理期间,但模型的能力同样好。然后,GGUF 创建者通过添加一个配置选项进一步优化 GGUF,该配置选项允许拥有游戏级 GPU 的用户将部分模型卸载到 GPU,从而允许他们以 GPU 速度运行部分模型(请注意,这不会降低 RAM 要求,只会提高生成速度)。
- 模型有不同的大小,根据训练的参数数量来命名。你会看到诸如 7B、13B、30B、70B 等名称。你可以将这些视为模型的大脑大小。 13B 模型将比同系列模型中的 7B 模型更强大:它们接受相同数据的训练,但更大的大脑可以更好地保留知识并更连贯地思考。更大的型号还需要更多的 VRAM/RAM。
- 量化有多种程度(8 位、5 位、4 位等)。越低,模型性能下降越多,但硬件要求也越低。因此,即使硬件很差,您也可以运行所需模型的 4 位版本。甚至还有 3 位和 2 位量化,但在这一点上,你已经是死马了。还有一种名为 k_s、k_m、k_l 等的进一步量化子类型。k_m 比 k_s 更好,但需要更多资源。
- 上下文大小(在模型不删除部分内容的情况下对话可以持续多长时间)也会影响 VRAM/RAM 要求。值得庆幸的是,这是一个可配置的设置,允许您使用较小的上下文来减少 VRAM/RAM 要求。 (注:基于 Llama2 的模型的上下文大小为 4k。Mistral 宣传为 8k,但实际上是 4k。)
- 2023 年的某个时候,NVIDIA 更改了 GPU 驱动程序,这样,如果您需要的 VRAM 多于 GPU 的 VRAM,任务不会崩溃,而是会开始使用常规 RAM 作为后备。这会破坏 LLM 的写作速度,但该模型仍然可以工作并提供相同质量的输出。值得庆幸的是,这种行为 可以禁用.
考虑到上述所有因素,硬件要求和性能完全取决于模型系列、模型类型、模型大小、量化方法等。
模型尺寸计算器
您可以使用 Nyx 的模型尺寸计算器 确定您需要多少 RAM/VRAM。
请记住,您想要运行适合您记忆的最大、量化最少的模型,即不会导致 磁盘交换.
下载法学硕士
首先,您需要下载 LLM。查找和下载法学硕士最常见的地方是 HuggingFace。有数千种型号可供选择。查找 GGUF 模型的一个好方法是检查 bartowski 的帐户页面: https://huggingface.co/bartowski。如果您不需要 GGUF,他会链接原始模型页面,您可能会在其中找到同一模型的其他格式。
在给定模型的页面上,您会发现一大堆文件。
- 您可能不需要全部!对于 GGUF,您只需要 .gguf 模型文件(通常为 4-11GB)。如果您发现多个大文件,通常都是同一模型的不同量化,您只需选择一个即可。
- 对于 .safetensors 文件(可以是量化或未量化的 GPTQ 或 AWQ 或 HF),如果您在文件名中看到数字序列,如 model-00001-of-00003.safetensors,那么您需要所有 3 个 .safetensors 文件 + 存储库中的所有其他文件(标记器、配置等)来获取完整模型。
- 截至 2024 年 1 月,Mixtral MOE 8x7B 被广泛认为是当地法学硕士的最先进技术。如果你有 32GB RAM 来运行它,一定要尝试一下。如果您的 RAM 小于 32GB,请使用 Kunoichi-DPO-v2-7B,尽管它的大小非常出色。
下载 Kunoichi-DPO-v2-7B 的演练
我们将在本指南的其余部分使用 Kunoichi-DPO-v2-7B 模型。这是一款基于 Mistral 7B 的出色型号,仅需要 7GB RAM,并且性能远超其重量。注意:Kunoichi 使用羊驼提示。
- 前往 https://huggingface.co/brittlewis12/Kunoichi-DPO-v2-7B-GGUF
- 单击“文件和版本”。您将看到几个文件的列表。这些都是相同的模型,但提供不同的量化选项。单击文件“kunoichi-dpo-v2-7b.Q6_K.gguf”,它为我们提供了 6 位量化。
- 单击“下载”按钮。您的下载应该开始。
如何识别模型类型
像 TheBloke 这样的优秀模型上传者会给出描述性名称。但如果他们不这样做:
- 文件名以 .gguf 结尾:GGUF CPU 型号(废话)
- 文件名以 .safetensors 结尾:可以是未量化的、或 HF 量化的、或 GPTQ 或 AWQ
- 文件名是 pytorch-***.bin:与上面相同,但这是一种较旧的模型文件格式,允许模型在加载模型时执行任意 Python 脚本,并且被认为是不安全的。如果您信任模型创建者或者绝望,您仍然可以使用它,但如果可以选择,请选择 .safetensors。
- config.json 存在吗?看看它是否有 quant_method。
- q4表示4位量化,q5表示5位量化,依此类推
- 你看到像 -16k 这样的数字吗?这是增加的上下文大小(即,在模型忘记聊天的开始之前您的对话可以持续多长时间)!请注意,较高的上下文大小需要更多的 VRAM。
安装 LLM 服务器:Oobabooga 或 KoboldAI
现在 LLM 在您的 PC 上,我们需要下载一个工具,充当 SillyTavern 和模型之间的中间人:它将加载模型,并将其功能公开为 SillyTavern 可以与之通信的本地 HTTP Web API,就像 SillyTavern 与 OpenAI GPT 或 Claude 等付费 Web 服务通信一样。您使用的工具应该是 KoboldAI 或 Oobabooga(或其他兼容工具)。
本指南涵盖了这两个选项,您只需要一个。
如果您在 Docker 上托管 SillyTavern,请使用 http://host.docker.internal:\<端口> 而不是 http://127.0.0.1:\<端口>。这是因为 SillyTavern 从 Docker 容器中运行的服务器连接到 API 端点。 Docker 的网络堆栈与主机的网络堆栈是分开的,因此环回接口不共享。
下载并使用KoboldCpp(无需安装,GGUF型号)
- 参观 https://koboldai.org/cpp 您将在其中看到最新版本以及可以下载的各种文件。 在撰写本文时,他们列出的最新 CUDA 版本是 cu12,它在现代 Nvidia GPU 上运行效果最佳,如果您有较旧的 GPU 或不同品牌,则可以使用常规的 koboldcpp.exe。如果您有旧的 CPU,当您尝试加载模型时,KoboldCpp 可能会崩溃,在这种情况下,请尝试 _oldcpu 版本,看看它是否可以解决您的问题。
- KoboldCpp 不需要安装,一旦启动 KoboldCpp,您将立即能够使用模型字段旁边的浏览按钮选择 GGUF 模型,例如上面链接的模型。
- 默认情况下,KoboldCpp 最多在 4K 上下文中运行,即使您在 SillyTavern 中将其设置得更高,如果您希望在更高的上下文中运行模型,请确保在启动模型之前调整此屏幕上的上下文滑块。请记住,更多的上下文大小意味着更高的(视频)内存要求,如果您将其设置得太高或加载对于您的系统来说太大的模型,KoboldCpp 将自动开始使用您的 CPU 来处理它无法适合您的 GPU 的层,这会慢得多。
- 单击“启动”,如果一切顺利,将使用 KoboldAI Lite 打开一个新网页,您可以在其中测试一切是否正常工作。
- 打开 SillyTavern 并单击 API 连接(顶部栏中的第二个按钮)
- 将 API 设置为文本补全,将 API 类型设置为 KoboldCpp。
- 将服务器 URL 设置为 http://127.0.0.1:5001/ 或 KoboldCpp 为您提供的链接,以防它不在同一系统上运行(您可以激活 KoboldCpp 的远程隧道模式以获得可从任何地方访问的链接)。
- 单击“连接”。它应该成功连接并检测到 kunoichi-dpo-v2-7b.Q6_K.gguf 作为模型。
- 与角色聊天以测试其是否有效。
优化 KoboldCpp 速度的技巧
- Flash Attention 将有助于减少内存需求,它可以更快或更慢,具体取决于您的系统,并且允许您在 GPU 上安装比默认值更多的层。
- KoboldCpp 在猜测层时会为其他软件留出一些空间以防止出现问题,如果您打开的程序很少并且无法将模型完全放入 GPU 中,您可以添加一些额外的层。
- 如果模型在上下文大小上使用了太多内存,您可以通过量化 KV 来减少内存。这会降低输出质量,但可以帮助您在 GPU 上放置更多层。为此,请转到 KoboldCpp 中的 Token 选项卡,然后禁用上下文转移并启用 Flash Attention。这将解锁量化 KV 缓存滑块,数字越低意味着模型的内存/智能越少。
- 在速度较慢的系统上运行 KoboldCpp 需要很长时间才能处理提示词?当您避免使用 Lorebooks、随机化或其他动态更改输入的功能时,上下文转换效果最佳。启用上下文转换 KoboldCpp 将帮助您避免长时间的重新处理时间。
安装 Oobaboga
注释
根据您安装 Oobabooga 的方式,文件路径可能略有不同;即
/text-generation-webui/user_data如果您通过 git clone 安装,并且/text-generation-webui-main/user_data如果您使用 .zip 方法。
这是更正确/防伪的安装过程:
- 克隆 https://github.com/oobabooga/text-generation-webui (或者在浏览器中将其存储库下载为 .zip,然后解压)
- 运行
start_windows.bat或者无论你的操作系统是什么 - 当系统询问时,选择您的 GPU 类型。即使您打算使用 GGUF/CPU,如果您的 GPU 在列表中,请立即选择它,因为它会让您选择使用稍后称为 GPU 分片的速度优化(无需从头开始重新安装)。如果您没有游戏级 dGPU(NVIDIA、AMD),请选择“无”。
- 等待安装完成
- 将 kunoichi-dpo-v2-7b.Q6_K.gguf 放入
text-generation-webui/user_data/models - 打开
text-generation-webui/user_data/CMD_FLAGS.txt,删除里面的所有内容并写入:--api - 重新启动 Oobaboga
- 参观 http://127.0.0.1:5000/docs。它会加载 FastAPI 页面吗?如果没有,你就在某个地方搞砸了。
在 Oobaboga 中加载我们的模型
- 打开 http://127.0.0.1:7860/ 在你的浏览器中
- 单击模型选项卡
- 在下拉列表中,选择我们的 Kunoichi DPO v2 模型。它应该自动选择 llama.cpp 加载器。
- (可选)我们之前多次提到“GPU 卸载”:这是本页上的 n-gpu-layers 设置。如果您想使用它,请在加载模型之前设置一个值。作为基本参考,对于 13B 及更低型号,将其设置为 30 使用略低于 6GB VRAM。 (随模型架构和尺寸的不同而变化)
- 单击加载
配置 SillyTavern 与 Oobabooga 对话
- 单击 API 连接(顶部栏中的第二个按钮)
- 将 API 设置为文本补全
- 将 API 类型设置为默认值 (Oobabooga)
- 将服务器 URL 设置为 http://127.0.0.1:5000/
- 单击“连接”。它应该成功连接并检测到 kunoichi-dpo-v2-7b.Q6_K.gguf 作为模型。
- 与角色聊天以测试其是否有效
结论
恭喜,您现在应该拥有一名在当地工作的法学硕士。