使用自托管模型

中文译稿 · 由官方原文机器翻译,尚未逐句校对。对照原文 ↗

本指南基于作者的个人经验和知识,并非绝对真理。所有的言论都应该持保留态度。如果您有任何更正或建议,请通过 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型号)

  1. 参观 https://koboldai.org/cpp 您将在其中看到最新版本以及可以下载的各种文件。 在撰写本文时,他们列出的最新 CUDA 版本是 cu12,它在现代 Nvidia GPU 上运行效果最佳,如果您有较旧的 GPU 或不同品牌,则可以使用常规的 koboldcpp.exe。如果您有旧的 CPU,当您尝试加载模型时,KoboldCpp 可能会崩溃,在这种情况下,请尝试 _oldcpu 版本,看看它是否可以解决您的问题。
  2. KoboldCpp 不需要安装,一旦启动 KoboldCpp,您将立即能够使用模型字段旁边的浏览按钮选择 GGUF 模型,例如上面链接的模型。
  3. 默认情况下,KoboldCpp 最多在 4K 上下文中运行,即使您在 SillyTavern 中将其设置得更高,如果您希望在更高的上下文中运行模型,请确保在启动模型之前调整此屏幕上的上下文滑块。请记住,更多的上下文大小意味着更高的(视频)内存要求,如果您将其设置得太高或加载对于您的系统来说太大的模型,KoboldCpp 将自动开始使用您的 CPU 来处理它无法适合您的 GPU 的层,这会慢得多。
  4. 单击“启动”,如果一切顺利,将使用 KoboldAI Lite 打开一个新网页,您可以在其中测试一切是否正常工作。
  5. 打开 SillyTavern 并单击 API 连接(顶部栏中的第二个按钮)
  6. 将 API 设置为文本补全,将 API 类型设置为 KoboldCpp。
  7. 将服务器 URL 设置为 http://127.0.0.1:5001/ 或 KoboldCpp 为您提供的链接,以防它不在同一系统上运行(您可以激活 KoboldCpp 的远程隧道模式以获得可从任何地方访问的链接)。
  8. 单击“连接”。它应该成功连接并检测到 kunoichi-dpo-v2-7b.Q6_K.gguf 作为模型。
  9. 与角色聊天以测试其是否有效。

优化 KoboldCpp 速度的技巧

  1. Flash Attention 将有助于减少内存需求,它可以更快或更慢,具体取决于您的系统,并且允许您在 GPU 上安装比默认值更多的层。
  2. KoboldCpp 在猜测层时会为其他软件留出一些空间以防止出现问题,如果您打开的程序很少并且无法将模型完全放入 GPU 中,您可以添加一些额外的层。
  3. 如果模型在上下文大小上使用了太多内存,您可以通过量化 KV 来减少内存。这会降低输出质量,但可以帮助您在 GPU 上放置更多层。为此,请转到 KoboldCpp 中的 Token 选项卡,然后禁用上下文转移并启用 Flash Attention。这将解锁量化 KV 缓存滑块,数字越低意味着模型的内存/智能越少。
  4. 在速度较慢的系统上运行 KoboldCpp 需要很长时间才能处理提示词?当您避免使用 Lorebooks、随机化或其他动态更改输入的功能时,上下文转换效果最佳。启用上下文转换 KoboldCpp 将帮助您避免长时间的重新处理时间。

安装 Oobaboga

注释

根据您安装 Oobabooga 的方式,文件路径可能略有不同;即 /text-generation-webui/user_data 如果您通过 git clone 安装,并且 /text-generation-webui-main/user_data 如果您使用 .zip 方法。

这是更正确/防伪的安装过程:

  1. 克隆 https://github.com/oobabooga/text-generation-webui (或者在浏览器中将其存储库下载为 .zip,然后解压)
  2. 运行 start_windows.bat 或者无论你的操作系统是什么
  3. 当系统询问时,选择您的 GPU 类型。即使您打算使用 GGUF/CPU,如果您的 GPU 在列表中,请立即选择它,因为它会让您选择使用稍后称为 GPU 分片的速度优化(无需从头开始重新安装)。如果您没有游戏级 dGPU(NVIDIA、AMD),请选择“无”。
  4. 等待安装完成
  5. 将 kunoichi-dpo-v2-7b.Q6_K.gguf 放入 text-generation-webui/user_data/models
  6. 打开 text-generation-webui/user_data/CMD_FLAGS.txt,删除里面的所有内容并写入: --api
  7. 重新启动 Oobaboga
  8. 参观 http://127.0.0.1:5000/docs。它会加载 FastAPI 页面吗?如果没有,你就在某个地方搞砸了。

在 Oobaboga 中加载我们的模型

  1. 打开 http://127.0.0.1:7860/ 在你的浏览器中
  2. 单击模型选项卡
  3. 在下拉列表中,选择我们的 Kunoichi DPO v2 模型。它应该自动选择 llama.cpp 加载器。
  4. (可选)我们之前多次提到“GPU 卸载”:这是本页上的 n-gpu-layers 设置。如果您想使用它,请在加载模型之前设置一个值。作为基本参考,对于 13B 及更低型号,将其设置为 30 使用略低于 6GB VRAM。 (随模型架构和尺寸的不同而变化)
  5. 单击加载

配置 SillyTavern 与 Oobabooga 对话

  1. 单击 API 连接(顶部栏中的第二个按钮)
  2. 将 API 设置为文本补全
  3. 将 API 类型设置为默认值 (Oobabooga)
  4. 将服务器 URL 设置为 http://127.0.0.1:5000/
  5. 单击“连接”。它应该成功连接并检测到 kunoichi-dpo-v2-7b.Q6_K.gguf 作为模型。
  6. 与角色聊天以测试其是否有效

结论

恭喜,您现在应该拥有一名在当地工作的法学硕士。