使用 Llamafiles 简化 LLM 执行

使用 Llamafiles 简化 LLM 执行

源节点: 3068075

介绍

运行大型语言模型一直是一个乏味的过程。必须下载一套第三方软件来加载这些LLM,或者下载Python并通过下载大量Pytorch和HuggingFace库来创建环境。如果采用 Pythonic 方法,则必须经历编写代码来下载和运行模型的过程。本指南将探讨一种更简单的方法来运行这些法学硕士。

学习目标

  • 了解传统法学硕士执行的挑战
  • 掌握Llamafiles的创新理念
  • 学习轻松下载并运行您自己的 Llamafile 可执行文件
  • 学习从量化的 LLM 创建 Llamfile
  • 确定这种方法的局限性

这篇文章是作为 数据科学博客马拉松。

目录

大型语言模型的问题

大型语言模型 (LLM) 彻底改变了我们与计算机交互、生成文本、翻译语言、编写不同类型的创意内容,甚至以信息丰富的方式回答您的问题的方式。然而,在计算机上运行这些强大的模型通常具有挑战性。

为了运行LLM,我们必须下载Python和大量AI依赖项,最重要的是,我们甚至必须编写代码来下载和运行它们。即使在安装大型语言模型的即用型 UI 时,也涉及许多设置,很容易出错。像可执行文件一样安装和运行它们并不是一个简单的过程。

什么是 Llamafile?

创建 Llamafile 是为了轻松地与流行的开源大型语言模型配合使用。这些是单文件可执行文件。这就像下载法学硕士并像可执行文件一样运行它。无需初始安装库。由于 llama.cpp 和 cosmopolitan libc,这一切成为可能,这使得 LLM 可以在不同的操作系统上运行。

llama.cpp 由 Georgi Gerganov 开发,用于以量化格式运行大型语言模型,以便它们可以在 CPU 上运行。 llama.cpp 是一个 C 库,可让我们在消费类硬件上运行量化的 LLM。另一方面,cosmopolitan libc 是另一个 C 库,它构建了一个可以在任何操作系统(Windows、Mac、Ubuntu)上运行的二进制文件,而无需解释器。因此 Llamafile 构建在这些库之上,这使得它可以创建单文件可执行 LLM

可用模型采用 GGUF 量化格式。 GGUF 是一种大型语言模型的文件格式,由 llama.cpp 的创建者 Georgi Gerganov 开发。 GGUF 是一种用于在 CPU 和 GPU 上有效且高效地存储、共享和加载大型语言模型的格式。 GGUF 使用量化技术将模型从原始 16 位浮点压缩为 4 位或 8 位整数格式。该量化模型的权重可以以 GGUF 格式存储

这使得 7 亿参数模型可以更轻松地在具有 16GB VRAM 的计算机上运行。我们可以在不需要 GPU 的情况下运行大型语言模型(尽管 Llamafile 甚至允许我们在 GPU 上运行 LLM)。目前,流行的开源大型语言模型(如 LlaVa、Mistral 和 WizardCoder)的 llamafile 可供下载和运行

一键可执行文件

在本节中,我们将下载并尝试运行多模式 LlaVa Llamafile。在这里,我们不会使用 GPU 并在 CPU 上运行模型。单击进入官方 Llamafile GitHub 存储库 此处 并下载 LlaVa 1.5 模型。

一键可执行文件 |羊驼属

下载模型

上图显示了所有可用型号及其名称、尺寸和可下载链接。 LlaVa 1.5 仅有 4GB 左右,是一款功能强大、可以理解图像的多模型。下载的模型是一个量化为 7 位的 4 亿参数模型。下载模型后,转到下载的文件夹。

"

然后打开 CMD,导航到下载该模型的文件夹,输入我们下载的文件的名称,然后按 Enter。

llava-v1.5-7b-q4.llamafile
"

对于 Mac 和 Linux 用户

对于 Mac 和 Linux,默认情况下,该文件的执行权限是关闭的。因此,我们必须为 llamafile 提供执行权限,我们可以通过运行以下命令来实现。

chmod +x llava-v1.5-7b-q4.llamafile

这是为了激活llava-v1.5-7b-q4.llama文件的执行权限。另外,在文件名前添加“./”以在 Mac 和 Linux 上运行该文件。按 Enter 关键字后,模型将被推送到系统 RAM 并显示以下输出。

对于 Mac 和 Linux 用户 |羊驼属

然后会弹出浏览器,模型将在 URL http://127.0.0.1:8080/ 上运行

"
"

上图显示了默认的提示、用户名、LLM 名称、提示模板和聊天历史模板。这些可以配置,但现在我们将使用默认值。

下面,我们甚至可以检查可配置的 LLM 超参数,例如 Top P、Top K、Temperature 等。即使是这些,我们现在也将它们设为默认值。现在让我们输入一些内容并单击“发送”。

"

在上图中,我们可以看到我们已经输入了一条消息,甚至收到了回复。下面,我们可以检查每秒是否获得大约 6 个令牌,考虑到我们完全在 CPU 上运行它,这是一个很好的令牌/秒。这次,我们用图像来尝试一下。

中央处理器 |小羊驼

尽管不是 100% 正确,但该模型几乎可以从图像中获得大部分正确的信息。现在让我们与 LlaVa 进行多轮对话,测试它是否记住聊天记录。

在上图中,我们可以看到 LlaVa LLM 能够很好地保持 convo。它可以接收历史对话,然后生成响应。尽管生成的最后一个答案并不完全正确,但它收集了之前的卷积来生成它。这样,我们就可以下载 llamafile 并像软件一样运行它们并使用这些下载的模型。

创建 Llama 文件

我们已经看到了官方 GitHub 上已经存在的 Llamafile 演示。通常,我们不想使用这些模型。相反,我们希望创建大型语言模型的单文件可执行文件。在本节中,我们将完成创建单文件可执行文件(即来自量化 LLM 的 llama 文件)的过程。

选择法学硕士

我们首先选择一个大型语言模型。对于此演示,我们将选择 TinyLlama 的量化版本。在这里,我们将下载TinyLlama的8位量化GGUF模型(您可以点击 此处 前往 HuggingFace 并下载模型)

小羊驼

下载最新的 Llama 文件

可以从官方 GitHub 链接下载最新的 llamafile zip。另外,下载 zip 并解压 zip 文件。本文的当前版本是 llama file-0.6。 llama解压后,bin文件夹和file文件夹将包含如下图所示的文件。

"

现在将下载的 TinyLlama 8 位量化模型移至此 bin 文件夹。要创建单文件可执行文件,我们需要在 llamafile 的 bin 文件夹中创建一个 .args 文件。在此文件中,我们需要添加以下内容:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • 第一行表示 -m 标志。这告诉 llamafile 我们正在加载模型的权重。
  • 在第二行中,我们指定已下载的模型名称,该名称位于 .args 文件所在的同一目录中,即 llamafile 的 bin 文件夹中。
  • 在第三行中,我们添加主机标志,表明我们运行可执行文件并希望将其托管到 Web 服务器。
  • 最后,在最后一行,我们提到了我们想要托管的地址,该地址映射到 localhost。接下来是三个点,它们指定我们可以在创建 llamafile 后将参数传递给它。
  • 将这些行添加到 .args 文件并保存。

对于Windows用户

现在,下一步是针对 Windows 用户的。如果在 Windows 上工作,我们需要通过 WSL 安装 Linux。如果没有,请单击 此处 完成通过 WSL 安装 Linux 的步骤。在 Mac 和 Linux 中,不需要额外的步骤。现在在终端中打开 llamafile 文件夹的 bin 文件夹(如果在 Windows 上工作,请在 WSL 中打开此目录)并输入以下命令。

cp llamafile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile

在这里,我们创建一个名为tinllama-1.1b-chat-v0.3.Q3_0.llamafile的新文件;也就是说,我们正在创建一个扩展名为 .llamafile 的文件,并将该文件 llamafile 移动到这个新文件中。现在,接下来,我们将输入下一个命令。

./zipalign -j0 tinyllama-1.1b-chat-v0.3.Q8_0.llamafile tinyllama-1.1b-chat-v0.3.Q8_0.gguf .args

