logo 🤗

技术视野

聚焦科技前沿,分享技术解析,洞见未来趋势。在这里,与您一起探索人工智能的无限可能,共赴技术盛宴。

编译llamafile

  1. 准备工作:Ubuntu 22.04系统,make/gcc/g++/wget/unzip已安装,如果有独显,可以安装好独显驱动(例如英伟达显卡可以安装一下cuda)
  2. 下载源码,目前最新版是0.6.2
git clone https://github.com/Mozilla-Ocho/llamafile.git -b 0.6.2
  1. 修改源码,默认配置是llama的,我准备用qwen1.5,所以将默认的prompt构造方式换成qwen的。
cd llamafile
vim llama.cpp/server/public/index.html
  • 修改前(大概在215行)
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: ''                                                        
    })
  1. 编译并安装
make -j10
sudo make install PREFIX=/usr/local
  1. 然后可以去huggingface下载一个,例如下载一个0.5b的模型,下载地址,可以选择q4_k_m.gguf结尾的文件就行了,如果网络不好,可以去魔搭平台下载。
  2. 测试一下,目测正常启动
llamafile -m qwen1_5-0_5b-chat-q4_k_m.gguf

image.png

image.png

封装

  1. 目标:将多个gguf文件和llamafile封装到一起,实现一个文件多平台启动。
  2. 编写.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
...
  1. 复制一份llamafile过来,方便封装。
cp /usr/local/bin/llamafile qwen.llamafile
  1. 将llamafile,qwen的gguf模型权重以及需要启动.args文件都封装到一起
zipalign -j0 qwen.llamafile qwen1_5-0_5b-chat-q4_k_m.gguf .args
  1. 观察压缩后的lllamafile文件,暴涨到了395M,基本和原来的模型权重一样大。
ls qwen.llamafile -lh
-rwxr-xr-x 1 tlntin tlntin 395M  3月 13 21:30 qwen.llamafile
  1. 单独启动qwen.llamafile文件测试下,貌似没啥问题。
./qwen.llamafile

image.png

其他平台测试

  1. 从官方介绍来看,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)
  1. 我们将刚刚的文件重命名为qwen_1_5_0_5b.llamafile.exe,再去windows试试,经过测试在windows 11系统上,双击该exe后自动启动浏览器打开了刚刚的页面,并且对话正常,说明跨平台成功。

版权属于:tlntin
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年03月13日 22:36


39 文章数
5 分类数
40 页面数
已在风雨中度过 1年188天17小时34分
目录
来自 《利用llamafile构造傻瓜式,支持多平台启动的大模型》
暗黑模式
暗黑模式
返回顶部
暗黑模式
暗黑模式
返回顶部