Llamafile

Llamafile

简介

  • llamafile是由天才程序员Justine Tunney开发的一种大模型分发运行方式;

  • llamafile将大模型和可执行环境封装到单一文件中,同时支持该单一文件可在不同操作系统跨平台运行;

  • 支持平台包括:Windows, macOS, Linux, OpenBSD, FreeBSD, and NetBSD;

  • 跨 CPU 微架构运行:llamafiles 可以在多种 CPU 微架构上运行,支持新的 Intel 系统使用现代 CPU 特性,同时兼容旧计算机。

  • 跨 CPU 架构运行:llamafiles 可以在 AMD64 和 ARM64 等多种 CPU 架构上运行,兼容 Win32 和大多数 UNIX shell。

  • 跨操作系统运行:llamafiles 可以在 MacOS、Windows、Linux、FreeBSD、OpenBSD和 NetBSD 六种操作系统上运行。

  • 权重嵌入:LLM 的权重可以嵌入到 llamafile 中,使得未压缩的权重可以直接映射到内存中,类似于自解压缩的存档。

原理

  • llamafile通过Cosmopolitan Libc和llama.cpp是实现

用法

使用llamafile运行

1
2
3
4
5
6
7
$ llamafile \
  -m /your-model-path/Qwen-7B-Chat.Q4_K_M.gguf \
  --server \
  --host 0.0.0.0
# 浏览器打开 http://you-ip:8080/ 即可对话
# 同样也支持命令行直接推理
# llamafile -h 可看详细参数说明

封装llamafile文件

需要文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
## 准备参数文件
$ cat .args 
-m
Qwen-7B-Chat.Q4_K_M.gguf
--host
0.0.0.0
-ngl
9999
...

## 打包目录
$ ls /data/Qwen-7b/
.args
Qwen-7B-Chat.Q4_K_M.gguf
Qwen.llamafile
zipalign

## 封装打包
$ cd /data/Qwen-7b/
$ zipalign -j0 \
  Qwen.llamafile \
  Qwen-7B-Chat.Q4_K_M.gguf \
  .args

## 运行
$ ./Qwen.llamafile

参考

  1. https://github.com/Mozilla-Ocho/llamafile

  2. https://builders.mozilla.org/project/llamafile/

  3. https://www.bingal.com/posts/ai-llamafile-usage/

  4. https://developer.aliyun.com/article/1434175

  5. https://modelscope.cn/models/bingal/llamafile-models?spm=a2c6h.12873639.article-detail.5.56747bc2FMKU0P

  6. https://www.eet-china.com/mp/a304856.html