前言
本文将演示如何在笔记本上运行千亿级模型,后端 Koboldcpp 运行在 Ubuntu ,前端界面使用安卓手机通过 Termux 且使用 SillyTavern 举行连接,模型使用 104B 的 Command R Plus 的 Q4KM 量化,以及 123B 的 Mistral Large 2 的 Q3KM 量化作为演示,两者模型的性能强悍,中文表现良好,可对抗早期的 GPT-4-0314
配置信息
笔记本型号: R7000P2021H
CPU: R5800H
显卡: 3060 6G 130w
无线网卡: AX210
内存: 三星64G(32Gx2双通道) 3200Hz
硬盘: 原装镁光512G+三星980 500G
体系: Ubuntu Server 22.04
Ubuntu 部署及常用依赖
关于 Ubuntu Server 的安装,可参考本人上篇的内容
实机演示联想拯救者R7000P安装Ubuntu Server与Win10双体系
并确保常用依赖已安装
- sudo apt install vim
- sudo apt install git
- sudo apt install gcc
- sudo apt install g++
- sudo apt install wget
- sudo apt install make
复制代码 Kobold 后端下载
首先需要获取 koboldcpp 项目,在常用目录下创建 kobold 文件夹便于后续管理
- sudo mkdir kobold
- cd kobold
复制代码 获取 koboldcpp ,这里下载 cuda12 的 1.67 版本
- wget https://github.com/LostRuins/koboldcpp/releases/download/v1.67/koboldcpp-linux-x64-cuda1210
- mv koboldcpp-linux-x64-cuda1210 kobold
- chmod +x kobold
复制代码 LLM模型下载
随后下载模型,模型链接已在前言中给出,64G 内存下载前言对应的版本刚好能跑,本人因为是双体系,因此模型本来路径是在 Win 盘符下,假如是单体系或其他情况,同样使用 wget 来获取,这里下载 Command R Plus ,因为模型很大 60G 左右,因此需要等很久,请耐心等候,为了便于管理,将其放在了 ./kobold/models 目录下
然后下载对应的版本
- wget https://huggingface.co/pmysl/c4ai-command-r-plus-GGUF/resolve/main/command-r-plus-Q4_K_M-00001-of-00002.gguf?download=true
- wget https://huggingface.co/pmysl/c4ai-command-r-plus-GGUF/resolve/main/command-r-plus-Q4_K_M-00002-of-00002.gguf?download=true
复制代码 模型归并方法
目前 hugging face 的 GGUF 模型有两种格式,归并方式也不同,一种是本文中 Command R Plus 的 00001-of-00002.gguf 格式,一种是 Mistral Large 2 的非 gguf 后缀的文件名格式,对于非 gguf 后缀的文件名,使用如下下令即可归并
- cat Mistral-Large-Instruct-2407.Q4_K_M.gguf.part*of2 > Mistral-Large-Instruct-2407.Q4_K_M.gguf
复制代码 对于kobold来说,00001-of-00002.gguf 格式不需要归并也能运行,但是有些后端如 ollama 则需要完整的 gguf 格式,归并方式如下
获取 llama.cpp ,在用户目录安装
- git clone https://github.com/ggerganov/llama.cpp.git
- mv llama.cpp llama
复制代码 随后进入并编译
使用 llama-gguf-split 来归并,使用如下下令
- ./llama-gguf-split --merge <model-first-part> <model-name>
复制代码 <model-first-part> 改为第一个模型部分的路径,即 00001-of-00002.gguf 的路径,<model-name> 改为最终的模型名,假如模型在 llama 目录下,即为
- ./llama-gguf-split --merge command-r-plus-Q4_K_M-00001-of-00002.gguf command-r-plus-Q4_K_M.gguf
复制代码 随后删除对应的 split 模型
- rm -rf command-r-plus-Q4_K_M-00001-of-00002.gguf
- rm -rf command-r-plus-Q4_K_M-00002-of-00002.gguf
复制代码 试运行
归并完之后即可运行,首先在局域网试运行,查看本地局域网 IP ,本机为 192.168.47.67
本人模型路径为 Win 下的 D 盘挂载点,假如是单体系则是本文的 models 目录,在 kobold 下输入如下试运行
- ./kobold --model /mnt/windows/AI/models/command-r-plus-Q4_K_M.gguf --context 4096
复制代码 出现如下提示即成功了
可在手机端大概别的电脑端欣赏器输入192.168.47.67:5001,即可进入聊天,这里就不演示了,生成速度很慢,接下来是可提速的方案,本机优化后运行速度为 0.7 token/s 虽然不快,但是能跑起来已经很不错了。
可用来查看常用的参数信息,大概查看 koboldcpp 来获取更多
编辑kcpps文件
创建一个 cmdr.kcpps 来运行 Command R Plus,写入如下信息, 格式及参数如下
- {
- "model": null,
- "model_param": "/mnt/windows/AI/models/command-r-plus-Q4_K_M.gguf",
- "port": 5001,
- "port_param": 5001,
- "host": "",
- "launch": false,
- "config": null,
- "threads": 7,
- "usecublas": ["normal", "0"],
- "usevulkan": null,
- "useclblast": null,
- "noblas": false,
- "contextsize": 10240,
- "gpulayers": 1,
- "tensor_split": null,
- "ropeconfig": [0.0, 10000.0],
- "blasbatchsize": 512,
- "blasthreads": null,
- "lora": null,
- "noshift": false,
- "nommap": false,
- "usemlock": true,
- "noavx2": false,
- "debugmode": 0,
- "skiplauncher": false,
- "onready": "",
- "benchmark": null,
- "multiuser": 1,
- "remotetunnel": false,
- "highpriority": false,
- "foreground": false,
- "preloadstory": null,
- "quiet": false,
- "ssl": null,
- "nocertify": false,
- "mmproj": null,
- "password": null,
- "ignoremissing": false,
- "chatcompletionsadapter": null,
- "flashattention": false,
- "quantkv": 0,
- "forceversion": 0,
- "smartcontext": false,
- "hordemodelname": "",
- "hordeworkername": "",
- "hordekey": "",
- "hordemaxctx": 0,
- "hordegenlen": 0,
- "sdmodel": "",
- "sdthreads": 7,
- "sdclamped": false,
- "sdvae": "",
- "sdvaeauto": false,
- "sdquant": false,
- "sdlora": "",
- "sdloramult": 1.0,
- "whispermodel": "",
- "hordeconfig": null,
- "sdconfig": null
- }
复制代码 一般只需调解 model_param, contextsize, gpulayers, usemlock, threads这些参数,此中 model_param 选择你模型的路径,contextsize 为上下文长度一般设置为 4096 或 8192 或更多,本人电脑极限可拉到 10K,gpulayers 为 GPU 层数,需要根据你的显卡显存来调解,对于千亿级的模型非常吃显存,因此层数这里只能拉一层,而usemlock必须设置为 true, 否则会导致模型被换入虚拟内存,严重影响生成速度,threads 即线程数,根据你的 CPU 核心数而定,一般设置为 CPU 核心数减一,8 核设置 7 ,假如你的 CPU 核非常多,建议关闭超线程,用大核来跑,也能进步生成速度。
关闭方式为输入如下指令
- echo off > /sys/devices/system/cpu/smt/control
复制代码 开机自动关闭超线程设置
进到 grub 中编辑
- sudo vim /etc/default/grub
复制代码 修改 GRUB_CMDLINE_LINUX-DEFAULT 变量,在其之后添加 nosmt=force信息,如下所示
- GRUB_CMDLINE_LINUX-DEFAULT="nosmt=force"
复制代码 跟新 grub 配置,并重启
编辑完 cmdr.kcpps 随后即可直接执行
如许速度就快许多了
创建shell脚本用于快速启动
在用户目录下创建一个 start.sh 用于启动对于的模型
写入如下脚本代码
- #!/bin/bash
- if [ -z "$1" ]; then
- echo "Error: No filename provided!"
- exit 1
- else
- FILENAME="$1"
- fi
- FILEPATH="./kobold/$FILENAME.kcpps"
- if [ ! -f "$FILEPATH" ]; then
- echo "Error: File $FILEPATH not found!"
- exit 1
- fi
- pids=$(pgrep -f "./kobold/kobold")
- if [ -n "$pids" ]; then
- echo "Killing existing kobold processes with PIDs: $pids"
- kill -9 $pids
- fi
- echo "Starting new kobold process with $FILEPATH"
- nohup ./kobold/kobold "$FILEPATH" > out.log 2>&1 &
- echo "New kobold process started with PID $!"
- exit 0
复制代码 进步权限
之后想要启动的话,只需在用户目录下执行
即可启动 cmdr.kcpps 对于的模型
也可编译一个 end.sh 用于远程随时关闭模型,如许不用的时间就可以关掉,且不需要重启,以节流电量和时间
写入如下脚本代码
- #!/bin/bash
- pids=$(pgrep -f "./kobold/kobold")
- if [ -n "$pids" ]; then
- echo "Killing kobold processes with PIDs: $pids"
- kill -9 $pids
- echo "Kobold processes killed"
- else
- echo "No kobold process found"
- fi
- exit 0
复制代码 进步权限
后续假如在控制端每次输入如下即可制止
手机端安装SillyTavern
SillyTavern 的配置方法网上教程许多,可以直接参考该文档 Installing and running SillyTavern locally on Android using Termux.
下面是简单的安装方法,首先去安装 Termux ,下拉到最后点击 download 然后安装
打开 Termux 并安装常用软件及依赖
- apt update
- apt upgrade
- pkg install esbuild
- pkg install git
- pkg install nodejs
- pkg install vim
复制代码 在 Termux 开启所在的目录下获取 SillyTavern 项目
- git clone https://github.com/SillyTavern/SillyTavern
- cd SillyTavern
复制代码 安装所需依赖
随后即可运行
可在 Termux 开启所在目录下创建一个st.sh脚本便于启动酒馆, 大概创建一个链接
- #!/bin/bashcd SillyTavern/./start.sh
- exit 0
复制代码 加权限
后面每次开启 Termux 后直接执行如下指令,也很方便
配置 SillyTavern
随后就会跳转到欣赏器,大概输入 http://127.0.0.1:8000/ ,在左上角第二个选项的插头按键,API 选择 Text Completion,API 范例选择 KoboldCpp ,服务器URL 输入 http://192.167.47.67:5001/,然后连接即可成功接入,本文重要提供后端部署的方案。配置参考下图。
对于 cmdr 模型参数参考如下
高级格式化一栏选择 Command R,勾选指示模式,预设也选择 Command R
创建一个脚色卡举行聊天测试
本人手机端 ssh 工具是 Termius 输出结果如下
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |