如何在一台服务器上使用Llama-Swap在本地打开多个LLMS

如何在一台服务器上使用Llama-Swap在本地打开多个LLMS
如何在一台服务器上使用Llama-Swap在本地打开多个LLMS
作者意识形态图的照片

多种大型语言模型是否可以有用,无论是比较表单的输出,在一个人失败时保留还是自定义行为(例如使用模型进行编码,而其他模型进行艺术写作)。这就是我们在实践中使用LLM的方式。有诸如 poe.com 这提供了这种类型的准备。这是一个可以运行多个LLM的平台。但是,如果您想在本地完成所有这些操作,节省API成本并尤其保留数据怎么办?

好吧,这是真正的问题出现的地方。通常,这意味着准备不同的出口巫术,运行单独的操作以及手动切换。不完美。

这正是痛苦 骆驼折 这是允许的。它是一个轻巧的开源代理(只有一个二人组),可让您轻松地在多个本地LLM之间切换。 用简单的短语,请在设备上收听OpenAI API调用,并自动启动或根据请求的模型停止适当的模型服务器。 让我们拆除如何做到这一点,然后逐步设置,以使其在本地设备上工作。

美洲驼的工作原理

聪明的路由器坐在LLM服务器的前面,有益的Llama-Swap坐在您的LLM服务器前。当API请求到达时(例如, POST /v1/chat/completions 打电话),看 "model" JSON中的字段。然后,它将为此模型失去适当的服务器进程,并在必要时关闭任何其他模型。例如,如果您是第一次要求模型 "A" 然后请求表格 "B",Llama-Swap Server“ A”将自动停止并启动“ B”的服务器,以便每个请求都按正确的表单提交。这种动态切换发生在透明度上,因此客户可以看到预期的响应,而不必担心基本过程。

默认情况下,Llama-SWAP仅允许同时操作(切换时空的其他)。但是,其组的特征使您可以更改此行为。 该组可以包括许多模型并控制掉期行为。 例如,准备 swap: false 在一个小组中,意味着该小组的所有成员都可以共同努力而无需清空。在实践中,您可以使用一组重量级型号(一次仅一个活动),另一组“并行”组,用于您要同时运行的小型型号。对资源使用和一台服务器的同步的完全控制为您提供了控制。

基本要求

启动之前,请确保您的系统具有以下内容:

  • 贝森 3(> = 3.8): 必要的编程和工具。
  • 啤酒 (在McCos上): LLM Runtimes的安装使其变得容易。例如,您可以安装文件 Llama.cp 服务器与:

这提供了 llama-server 局部寄托模型的伸展。

  • Llama.cp(llama-server): OpenAI -Compatible Server(通过上面的Homebrew或从源构建的)已经运行了LLM型号。
  • 拥抱脸 直接将型号下载到您的本地设备,而无需登录网站或在模型页面中手动导航。使用:
pip install -U "huggingface_hub[cli]"
  • 设备: 任何现代的中央治疗单元都将起作用。为了更快的结论,图形处理单元很有用。 (在Macs Silicon Apple上,您可以在CPU上运行或尝试 石et 支持模型的背景代表。在带有NVIDIA GPU的Linux/Windows上,您可以使用Docker/Cuda容器进行加速。)
  • 港口 (我的选择): 扮演前制作的码头工人。但是,我选择不使用本指南,因为这些图像主要是为X86系统(Intel/AMD)设计的,并且不能可靠地使用Macs Apple Silicon(M1/M2)。取而代之的是,我使用了裸机安装方法,该方法直接在MACOS上工作,而无需任何上部容器。

简而言之,您将需要本地的伯森环境和本地LLM服务器(例如llama.cp’)。我们将使用它们在一台设备上托管两个示例。

步骤 – 步骤说明

// 1。安装Llama-Swap

从您的操作系统下载最新版本的Llama-Swap GAYTAP版本页面。例如,我可以看到 v126 作为最新版本。运行以下订单:

# Step 1: Download the correct file
curl -L -o llama-swap.tar.gz \
  https://github.com/mostlygeek/llama-swap/releases/download/v126/llama-swap_126_darwin_arm64.tar.gz
Output:
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 3445k  100 3445k    0     0  1283k      0  0:00:02  0:00:02 --:--:-- 5417k

现在,提取文件,使其实现并通过验证版本进行测试:

# Step 2: Extract it
tar -xzf llama-swap.tar.gz

# Step 3: Make it executable
chmod +x llama-swap

# Step 4: Test it
./llama-swap --version
Output:
version: 126 (591a9cdf4d3314fe4b3906e939a17e76402e1655), built at 2025-06-16T23:53:50Z

// 2。下载并准备两个或多个LLM

例如,选择两个示例。我们将使用 qwen2.5-0.5bSmollm2-135m (小型)来自 刺绣。您需要表单文件(在 GGUF 或类似的协调)。例如,使用拥抱面孔:

