I 卡也要炼!本地运行 KoboldCpp & SillyTavern

· 5 min

从 Mistral 7B 发布我就想试试了,直到现在。

准备

前篇我在自己的便携 Arch Linux 系统上安装了 Python、Intel Compute Runtime 和 Intel oneAPI Basekit,本文继续复用上述环境。

再提一嘴我目前的硬件配置:

  • CPU: Intel Core i3-12100
    • 最便宜的 12 代核显款
  • RAM: 64GB DDR4-3200 (32GB*2)
    • 内存都这么便宜了。没理由不堆满,不是吗?
  • GPU 0: Intel UHD Graphics 730
    • 核显。本来想体验一下 DeepLink,但是发现并没有什么用
  • GPU 1: Intel Arc A770 Graphics 16GB
    • 玩游戏和跑 ML 的主力卡

如果不打算玩 SteamVR 游戏、不满足老旧 Tesla 计算卡的性能损失、会折腾、预算不太充足,那这套配置是很值得推荐的。

KoboldCpp

KoboldCpp 支持 GGUF 模型,并且有 aur 包可以用… 等等,都过时半个月了。

希望之后可以更新吧。总之先安装旧版本

koboldcpp-* 有四个包,分别是:仅 CPU 的 -cpu、OpenCL 的 -clblast、CUDA 的 -cublas 和 ROCm 的 -hipbias

这里并没有专用于 Intel GPU 的包,所以我安装 koboldcpp-clblast

paru -S koboldcpp-clblast clinfo customtkinter

然后运行:

clinfo --list # 获取 platform_id 和 device_id
# Platform #0: Intel(R) FPGA Emulation Platform for OpenCL(TM)
#  `-- Device #0: Intel(R) FPGA Emulation Device
# Platform #1: Intel(R) OpenCL
#  `-- Device #0: 12th Gen Intel(R) Core(TM) i3-12100
# Platform #2: Intel(R) OpenCL Graphics
#  `-- Device #0: Intel(R) Arc(TM) A770 Graphics
# Platform #3: Intel(R) OpenCL Graphics
#  `-- Device #0: Intel(R) UHD Graphics 730
# 可以看到我的 A770 在 Platform #2 Device #0,所以在 --useclblast 后面写 2 0
# 注意:运行 `source /opt/intel/oneapi/setvars.sh` 之后才会出现 Intel FPGA Emulation Device 和 CPU,所以这两个 ID 可能会有所变化
 
koboldcpp --useclblast 2 0 --gpulayers 18 --model /home/nous-hermes-2-mixtral-8x7b-dpo.Q4_K_M.gguf
# --gpulayers 根据模型自行填写
# 对于 Mixtral 8x7B,我的 A770 可以设置为 18 层
# 对于一般 7B 模型,设置为 33 层基本是没有问题的
# --model 即为模型文件路径,不能是相对路径

等模型加载完,就可以连接 API 了。

SillyTavern

git clone https://github.com/SillyTavern/SillyTavern -b staging
cd SillyTavern

然后 ./start.sh… 怎么又是脚本?

这是我熟悉的 node 项目,直接安装并运行它吧。

paru -S nodejs npm
npm install # 如果你安装了 pnpm,也可以使用 pnpm install
node server.js

现在进入 http://localhost:8000 会看到 SillyTavern 界面。

首先设置语言并连接 API:

没写完,TODO

SillyTavern Extras

ST-Extras 不支持 IPEX,所以只能使用 CPU。

git clone https://github.com/SillyTavern/SillyTavern-extras
cd SillyTavern-extras
# pip install -r requirements-silicon.txt

没写完,TODO

后记

总觉得这种环境搭建的文章和炼丹还是有点出入,不太符合标题。

所以下一篇系列文章我会尝试基于 OpenPipe/mistral-ft-optimized-1227 微调一个新模型。