Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

尝试 llama.cpp 的新视觉支持

Posted on 2025-05-10

通过 libmtmd Pull 请求(来自Hacker News )的 llama.cpp 服务器视觉支持已于今天早些时候合并。 PR 最终为优秀的llama.cpp项目添加了对视觉模型的全面支持。本页对此进行了记录,但此处介绍了更详细的技术细节。以下是我在 Mac 上运行它的笔记。

llama.cpp模型通常作为.gguf文件分发。该项目引入了一种名为mmproj的新变体,用于多模式投影仪。 libmtmd是用于处理这些问题的新库。

您可以通过从源代码编译llama.cpp来尝试,但我发现了另一个可行的选项:您可以从GitHub 版本下载预编译的二进制文件。

在 macOS 上,需要跳过一个额外的步骤才能使这些功能正常工作,我将在下面进行描述。

我从此GitHub 版本下载了llama-b5332-bin-macos-arm64.zip文件并将其解压缩,这创建了一个build/bin目录。

该目录包含一堆二进制可执行文件和大量.dylib文件。 macOS 不允许我执行这些文件,因为它们已被隔离。运行此命令修复了llama-mtmd-cli和llama-server可执行文件以及它们所需的.dylib文件:

 sudo xattr -rd com.apple.quarantine llama-server llama-mtmd-cli *.dylib

现在我可以使用以下命令运行交互式终端 LLM 会话:

 ./llama-mtmd-cli -hf unsloth/gemma-3-4b-it-GGUF:Q4_K_XL -ngl 99

-ngl 99标志指定应将 99 个层卸载到 GPU。我还没有尝试过修改或省略这个标志 – 我在 danielhanchen 的黑客新闻评论中看到它,它似乎有效。

第一次运行时,它从unsloth/gemma-3-4b-it-GGUF (Google DeepMind 的Gemma 3 4B的量化副本)获取四个文件,并将它们存储在~/Library/Caches/llama.cpp中:

 2.4G unsloth_gemma-3-4b-it-GGUF_gemma-3-4b-it-UD-Q4_K_XL.gguf 217B unsloth_gemma-3-4b-it-GGUF_gemma-3-4b-it-UD-Q4_K_XL.gguf.json 812M unsloth_gemma-3-4b-it-GGUF_mmproj-F16.gguf 203B unsloth_gemma-3-4b-it-GGUF_mmproj-F16.gguf.json

一旦他们下载完毕,交互式会话就会开始。您可以直接与模型聊天或使用/image path-to-image.jpg命令将图像加载到上下文中。

我加载了一张鹈鹕照片并提示“描述它”,然后得到了这个:

这是一张引人注目的照片,照片中一只棕色鹈鹕站在沙滩上的浅水中。以下是我所看到的内容的细分:

  • 主题:主要焦点是一只大棕色鹈鹕。它站立时翅膀完全展开,摆出一个戏剧性的姿势。

  • 姿势:鹈鹕的姿势有点尴尬,几乎是滑稽的,它的腿牢牢地踩在湿沙上,翅膀张开。看起来它可能正准备起飞或者只是在享受水。

  • 颜色和质地:鹈鹕呈浓郁的深棕色,翅膀和头部有较浅的斑纹。沙子呈柔和的米色,水反射阳光,营造出闪闪发光的效果。你可以看到沙子的纹理和水中的波纹。

  • 灯光:灯光显得明亮、阳光明媚,投射阴影并突出鹈鹕羽毛的细节。

  • 背景:背景模糊,表明景深较浅,从而将焦点保持在鹈鹕身上。这似乎是海滩场景。

  • 总体印象:由于鹈鹕的姿势和水暗示的运动,图像具有动态感。这是一张构图精良的照片,捕捉到了野生动物在自然栖息地的瞬间。

您想让我放大某个特定细节,或者告诉您更多有关鹈鹕的信息吗?

对于在我的笔记本电脑上运行的 3.2GB 型号来说还不错!

显示上面引用的响应的终端会话的屏幕截图。

运行 llama-server

更有趣的是llama-server命令。这将启动一个在端口 8080 上运行的本地主机 Web 服务器来为模型提供服务,并具有 Web UI 和 OpenAI 兼容的 API 端点。

运行它的命令是相同的:

 ./llama-server -hf unsloth/gemma-3-4b-it-GGUF:Q4_K_XL -ngl 99

现在在浏览器中访问http://localhost:8080开始与模型交互:

llama.cpp Web UI 的屏幕截图 - 我添加了一些鹈鹕的照片和描述这些生物的提示,它返回以下内容:好的,让我们描述这些美丽的鸟!  这些是褐鹈鹕(Pelecanus occidentalis)。  以下是根据图像对它们的主要特征进行的细分: 外观:它们是体型较大的棕色鸟类,有着独特的长而尖的喙。它们的羽毛呈浓郁的巧克力棕色,下体颜色较浅。它们的脚很大,有蹼。     姿势:如您所见,他们一起站在混凝土路堤上,可能靠近水边。他们的姿势有些拥挤或专注。     体型:它们是相当大的鸟类——成年鸟的翼展可达 6.5 英尺(2 米)。     行为:鹈鹕以其独特的进食技术而闻名,它们会潜入水中用育儿袋舀起鱼。  在图像中,您可以看到: 一群 6-7 只褐鹈鹕。     前景中的一只鸟,稍微失焦,更详细地显示了它们的羽毛和脚。  它们在哪里:这些鸟类的存在表明它们可能生活在沿海或湿地环境中——可能是海湾、河口或大片水域附近。  你想让我更深入地研究这些鸟类的任何具体方面,比如它们的栖息地、饮食或保护状况吗?右侧是“对话”侧边栏,列出了其他三个对话。