在这里,我们使用从 GitHub 下载 llamafile zip 时生成的 zipalign 文件。我们使用此命令为量化的 TinyLlama 创建 llamafile。对于这个 zipalign 命令,我们传入在上一步中创建的tinllama-1.1b-chat-v0.3.Q8_0.llama文件,然后传递tinllama-1.1b-chat-v0.3.Q8_0.llama文件我们在 bin 文件夹中创建了模型,最后传入我们之前创建的 .args 文件。

这最终将生成我们的单个文件可执行文件tinllama-1.1b-chat-v0.3.Q8_0.llamafile。为了确保我们处于同一页面,bin 文件夹现在包含以下文件。

可执行文件|羊驼属

现在,我们可以像之前一样运行tinllama-1.1b-chat-v0.3.Q8_0.llama 文件。在 Windows 中,您甚至可以将 .llama 文件重命名为 .exe 并双击运行它。

OpenAI 兼容服务器

本节将探讨如何通过 Llamfile 为 LLM 提供服务。我们注意到,当我们运行 llama 文件时,浏览器会打开,我们可以通过 WebUI 与 LLM 进行交互。这基本上就是我们所说的托管大型语言模型。

一旦我们运行 Llamafile,我们就可以作为端点与相应的 LLM 进行交互,因为该模型正在端口 8080 的本地主机上提供服务。服务器遵循 OpenAI API 协议,即类似于 OpenAI GPT 端点,从而使得可以轻松地在 OpenAI GPT 模型和使用 Llamafile 运行的 LLM 之间切换。

在这里,我们将运行之前创建的 TinyLlama llamafile。现在,它必须在 localhost 8080 上运行。我们现在将通过 Python 中的 OpenAI API 本身来测试它

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8080/v1", 
    api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
    model="TinyLlama",
    messages=[
        {"role": "system", "content": "You are a usefull AI 
        Assistant who helps answering user questions"},
        {"role": "user", "content": "Distance between earth to moon?"}
    ]
)
print(completion.choices[0].message.content)
  • 在这里,我们使用 OpenAI 库。但我们没有指定 OpenAI 端点,而是指定托管 TinyLlama 的 URL 并给出 “sk-no-token-required” 对于 api_key
  • 然后,客户端将连接到我们的 TinyLlama 端点
  • 现在,与我们使用 OpenAI 的方式类似,我们可以使用代码与 TinyLlama 聊天。
  • 为此,我们与 落成 OpenAI 的类。我们创造新的 落成 。创造()对象并传递模型名称和消息等详细信息。
  • 这些消息采用字典列表的形式,其中我们有角色,可以是系统、用户或助理,并且我们有内容。
  • 最后,我们可以检索通过上面的打印语句生成的信​​息。

上述的输出如下所示。

羊驼档案 |输出

这样,我们就可以利用 llamafiles 并使用我们选择运行的 llamafile 轻松替换 OpenAI API。

Llamafiles 限制

虽然具有革命性,但 llamafile 仍处于开发阶段。一些限制包括:

  • 有限型号选择: 目前,并非所有 LLM 都以 llamafile 的形式提供。当前预建 Llamafiles 的选择仍在增加。目前,Llamafiles 可用于 Llama 2、LlaVa、Mistral 和 Wizard Coder。
  • 硬件要求: 即使通过 Llamafiles 运行 LLM,仍然需要大量计算资源。虽然它们比传统方法更容易运行,但较旧或功能较弱的计算机可能需要帮助才能顺利运行它们。
  • 安全问题: 从不受信任的来源下载并运行可执行文件会带来固有的风险。所以必须有一个值得信赖的平台来下载这些 llamafiles。

Llamafiles 与其他

在 Llamafiles 之前,有不同的方法来运行大型语言模型。一个是通过 骆驼_cpp_python。这是 llama.cpp 的 Python 版本,可让我们在笔记本电脑和台式电脑等消费类硬件上运行量化大型语言模型。但要运行它,我们必须下载并安装 Python,甚至深度学习库,如 torch、huggingface、transformers 等。之后,需要编写许多行代码来运行模型。

