什么是 Serge ?
Serge
是基于 llama.cpp
运行 Alpaca
模型的聊天界面。完全自托管,不需要 API
密钥。适合 4GB RAM
并且能在 CPU
上运行。
什么是 LLaMA ?
LLaMA
是一种机器学习算法,全称为 Laplacian Regularized Least Squares for Multiple Kernel Learning
。它是一种多核学习方法,可以用于处理多个核函数的数据集,以提高分类或回归的准确性。LLaMA
算法利用拉普拉斯正则化技术来平衡不同核函数的贡献,从而提高分类或回归的性能。LLaMA
算法已经在许多领域得到了广泛的应用,包括生物信息学、图像识别、自然语言处理等。
什么是 llama.cpp
llama.cpp
是在 C/C++
中移植的 Facebook
的 LLaMA
模型。
什么是 Alpaca 模型 ?
Alpaca
模型是一种基于深度学习的自然语言处理模型,它可以用于文本分类、情感分析、问答系统等任务。Alpaca
模型采用了一种特殊的网络结构,称为“路径卷积神经网络”( Path Convolutional Neural Network,PCNN
),该网络结构可以同时处理词序列和句法树,从而提高了模型的性能。此外,Alpaca
模型还使用了一种叫做“自适应注意力”( Adaptive Attention
)的机制,可以自动地调整不同单词的权重,从而更好地捕捉句子的意义。Alpaca
模型已经在多个自然语言处理任务上取得了优秀的表现,成为了该领域中的一个重要研究方向之一。
Serge
老苏试了下,4GB
内存有点够呛,尤其是你的群晖还跑了其他的服务,如果有 8GB
可以试试,不需要 GPU
还是不错的,虽然运算速度慢点
注意事项
CPU
目前 Serge
需要与 AVX2
指令兼容的 CPU
,老苏猜测应该是因为 MongoDB
的缘故。官方给的检测命令是:
# 检测 cpu 是否支持 AVX2
lscpu | grep avx2
但是在群晖上,并没有 lscpu
,所以老苏咨询了 ChatGPT
,他给老苏提供了下面的命令, 请用SSH
客户端登录到群晖后,在命令行中运行
# 检测 cpu 是否支持 AVX2
cat /proc/cpuinfo | grep avx2
如果输出包含 avx2
,则表示您的 CPU
支持 AVX2
。如果未找到 avx2
,则表示您的 CPU
不支持 AVX2
。
内存
如果您的模型没有足够的可用内存,llama
就会崩溃,下面是官方提供的数据:
7B
需要大约 4.5GB
的空闲 RAM
13B
需要大约 12GB
的空闲RAM
30B
需要大约 20GB
的空闲RAM
安装
ghcr.io 镜像下载
官方的镜像没有发布在 docker hub
,而是在 ghcr.io
,所以直接用命令行来安装。
在 SSH
客户端中依次执行下面的命令
# 下载镜像
docker pull ghcr.io/nsarrazin/serge:latest
如果没有科学上网,很可能会拉不动,可以试试 docker
代理网站:https://dockerproxy.com/,但是会多几个步骤
# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/nsarrazin/serge:latest
# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/nsarrazin/serge:latest ghcr.io/nsarrazin/serge:latest
# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/nsarrazin/serge:latest
当然代理网站也不是什么时候都好使,有时候也会报错,例如下面👇这样的
Error response from daemon: received unexpected HTTP status: 500 Internal Server Error
所以有一个稳定的科学上网环境还是很重要的
docker cli 安装
现在可以开始运行了
# 新建文件夹 serge 和 子目录
mkdir -p /volume2/docker/serge/{data,weights}
# 进入 serge 目录
cd /volume2/docker/serge
# 运行容器
docker run -d \
--restart unless-stopped \
--name serge \
-p 8018:8008 \
-v $(pwd)/data:/data/db \
-v $(pwd)/weights:/usr/src/app/weights \
ghcr.io/nsarrazin/serge:latest
docker compose 安装
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
version: '3'
services:
serge:
image: ghcr.io/nsarrazin/serge:latest
container_name: serge
restart: unless-stopped
ports:
- 8018:8008
volumes:
- ./data:/data/db
- ./weights:/usr/src/app/weights
- /etc/localtime:/etc/localtime:ro
然后执行下面的命令
# 新建文件夹 serge 和 子目录
mkdir -p /volume2/docker/serge/{data,weights}
# 进入 serge 目录
cd /volume2/docker/serge
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
运行
在浏览器中输入 http://群晖IP:8018
就能看到主界面
首先要点 Download model
下载模型
老苏下了 gpt4all
,文件大小和 7B
、7B-native
是一样的,估摸着内存占用应该是一样的,但具体有什么区别老苏不清楚 🤦♂️
下载速度挺快的,日志中看不到具体的下载地址
点左侧的 Home
回到首页
聊天之前,可以设置模型的参数,但是说实话,老苏也不明白这些该如何设置,所以就保持了默认的
点紫色的 Start a new chat
开始聊天
老苏问了第一个问题 你支持中文吗?
感觉一下就把天给聊死了,这接下来怎么聊呢?老苏的英文水平也就能说个 What's you name?
、How are you?
、How old are you?
老苏的机器是 4G
内存的, CPU
也比较古老,所以每个问题都需要很长时间才会有应答,差不多每个问题也就一顿饭的功夫吧 😁
昨晚装好之后,第一个问题是中文的,其实难道也不大,但还是直接把机器给整的没响应了,早上起来一看重启了,估计是资源耗尽了吧,有兴趣的话,你也可以试试
参考文档
nsarrazin/serge: A web interface for chatting with Alpaca through llama.cpp. Fully dockerized, with an easy to use API.
地址:https://github.com/nsarrazin/serge
https://serge.chat
地址:https://serge.chat/
[P] Serge, a self-hosted app for running LLaMa models (Alpaca) entirely locally, no remote API needed. : MachineLearning
地址:https://www.reddit.com/r/MachineLearning/comments/11yvbzc/p_serge_a_selfhosted_app_for_running_llama_models/