AI | llamafile: 最新的本地运行LLM的最佳方式

758 阅读4分钟

image.png

结果 = 认知 x 决策 x 行动

原文地址:simonwillison.net/2023/Nov/29… 文章采用意译且没有校对,如有不准确的,请在评论区指出!

封面图由webui + 本地模型(realisticVisionV60B1_v13)生成

Mozilla的创新团队和 Justine Tunney刚刚发布了 llamafile,我认为这是目前在个人主机上运行LLM(可以把它当做ChatGPT的本地副本)的最好方式。

llamafile 是一个几GB大小的单文件,它包括LLM的模型权重和运行模型的相关的代码——在某些情况下还提供了启动web UI的本地服务,方便用户交互。

「可执行文件」是使用Cosmopolitan Libc编译的, 它是一个令人非常惊奇的项目,由 Justine开发的,支持编译单个可执行文件,不需要任何修改就可以在多个操作系统和硬件架构上良好运行。

下面我们使用LLaVA 1.5了解如何开始?

LLaVA 1.5是一个大型的多模态模型(即支持文本和图片输入,就像GPT-4 vision),是在Llama 2的基础上微调的。

我这 M2 Mac上测试过该程序了,当然在其它平台也是可以正常运行的(不过请务必阅读 README 文件的「Gotchas」章节,并在Hacker News 的评论部分查看Justine 发布的:支持的平台清单)。

下面是详细的步骤:

  1. 从Justine的 Hugging Face仓库中下载llamafile-server-0.1-llava-v1.5-7b-q4 文件,大约 4.26GB大小
curl -LO https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4-server.llamafile
  1. 运行下面的命令添加可执行权限:
chmod 755 llava-v1.5-7b-q4-server.llamafile
  1. 运行可执行文件,这会启动一个web server,监听端口是8080:
./llava-v1.5-7b-q4-server.llamafile
  1. 在浏览器中输入http://127.0.0.01:8080可以开始使用服务了。

这就是全部的步骤了。在 M2 Mac上的运行速率大概是 55 tokens / 秒,这是相当快的。并且它还可以分析图片——下面是我上传的一张图片并询问"Describe this plant"的得到的答案:

llamafile.jpg

这是如何工作的?

这是由多个不同的组件一起工作使得它正常运行的:

  • 由Haotian Liu, Chunyuan Li, Yuheng Li and Yong Jae Lee 共同发布的LLaVA 1.5模型,查看详情,可以在 llava-vl.github.io 查看更多详情;
  • 模型使用llama.cpp执行,且在上面的示例中使用了 llama.cpp 服务器,提供了一个UI例子;
  • Cosmopolitan Libc是一个强大的库用于构建「单个可执行文件」在多个平台上运行,在TIL的文章(Catching up with the Cosmopolitan ecosystem)中,我写了更多相关的内容。

尝试其它模型

在 llamafile 的README 文件中目前为「可执行文件」链接到LLM包括:Mistral-7B-Instruct, LLaVA 1.5 和 WizardCoder-Python-13B。

你也可以从 releases上下载更小的 llamafile 二进制文件,它们可以执行被编译成 GGUF格式的任何模型。

下载llamafile-server-0.1 (4.45MB)文件:

curl -LO https://github.com/Mozilla-Ocho/llamafile/releases/download/0.1/llamafile-server-0.1
chmod 755 llamafile-server-0.1

可以指定预先下载的模型,如:使用13GB大小的 llama-2-13b.Q8_0.gguf文件

./llamafile-server-0.1 -m llama-2-13b.Q8_0.gguf

这会展示一个相同的UI(没有图片上传),我可以与该模型以24 tokens/秒的速率进行“聊天”。

仅需要一个文件

我个人最喜欢llamafile的一点是,只有一个可执行文件。你仅需要下载它就可以在任何计算机上永久使用。

不需要网络连接,也不需要了解除了该文件外的任何其它东西。

将该文件复制到 USB 闪存卡中,作为备选,你就不需要担心没有 LM 可用了

更多相关的文章

  1. Datasette Enrichments: a new plugin framework for augmenting your data - 1st December 2023

  2. Prompt injection explained, November 2023 edition - 27th November 2023

  3. I'm on the Newsroom Robots podcast, with thoughts on the OpenAI board - 25th November 2023

  4. Weeknotes: DevDay, GitHub Universe, OpenAI chaos - 22nd November 2023

  5. Deciphering clues in a news article to understand how it was reported - 22nd November 2023

  6. Exploring GPTs: ChatGPT in a trench coat? - 15th November 2023

  7. Financial sustainability for open source projects at GitHub Universe - 10th November 2023

  8. ospeak: a CLI tool for speaking text in the terminal via OpenAI - 7th November 2023

  9. DALL-E 3, GPT4All, PMTiles, sqlite-migrate, datasette-edit-schema - 30th October 2023

参考资料

  1. introducing llamafile - hacks.mozilla.org/2023/11/int…
  2. llamafile - github.com/Mozilla-Och…
  3. cosmopolitan libc - justine.lol/cosmopolita…
  4. jartine/llava-v1.5-7B-GGUF - huggingface.co/jartine/lla…
  5. Improved Baselines with Visual Instruction Tuning - arxiv.org/abs/2310.03…
  6. LLaVA: Large Language and Vision Assistant - llava-vl.github.io/
  7. llama.cpp - github.com/ggerganov/l…
  8. Catching up with the Cosmopolitan ecosystem - til.simonwillison.net/cosmopolita…