即使如此,有时我们也可能会遇到由于依赖性问题而导致的问题(即某些库的版本低于或高于必要的版本)。而且还有 C变形金刚 让我们运行量化法学硕士的库。即使这也需要我们为 llama_cpp_python 讨论的相同过程

然后,有 奥拉马。 Ollama 在人工智能社区中取得了巨大成功,因为它易于使用,可以轻松加载和运行大型语言模型,尤其是量化模型。 Ollama 是一种针对法学硕士的 TUI(终端用户界面)。 Ollama 和 Llamafile 之间的唯一区别是可共享性。也就是说,如果愿意,我可以与任何人共享我的 model.llama 文件,他们可以运行它而无需下载任何其他软件。但就 Ollama 而言,我需要共享 model.gguf 文件,其他人只有在安装 Ollama 软件或通过上述 Python 库时才能运行该文件。

关于资源,所有这些方法都需要相同数量的资源,因为所有这些方法都使用下面的 llama.cpp 来运行量化模型。这只是关于易用性,它们之间存在差异。

结论

Llamafiles 标志着 LLM 易于运行的关键一步。它们的易用性和便携性为开发人员、研究人员和临时用户打开了一个充满可能性的世界。虽然存在局限性,但 llamafiles 使 LLM 访问民主化的潜力是显而易见的。无论您是专家开发人员还是好奇的新手,Llamafiles 都为探索 Llama 世界提供了令人兴奋的可能性。在本指南中,我们了解了如何下载 Llamafiles,甚至如何使用我们的量化模型创建我们自己的 Llamafiles 。我们甚至还研究了运行 Llamafiles 时创建的 OpenAI 兼容服务器。

关键精华

  • Llamafile 是单文件可执行文件,使运行大型语言模型 (LLM) 变得更容易、更容易。
  • 它们消除了复杂的设置和配置的需要,允许用户直接下载和运行 LLM,无需 Python 或 GPU。
  • Llamafiles 目前可供有限的开源 LLM 选择,包括 LlaVa、Mistral 和 WizardCoder。
  • 尽管方便,Llamafile 仍然存在局限性,例如与从不受信任的来源下载可执行文件相关的硬件要求和安全问题。
  • 尽管存在这些限制,Llamafiles 代表了开发人员、研究人员甚至临时用户实现 LLM 访问民主化的重要一步。

常见问题

Q1.使用 Llamafiles 有什么好处?

答:与传统的 LLM 配置方法相比,Llamafile 具有多种优势。它们使法学硕士的设置和执行变得更容易、更快捷,因为您不需要安装 Python 或拥有 GPU。这使得法学硕士更容易为更广泛的受众所接受。此外,Llamafiles 可以跨不同的操作系统运行。

Q2。 Llamafiles 有哪些限制?

答:虽然 Llamafile 提供了许多好处,但它们也有一些限制。与传统方法相比,Llamafiles 中可用的法学硕士选择有限。此外,通过 Llamafiles 运行 LLM 仍然需要大量的硬件资源,并且较旧或功能较弱的计算机可能不支持它。最后,安全问题与从不受信任的来源下载和运行可执行文件相关。

Q3。我如何开始使用 Llamafiles?

答:要开始使用 Llamafiles,您可以访问官方 Llamafile GitHub 存储库。在那里,您可以下载您想要使用的 LLM 模型的 Llamafile。下载文件后,您可以像可执行文件一样直接运行它。

Q4。我可以在 Llamafiles 中使用我自己的 LLM 模型吗?

答:不。目前,Llamafiles 仅支持特定的预构建模型。计划在未来版本中创建我们自己的 Llamafiles。

Q5. Llamafiles的前景如何?

答:Llamafiles 的开发人员正在努力扩大可用的 LLM 模型的选择范围,更有效地运行它们,并实施安全措施。这些进步旨在使 Llamafiles 对于更多缺乏技术背景的人来说更加可用和安全。

本文中显示的媒体不属于 Analytics Vidhya 所有,其使用由作者自行决定。

时间戳记:

更多来自 分析维迪亚