它错误地计算了合影中的鹈鹕数量,但同样,这是一个微型3.2GB 模型。

通过在端口 8080 上运行的服务器,您还可以访问 OpenAI 兼容的 API 端点。以下是使用curl执行此操作的方法:

卷曲 -X POST http://localhost:8080/v1/chat/completions \   -H “内容类型:application/json ” \   -d ' {  “消息”:[  {"role": "user", "content": "描述鹈鹕理想的企业度假胜地"}  ]  } ' |杰克

我刚刚为 LLM 构建了一个名为llm-llama-server的新插件,以使与此 API 的交互更加方便。你可以像这样使用它:

 llm 安装 llm-llama-server llm -m llama-server '为鹈鹕发明主题公园游乐设施'

或者对于视觉模型使用llama-server-vision :

 llm -m llama-server-vision '描述该图像' -a /path/to/image.jpg

LLM 插件使用流 API,因此响应将在生成时流回给您。

动画终端会话。 $ llm -m llama-server '为鹈鹕发明一个主题公园游乐设施' 好吧,这是一个有趣的挑战!让我们专门为鹈鹕(一种雄伟的潜水鸟)设计一个主题公园游乐设施。这是我的概念: 游乐设施名称:“鹈鹕跳水” 主题:海岸探索和水下探索 目标受众:有孩子的家庭(建议 8 岁以上)、动物爱好者以及那些喜欢刺激和温和探索的人。  乘坐类型:部分浸入水中的旋转“吊舱”体验,重点是模拟潜水和水下景观。  乘坐机制: 1. 吊舱:游客乘坐一个大型半圆形吊舱,形状像程式化的张开嘴的鹈鹕喙。  它由强化透明丙烯酸制成,内部设有舒适的座椅。吊舱可容纳约 8-10 人。  2. 发射:客人登上吊舱并面向前方。旅程从缓慢、平缓地爬上坡道开始,模仿鹈鹕从水中上升的过程。   3.“潜水”序列:这是骑行的核心。  吊舱进入一个模拟海底的大型黑暗房间。     * 旋转模拟:吊舱开始缓慢旋转,模仿鹈鹕潜入水中。     * 水效果:房间里充满了逼真的流动水——由泵、喷射器和屏幕组成的复杂系统创建。这创造了被海洋包围的错觉。    * 投影映射:在墙壁和地板上使用强大的投影映射来创建令人惊叹的水下视觉效果:鱼群、珊瑚礁、海带森林,甚至可以瞥见鲨鱼等海洋生物(当然,安全投影!)。    *“潜水”触发器:在旋转的特定点,吊舱将执行短暂的、受控的“潜水”——突然下降,产生速度感和跳入水中的感觉。  传感器检测旋转速度并触发这些潜水。  4. 水下探索:初次潜水后,吊舱继续旋转,提供投影水下场景的越来越详细的视图。      * 互动元素(可选):精心布置的小型屏幕可以显示类似声纳的视觉效果,让客人“扫描”环境并揭示隐藏的生物或细节。  5. 上升和返回:行驶速度逐渐减慢,将吊舱带回水面。随着它的升起,投影会发生变化,显示出阳光明媚的海岸线和在头顶飞过的海鸟。吊舱返回装载区。   主题和氛围: * 声音设计:身临其境的音效——海浪拍打、海鸟鸣叫、水下氛围——至关重要。 * 灯光:随着投影和“俯冲”序列而变化的动态灯光。 * 鹈鹕道具:逼真的鹈鹕雕像和道具遍布整个队列和周边区域。 * 教育元素:小型信息面板解释了鹈鹕的行为、保护工作以及海洋生态系统的重要性。  为什么这对鹈鹕有效: * 模仿自然行为:骑行准确地反映了鹈鹕的主要活动 - 潜水捕鱼。 * 视觉吸引力:水效果、投影映射和旋转的结合创造了迷人的身临其境的体验。 *适合家庭的刺激:“潜水”序列提供适度的刺激,但不会过于激烈。 * 教育价值:它提高了人们对这些神奇鸟类和海洋环境的认识和欣赏。    ---进一步的开发思路: * 不同的“潜水路线”:在水下环境中创建多条路线,每条路线都有不同的主题(例如珊瑚礁路线、深海路线、鹈鹕觅食地路线)。 * 电子动画鹈鹕:一只大型电子动画鹈鹕可以在客人登上吊舱时“迎接”他们。 * 气味融合:咸水和海藻的微妙气味可以增强沉浸感。    您是否希望我进一步集思广益,讨论骑行的特定元素,例如: * 投影映射细节? * 水效果的技术方面? * 独特的互动元素?

标签: vision-llms 、 llm 、 llama-cpp 、 ai 、 local-llms 、 llms 、 gemma 、 generative-ai 、项目

原文: https://simonwillison.net/2025/May/10/llama-cpp-vision/#atom-everything

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Lou Plummer
  • Luke Wroblewski
  • Matt Stoller
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme