编译llamafile
- 准备工作:Ubuntu 22.04系统,make/gcc/g++/wget/unzip已安装,如果有独显,可以安装好独显驱动(例如英伟达显卡可以安装一下cuda)
- 下载源码,目前最新版是0.6.2
git clone https://github.com/Mozilla-Ocho/llamafile.git -b 0.6.2
- 修改源码,默认配置是llama的,我准备用qwen1.5,所以将默认的prompt构造方式换成qwen的。
cd llamafile
vim llama.cpp/server/public/index.html
const session = signal({
prompt: "This is a conversation between User and Llama, a friendly chatbot. Llama is helpful, kind, honest, good at writing, and never fails to answer any requests immediately and with precision.",
template: "{{prompt}}\n\n{{history}}\n{{char}}:",
historyTemplate: "{{name}}: {{message}}",
transcript: [],
type: "chat", // "chat" | "completion"
char: "Llama",
user: "User",
image_selected: ''
})
const session = signal({
prompt: "You are a helpful assistant.",
template: "<|im_start|>system\n{{prompt}}<|im_end|>\n{{history}}\n<|im_start|>user\n{{char}}<|im_end|>\n<|im_start|>assistant",
historyTemplate: "<|im_start|>{{name}}\n{{message}}<|im_end|>",
transcript: [],
type: "chat", // "chat" | "completion"
char: "assistant",
user: "user",
image_selected: ''
})
- 编译并安装
make -j10
sudo make install PREFIX=/usr/local
- 然后可以去huggingface下载一个,例如下载一个0.5b的模型,下载地址,可以选择
q4_k_m.gguf
结尾的文件就行了,如果网络不好,可以去魔搭平台下载。 - 测试一下,目测正常启动
llamafile -m qwen1_5-0_5b-chat-q4_k_m.gguf
封装
- 目标:将多个gguf文件和llamafile封装到一起,实现一个文件多平台启动。
- 编写
.args
文件,用于告诉模型待会的启动参数,...
代表文件结束。一行参数,一行参数对应数值。
-m
qwen1_5-0_5b-chat-q4_k_m.gguf
...
-m
qwen1_5-0_5b-chat-q4_k_m.gguf
--host
0.0.0.0
...
- 如果你有一个不错的显卡,能够完全加载这个模型进去,可以写成这样
-m
qwen1_5-0_5b-chat-q4_k_m.gguf
--host
0.0.0.0
-ngl
9999
...
- 复制一份llamafile过来,方便封装。
cp /usr/local/bin/llamafile qwen.llamafile
- 将llamafile,qwen的gguf模型权重以及需要启动
.args
文件都封装到一起
zipalign -j0 qwen.llamafile qwen1_5-0_5b-chat-q4_k_m.gguf .args
- 观察压缩后的lllamafile文件,暴涨到了395M,基本和原来的模型权重一样大。
ls qwen.llamafile -lh
-rwxr-xr-x 1 tlntin tlntin 395M 3月 13 21:30 qwen.llamafile
- 单独启动
qwen.llamafile
文件测试下,貌似没啥问题。
./qwen.llamafile
其他平台测试
- 从官方介绍来看,llamafile支持多个系统,官方原文如下:
llamafile supports the following operating systems, which require a minimum stock install:
Linux 2.6.18+ (i.e. every distro since RHEL5 c. 2007)
Darwin (macOS) 23.1.0+ [1] (GPU is only supported on ARM64)
Windows 8+ (AMD64 only)
FreeBSD 13+
NetBSD 9.2+ (AMD64 only)
OpenBSD 7+ (AMD64 only)
- 我们将刚刚的文件重命名为
qwen_1_5_0_5b.llamafile.exe
,再去windows试试,经过测试在windows 11系统上,双击该exe后自动启动浏览器打开了刚刚的页面,并且对话正常,说明跨平台成功。