mkdir -p ~/llm-models

huggingface-cli download bartowski/SmolLM2-135M-Instruct-GGUF \
  --include "SmolLM2-135M-Instruct-Q4_K_M.gguf" --local-dir ~/llm-models

huggingface-cli download bartowski/Qwen2.5-0.5B-Instruct-GGUF \
  --include "Qwen2.5-0.5B-Instruct-Q4_K_M.gguf" --local-dir ~/llm-models

这将:

  • 创建指南 llm-models 在用户的主文件夹中
  • 在此文件夹中安全下载GGUF模型文件。下载后,您可以确认是:

导演:

SmolLM2-135M-Instruct-Q4_K_M.gguf
Qwen2.5-0.5B-Instruct-Q4_K_M.gguf

// 3。创建骆驼 – 六塑料

Llama-Swap使用单个YAML文件来确定服务器的模型和订单。建造 config.yaml 用类似内容的文件:

models:
  "smollm2":
    cmd: |
      llama-server
      --model /path/to/models/llm-models/SmolLM2-135M-Instruct-Q4_K_M.gguf
      --port ${PORT}

  "qwen2.5":
    cmd: |
      llama-server
      --model /path/to/models/llm-models/Qwen2.5-0.5B-Instruct-Q4_K_M.gguf
      --port ${PORT}

代替 /path/to/models/ 使用您的实际本地轨道。下面的每个输入 models: 它给出了标识符(就像 "qwen2.5")和壳 cmd: 经营他的仆人。我们使用 llama-server (来自Llama.cp) --model 它是指gguf文件, --port ${PORT}。这 ${PORT} Macro Llame-S-swap自动为每个模型讲述了一个免费的插座。这 groups 可选部分。您已经删除了此示例,因此默认情况下,Llama-Swap一次只能运行一个模型。您可以在此配置中为每个型号(昵称,截止日期等)自定义许多选项。有关可用选项的更多详细信息,请参见文件,例如完整配置。

// 4

与二人组和 config.yaml 准备就绪,启动Llama-Swap表示您的配置:

./llama-swap --config config.yaml --listen 127.0.0.1:8080

这称为代理商的代理商 localhost:8080。你会读 config.yaml (最初)下载任何模型,直到一阶到达。 Llama-Swap现在将在端口上处理API请求 8080, 休息。 llama-server 该过程基于 "model" 老师。

// 5。与您的模型互动

现在,您可以制作OpenAI API来测试每个型号。我固定了 JQ 如果您在下面运行订单之前没有:

// 使用qwen2.5

curl -s http://localhost:8080/v1/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer no-key" \
  -d '{
        "model": "qwen2.5",
        "prompt": "User: What is Python?\nAssistant:",
        "max_tokens": 100
      }' | jq '.choices[0].text'
Output:
"Python is a popular general-purpose programming language. It is easy to learn, has a large standard library, and is compatible with many operating systems. Python is used for web development, data analysis, scientific computing, and machine learning.\nPython is a language that is popular for web development due to its simplicity, versatility and its use of modern features. It is used in a wide range of applications including web development, data analysis, scientific computing, machine learning and more. Python is a popular language in the"

// 使用SmollM2

curl -s http://localhost:8080/v1/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer no-key" \
  -d '{
        "model": "smollm2",
        "prompt": "User: What is Python?\nAssistant:",
        "max_tokens": 100
      }' | jq '.choices[0].text'
Output:
"Python is a high-level programming language designed for simplicity and efficiency. It's known for its readability, syntax, and versatility, making it a popular choice for beginners and developers alike.\n\nWhat is Python?"

每个模型将根据其培训做出响应。美洲驼的美丽是,您不必手动重新启动任何内容即可改变 "model" 该领域,其余的。如上面的示例所示,您将看到:

  • qwen2.5:更漫长的技术响应
  • smollm2:一个更简单,更简短的答案

这确认Llama-Swap是将请求发送到正确的型号!

结论

恭喜!您已经准备了Llama-Swap,可以在一台设备上运行两个LLM,现在可以在通过API呼叫飞行时切换它们。我们安装了一个代理,用两种型号准备了YAML组成,我们看到了如何订购右背接口的Llama-Swap。

以下步骤: 您可以将其扩展为:

  • 较大的模型(例如 TinyLlamaPhi-2Mistral))
  • 并发服务组
  • LinjshenFastapi或其他方面

享受探索不同的型号和配置!

Kanwal Mehrin 他是一名自动学习工程师,也是一位对数据科学和人工智能与医学相交的热情。她参与了电子书“用chatgpt最大化生产力”的作者。作为Google 2022年APAC的研究人员,她多样性多样性和学术卓越。它也被认为是学者技术,MITACS Globalink研究学者和哈佛Wecode Scholar中的多种Teradata。坎瓦尔(Kanwal)建立了床单图标以使妇女能够在STEM领域中,她是一名热情的变革后卫。

Source link

Similar Posts