2,251
0

回归C++: 在GGUF上构建高效的向量模型

回归C++: 在GGUF上构建高效的向量模型

关于让JINA模型”减肥”这件事

当大胖子遇上GGUF:一场体型管理与性能的革命

两周前,我们为jina-embeddings-v4这个”大胖子”准备了一份GGUF养生餐,外加各种量化低卡套餐(5bpw到8bpw不等)。这位37.5亿参数的重量级选手在我们的GCP G2健身房锻炼时,总是气喘吁吁跟不上节奏。所以我们决定–减肥!(其实是优化推理速度啦)

减肥过程的血泪史

  • 惊喜发现:现代向量模型和LLM竟然像失散多年的双胞胎(衣服不同而已)
  • 共同点:都穿着decoder-only风格的潮流服装
  • 主要区别
  • LLM喜欢即兴rap(生成式)
  • 向量模型更爱选择题(判别式)
  • 这让它们可以在llama.cpp的同一家健身房训练,共享高档器材如:

  • ubatch_size增肌器材
  • kv cache记忆力训练器
  • 但是!* 这家健身房的教练们还对BERT等老式教练的教学方法念念不忘,跟不上现代decoder-only的高端训练方式。
  • 我们是如何教会老健身房教新人跳舞的

    本文将揭秘:

  • 如何把decoder-only选手塞进GGUF瘦身衣
  • 在llama.cpp健身俱乐部开私教课的小妙招
  • llama-embedding瑜伽班
  • llama-serving健康餐配餐技巧
  • 准备好了吗?我们即将开始这段让大模型快乐减肥的神奇旅程!

    基础版与量化版 GGUF

    那个既懂代码又会找图的AI是怎么炼成的——技术宅的欢乐吐槽版

    咱们今天的主角是 jina-embeddings-v4,一个集大成(但也集小bug)的AI模型。它就像是学霸家里的那台超级电脑,不仅啥都能干,偶尔还会给你出点意料之外的”惊喜”……

    核心技能:一专多能的AI模范员工

  • 基于 Qwen2.5-VL-3B-instruct:是的,就是那个能看图又能聊天的AI前辈,但它现在是进阶版!
  • LoRA 适配器模块化设计
  • retrieval:专职”搜文档”,堪称办公室最快资料员。
  • text-matching:负责”文本相亲”,精准匹配两段话的灵魂契合度。
  • code:程序员挚友,能帮你在一堆代码里找到”那个对的它”。
  • 但它可不只是文字高手!视觉文档检索多向量输出也是它的隐藏技能——虽然目前有点小bug,人无完人嘛~

    技术路上的快乐(bug)之旅

  • 本想偷个懒,结果发现坑
  • 想直接用 llama.cpp 的计算图,结果`mmproj`(视觉模块)脾气古怪,相同图片输入的结果却和 PyTorch 版不一样!
  • 临时解决方案:GGUF 版本先”抠掉”视觉模块,等技术宅们在 fork 里慢慢修。
  • 多向量输出的”手工活”方案
  • 多向量输出本该直接搞定,但llama.cpp原生不支持……
  • 解决办法?
  • 先导出 MLP(就是个小但重要的神经网络)。
  • 手动应用计算,虽然不够优雅,但胜在能跑!
  • 这就是 jina-reranker-m0-GGUF 的做法——”先上车,后补票”的典范!
  • 未来发展:修bug、增功能、持续进化

  • 上游bug已提交:[链接在此,欢迎技术宅们围观](https://github.com/ggml-org/llama.cpp/discussions/14851)(虽然本文不能贴图)。
  • 视觉模块迟早王者归来——毕竟是AI,不能真的”瞎”啊!
  • 多向量输出会有更高效方案,毕竟没人喜欢”手动挡”AI,对吧?
  • 总之,jina-embeddings-v4 是个实力强但仍在努力的AI选手,让我们一起期待它的完全体吧!
    回归C++: 在GGUF上构建高效的向量模型

    量子飞跃还是技术减肥?大模型也玩”轻断食”!

    各位AI工程界的吃货朋友们,注意啦!今天我们的一道技术大菜是:如何把一个笨重的37.5亿参数大模型瘦身成30.9亿参数的”轻量版”!这简直就是AI界的”轻断食”教程啊!

    配料清单:

  • 主要食材
  • 一只肥美的Qwen2.5-VL-3B模型(约37.5亿参数)
  • 一套视觉Transformer(建议丢弃)
  • 点缀用的多向量投射器(也扔了)
  • LoRA适配器(榨干了就收起来)
  • 减脂秘方
  • 先给模型做个”全身体检”(计算图兼容性测试)
  • 大刀阔斧切除”视觉胃”(剥离视觉模块)
  • 抽脂掉投射器这个”脂肪团”
  • 把十全大补丸(LoRA)缝回本体
  • 最终成果
  • 三个量身定制的”瘦身v4模特”
  • 每个都比原版轻了6.6亿参数(这减肥效果堪比AI界的哥本哈根!)
  • 特意准备了”GGUF四件套”不同包装:
  • 思维推理装
  • 语言保健装
  • 多任务全家桶装
  • 啧啧,看看这身材管理!从37.5亿减到30.9亿,这哪里是模型压缩,根本就是给AI做了一次微创抽脂美容手术啊!要不怎么说现在的AI越活越精致呢,连参数量都要保持三十而立的标准体重!

  • 顺便说一句,这个减肥方案的副作用可能是——您的模型从此再也不能用眼睛看世界了,但是没关系,咱们主打的就是一个”心灵美”!*
  • 回归C++: 在GGUF上构建高效的向量模型

    当AI模型遇上”瘦身计划”:一场科学又滑稽的量化冒险

    第一步:给模型准备”体检表”

    我们的AI模特Jina小姐(全名jina-embeddings-v4-text-retrieval-F16.gguf)要进行瘦身大改造,首先得给她做个全面检查:
    shell
    llama-imatrix -m jina小姐的体检报告.gguf \

  • f 专业营养师配方.txt \
  • ngl 99颗维生素 \
  • -no-ppl 禁止吃泡面 \
  • o 重要性矩阵.dat
  • 这份`重要性矩阵.dat`就像是AI的”热量消耗表”,告诉我们哪些参数可以大胆减肥,哪些必须保持丰满。

    第二步:启动魔鬼训练营

    我们请来了著名健身教练`quantize.sh`,这位教练有18种不同的”瘦身套餐”(从IQ1S到Q80),堪称AI界的帕梅拉。教练的工作流程如下:

  • 脱掉浮点的外套:把F16这种宽松的运动服换成紧身衣
  • 个性化训练方案:根据那份”热量消耗表”精准塑形
  • 多种难度可选
  • IQ1_S:轻度有氧
  • Q2_K:HIIT暴汗
  • Q6_K:特种部队训练
  • Q8_0:这是要出道当爱豆的强度
  • 第三幕:集体亮相HF红毯

    经过这番”科学瘦身”,我们的AI模特们纷纷以更苗条的身材登上了HuggingFace这个时尚平台:

  • 原身材新身材*
  • F16超大码 Q4KM修身款
  • 浮点连衣裙 IQ3_XXS比基尼
  • 16位大码鞋 Q2_K小蛮腰
  • 最神奇的是*:虽然体重减轻了75%,但大脑一点没缩水!这就是AI界的”既要瘦又要智商在线”!
  • 回归C++: 在GGUF上构建高效的向量模型回归C++: 在GGUF上构建高效的向量模型

    如何愉快地搞砸你的GGUF向量模型部署

    朋友们,今天我们来聊聊一个能让开发者血压飙升的话题——如何正确(或者说如何错误)地部署GGUF向量模型。让我们开启这段欢乐的冒险!

    部署基本流程

  • 首先,你需要两个神奇的组件:
  • `llama-server` – 负责让你的服务器跑得像树懒一样快
  • `llama-embedding` – 专治各种”我觉得这个embedding不太对”的疑难杂症
  • 然后,你会遇到一个史诗级选择题:
  • Transformer库:上帝说”要有光”,于是有了预处理代码
  • llama.cpp:上帝说”你自己看着办”,于是你必须手动完成
  • 最重要的是,如果你想得到和原始模型完全不一致的结果(划掉)保持一致的结果,请务必:
  • 致命注意事项

    操作正确做法错误示范后果
    输入前缀非常小心地手动添加“随便啦,不就少个前缀嘛”获得一组神秘的随机数字
    重新编译除非你想重温大学编译原理课的噩梦“我就改个小参数,应该不用重新编译吧?”服务器以一种艺术性的方式崩溃
    保持一致性严格按照模板操作“上次没加前缀好像也没事?这次也省了吧”客户会发现你的AI突然开始讲冷笑话

    专家小贴士

  • 当你忘记加前缀时,神秘的东方力量会让你的模型输出变成”404脑回路未找到”
  • 手动预处理代码时,建议每写10行就检查一次,否则最后你会发现自己在调试”为什么这个helloworld跑不起来”
  • 如果一切顺利,恭喜你!如果不顺利…好吧,至少你获得了一次宝贵的debug经验
  • 记住:在AI的世界里,一致性就像女生的”我没生气”——你说你信了?
    回归C++: 在GGUF上构建高效的向量模型

    AI向量服务的奇幻漂流

    1. 那些让人摸不着头脑的前缀

    有些小伙伴可能会发现:在 text-matching 任务里,哪怕你倔强地写 `prompt_name=’passage’`,AI 还是会无情地给你改成 “Query: “
    这可不是 AI 在捣乱,而是因为它是个 对称任务,就像谈恋爱一样——没有谁是主谁是次,大家都是平等的!(但 AI 还是固执地让它们都叫 “Query”……)

  • —-
  • 2. 一键启动 AI 魔法服务器

    想玩 Jina v4?很简单!

  • 安装 llama.cpp,然后运行:
  • bash
    llama-server -hf jinaai/jina-embeddings-v4-text-matching-GGUF:F16 –embedding –pooling mean -ub 8192

  • 必加 `–pooling mean`,因为 v4 是靠 均值池化* 产生向量的。(不加的话?AI 可能一脸懵:“我的魔法棒呢?”)
  • 发射请求
  • bash
    curl -X POST “http://127.0.0.1:8080/v1/embeddings” \

  • H “Content-Type: application/json” \
  • d ‘{
  • “input”: [
    “Query: A beautiful sunset over the beach”,
    “Query: Un beau coucher de soleil sur la plage”,
    “Query: 海滩上美丽的日落”,
    “Query: 浜辺に沈む美しい夕日”
    ]
    }’

  • 注意:如果是 retrievalcode* 模型,你得自己手动加 `Query:` 或 `Passage:`!(AI:这不是我的锅,是你自己忘记前缀了!)
  • —-
  • 3. 偷懒神器:llama-embedding

    如果你想快速验(摸)证(鱼),可以用 `llama-embedding`:
    bash
    llama-embedding -hf jinaai/jina-embeddings-v4-text-matching-GGUF:F16 –pooling mean -p “Query: jina is awesome” –embd-output-format json 2>/dev/null

  • 但!批量处理时不推荐用它*(性能问题),除非你想让它慢慢悠悠跑上半天,然后你一边喝咖啡一边怀疑人生。
  • —-
  • 4. GGUF 模型的“雷区”

    必须要手动加前缀

  • 忘记加 `Query:` 或 `Passage:`?AI:“抱歉,我不认识你这段神秘代码。”(其实就是直接罢工)
  • 暂不支持图片

  • Qwen2.5-vl-3b视觉模块 目前在 `llama.cpp` 里是个 Bug,所以我们干脆砍掉了这个功能。(AI:“我的眼睛瞎了,等我治好再玩……”)
  • 暂不支持多向量输出

  • 想要多向量?可以试试:
  • `–pooling none` 拿 token 级向量
  • 再自己跑 MLP
  • (这相当于让 AI 把饭做好,你自己手动装盘)

  • —-
  • 5. 神奇特性:Matryoshka 嵌套表示

    v4 是个 俄罗斯套娃(Matryoshka)模型!

  • 你可以截断向量(比如 `embeddings[:, :128]`)
  • 但!只在特定维度训练过(128, 256, 512, 1024, 2048)
  • 别手贱截到 131 维,否则效果会比 128 和 256 都差!(AI:“我只有这些尺寸的衣服,你别乱剪……”)
  • —-
  • 6. 迟分技术的“新旧之争”

    v4 是 因果模型,所以 迟分(Late Chunking) 不再是双向的!

  • v3:每个文本块都了解上下文(AI:“我全都要!”)
  • v4:前面的块看不到后面的(AI:“我失忆了?”)
  • 团队内部吵翻天:*
  • 正方(支持因果):“阅读本来就是从前到后,迟分有理!”
  • 反方(反对单向):“AI 少了上下文,就像吃火锅没有蘸料!”
  • (结论:还得继续研究

  • —-
  • 7. llama-embedding vs llama-server:性能之争

    为什么选 llama-embedding?

  • 纯 C++,更快更直接(省掉网络开销)
  • 更适合本地测试
  • 为什么选 L4 GPU?

  • GCP 提供 Cloud Run,便宜又大碗
  • CEO 原话:“动不动就用 A100/H100?是我们 Skill Issue!()”
  • (CEO:3B 模型别闹了,好好优化吧。)

    关键参数

    参数含义限制
    `-b`逻辑批次大小(一次最多送多少 Token)受 `-ub` 影响
    `-ub`物理批次大小(硬件一次能吃多少 Token)受显存限制
    `-c`上下文窗口(AI 能记住多少 Token)v4 是 32,000

    (AI:“我的记忆力是有限的,别一次性喂太多!”)

  • —-
  • 总结

  • 前缀不能忘,否则 AI 不认你。
  • GGUF 有雷区,图片和多向量暂时别碰。
  • 迟分技术变了,v4 只能单向理解。
  • 优化性能?L4 性价比最高,别盲目上 A100。
  • AI 的世界很精彩,但也有它的规矩!玩得溜的前提——你得先懂它!*
  • 回归C++: 在GGUF上构建高效的向量模型

    Llama.cpp性能优化大变身:揭秘代码界的”超级减肥术”

    我们的代码变魔术般地在github.com/hanxiao/llama.cpp分支上演了一场”瘦身奇迹秀”。以下是这场演出的精彩看点:

    程序员福音:三招告别手动加班

  • 批次处理大解放
  • 彻底跟烦人的`-b`参数说拜拜!现在数值会自动追随上下文长度`-c`的脚步——就像咖啡总是自动追随程序员的手一样自然。

  • 显存调控自由行
  • 我们打破了”物理批次`-ub`必须等于逻辑批次`-b`”的”封建礼教”,让用户可以在32K长上下文中玩起512-token的微操——就像用牙签挖隧道那样精准!

  • 均值池化抢救行动
  • 修复了一个潜伏已久的bug:物理批次(`ub`)小于逻辑批次(`b`)时,均值池化会变成”均值失控”——感谢我们的技术医生给它做了心脏搭桥手术!

    新世界生存手册

    现在你只需要记住两条”魔法咒语”:

  • `-c`:最大上下文长度(就是你记事本的尺寸)
  • `-ub`:物理批次大小(相当于你一次能拿几本书)
  • 如何在L4 GPU上召唤神龙

    shell

    变魔术三部曲

    git clone https://github.com/hanxiao/llama.cpp.git
    cd llama.cpp
    cmake -B build -DGGML_CUDA=ON
    cmake –build build –config Release -j 8

    输入魔法

    INPUT_PREFIX=”Query: ” # 也可以cosplay成”Passage: ”
    cat biginput.txt | sed “s/^/${INPUTPREFIX}/” | \
    ./llama.cpp/build/bin/llama-embedding -f /dev/stdin \

  • hf “jinaai/jina-embeddings-v4-text-retrieval-GGUF:FP16” \
  • -pooling mean \
  • -no-escape \
  • -embd-output-format array \
  • -ubatch-size 512 \
  • -ctx-size 8192 \
  • -flash-attn \
  • ngl 99 \
  • “embeddings.txt” 2> “error.log”

  • 注意事项*:
  • `big_input.txt`里的每行都是等着变形的句子
  • `–no-escape`让换行符老实做人
  • `–flash-attn`和`-ngl 99`是L4 GPU上的”能量饮料”
  • 速度与激情:性能测试大挑战

    这群”实验室狂人”正在寻找以下宇宙真理:
    我们的量化模型vs原版v4 Float16——谁会胜出?
    性能下降到不如v3的”死亡临界点”在哪里?
    L4 GPU上各版本的速度pk赛结果
    内存占用高峰值的悬崖有多高?
    `-ub`和`-c`这对变量如何影响速度和内存?
    敬请期待他们的”科学实验报告”!
    回归C++: 在GGUF上构建高效的向量模型

    AI界的”压缩大战”:3.84比特选手勇夺桂冠

    在神秘的神经网络量化实验室里,科学家们正进行着一场比特级减肥大赛

  • 冠军诞生:经过残酷的量化测试,IQ3_M选手(3.84比特/参数量) 以微弱的优势击败其他竞争者,夺得”最苗条又聪明”的称号!
  • 悲催的低比特组:令人震惊的是,低于2比特的选手们表现惨淡,甚至被老前辈”v3″无情碾压——看来过度减肥真的会降智商啊!
  • 工具揭秘:所有测试都在我们自主研发的llama-embedding跑步机上完成(是的,羊驼现在也开始搞嵌入式健身了)。
  • 结论*:如果你想在AI界混,3.84比特是黄金身材,再瘦下去……可能连羊驼都懒得理你!
  • 回归C++: 在GGUF上构建高效的向量模型

    那些数字们在数据集上的”选美大赛”

  • 让我们来看看不同量化等级的”模特们”在各个数据集T台上如何走秀*——谁的分数最高,谁就能戴上王冠!
  • 性能排行榜单

  • FP32(全精度)
  • 好比T台上的超模:天生丽质难自弃,分数总是高高在上
  • 但缺点:裙子(内存占用)太重,走秀速度慢吞吞
  • INT8(8位整数)
  • 健身房常客:经过严格”减肥”,内存占用只有1/4
  • 表现:分数稍稍下滑,但依然能惊艳全场
  • 口头禅:”瘦身成功,速度翻倍!”
  • INT4(4位整数)
  • 极端节食爱好者:内存占用只有FP32的1/8
  • 表现:偶尔会”晕T台”,分数下降明显
  • 辩解:”我可是用最少的资源在拼搏!”
  • Binary(1位)
  • 极简主义博主:要么是0,要么是1,绝不含糊
  • 表现:分数时常”崩塌”
  • 名言:”别看我得分低,可我跑得快呀!”
  • 评委们的特别点评

  • 计算机视觉数据集:”FP32像个优雅的芭蕾舞者,INT8是街舞高手,INT4则是…呃…广场舞水准?”
  • 自然语言数据集:”这里Binary就像一个不停说’是’或’不是’的直男,完全get不到语境啊!”
  • 语音识别数据集:”INT8在这里意外地给力,看来是个多才多艺的选手!”
  • 最终建议:如果你追求分数,FP32是你的梦中情人;如果你在意身材和速度*,INT8是最佳选择;如果你想挑战极限…祝你和Binary相处愉快!
  • 回归C++: 在GGUF上构建高效的向量模型回归C++: 在GGUF上构建高效的向量模型

    速度与显存:当技术遇上“减肥”

    我们拿NanoHotpotQA这个小可爱来做实验,给所有“瘦身版”(量化版本)测速度和显存占用。结果发现,FP16精度的GGUF版本竟然跑出了2023 tok/s,比“原装大佬”(1865 tok/s)还快了一丢丢!其他量化版本则普遍挤在2000-2100 tok/s的赛道上,像一群在马拉松终点前挤成一团的选手。
    然后我们开启了Flash Attention——瞬间爆种!所有量化版本速度直接起飞,平均提速77%,飙到3000 tok/s以上,仿佛背后被人塞了一台火箭推进器。
    不过,即便是最快的Q8_0版本(3700 tok/s),在和原生v3模型的16000 tok/s对比下,仍然像个气喘吁吁的蜗牛在追高铁。
    显存方面倒是亮点满满——尤其是IQ3这个“瘦身冠军”,显存占用已经快赶上v3 FP16,仿佛在说:“虽然我跑得慢,但我吃得少啊!”

  • 总结:*
  • 速度提升? Flash Attention 是神器,但量化版仍被原生甩八条街。
  • 显存救星? IQ3 已经瘦得像个超模,比原生FP16还精打细算!
  • 最终结论: 想要飞一般的感觉?得加钱(显存)!
  • 回归C++: 在GGUF上构建高效的向量模型

    量化等级大比拼:谁才是显存界的博尔特?

    量化赛道的奇妙世界

    想象一下,模型们正在进行一场特殊的奥运会:

  • 重量级选手(无量化):穿着全副铠甲跑步,占据整个跑道(显存大户),速度慢得像在散步。
  • 轻量级选手(4-bit):穿着比基尼参赛,几乎不占地方,跑得跟踩了风火轮似的。
  • 其他级别:在这两个极端之间摇摆,像在犹豫该穿羽绒服还是短袖。
  • 理想模特(划掉)模型的标准

    每个工程师心里都有个梦中情”模”:

  • 身材管理专家:显存占用越小越好,最好能塞进手机里。
  • 短跑健将:推理速度要快,最好能赶上你老板要求交付的deadline。
  • 住在右上角的贵族:在速度vs显存的图表上,它们优雅地占据着右上角的位置,就像学霸霸占了光荣榜。
  • 现实很骨感

    但现实往往像你的新年计划:

  • 想要速度快?显存可能会膨胀得像双十一后的快递站。
  • 想省显存?速度就可能慢得像政府部门办事窗口。
  • 真正的赢家是那些在两者间找到完美平衡的,就像既能吃火锅又不长胖的神仙体质。
  • 回归C++: 在GGUF上构建高效的向量模型回归C++: 在GGUF上构建高效的向量模型

    物理批次与上下文大小:一场速度与显存的“跷跷板”比赛

    各位围观群众注意了!今天我们来看一场科技界的“拔河比赛”——物理批次大小上下文长度如何像两个杠精一样互相拉扯GPU的性能和内存!

    测试环境:L4 GPU上的量化大战

    我们锁定了IQ3_S量化版本作为我们的“武器”,毕竟谁不喜欢小而美的东西呢?(显存:你礼貌吗?)

    实验数据:速度VS显存的巅峰对决

  • -ub=512,-c=2048:这位选手表现优异,跑出了4,143 tok/s的惊人速度,同时只吃了2,025MB显存——简直是GPU界的马拉松冠军加轻量级拳王!
  • 其他配置:不好意思,它们要么跑得慢,要么吃得太多,已经被裁判无情淘汰了。
  • 结论:科技圈的“恰到好处”哲学

    经过无数次的“我调参,我快乐”之后,我们总结出了以下黄金法则

  • 上下文长度(-c)
  • 别像个购物狂一样无脑拉满!找到你的输入文档能塞进去的最小上下文
  • 想想你买电脑包的时候——“能装下笔记本就行,何必背个行李箱?”(显存疯狂点头)
  • 物理批次大小(-ub)
  • 在L4 GPU上,512就是那个“你怎么折腾都不会被打”的完美数字。
  • 再大?显存哭了。再小?GPU觉得你在侮辱它的计算能力。
  • 总之,调参就像是找对象:“合适”比“越多越好”更重要

  • (注:以上测试结果均为实验室数据,实际使用时,请勿让您的GPU因过度工作而闹脾气。)
    回归C++: 在GGUF上构建高效的向量模型

    性能热力图解读指南

  • 左边:速度竞技场*
  • 亮色区域:这些是代码界的博尔特,以光速处理Token(可能偷偷装了喷气背包)
  • 暗色角落:这里的处理器大概在边喝咖啡边看报纸,速度堪比树懒发邮件
  • 右边:显存食欲表*
  • 荧光色块:显卡正在吃”内存自助餐”,腮帮子鼓得像仓鼠囤粮
  • 深色区域:显存处于减肥期,饭量比麻雀还小
  • 专业小贴士* :
  • 想同时拥有赛车速度和金鱼记忆?找那些”左亮右暗”的神仙参数组合
  • 看到”左暗右亮”的组合请绕道——你的显卡会发出类似烤箱的嗡鸣声
  • 回归C++: 在GGUF上构建高效的向量模型

    电脑显存:一场内存版的“吃鸡”游戏

    当显卡内存开始“暴饮暴食”时

    想象一下你的显卡是个周末聚餐的大学生:

  • 轻度办公:就像吃食堂——50MB显存就够了,还能剩半碗饭
  • 打游戏:瞬间变成自助餐狂魔——“这个特效我要!这个分辨率我也要!”(狂奔向8GB显存)
  • 挖矿/AI绘图:直接开启“大胃王比赛”模式,把显存当成黑洞往里灌
  • 显存占用的迷惑行为大赏

  • chrome浏览器:开3个标签页?“先占个2GB显存热身吧”
  • 独立显卡:“我8GB的显存就是用来…等等为什么开个PS就报警了?!”
  • 集成显卡:“显存?什么显存?我都是跟内存大哥借的高利贷”(默默吃掉你一半内存)
  • 专业建议(认真脸)

    下次看到显存占用峰值时,不妨对它说:“少吃点,你又不是2080Ti!”
    终极生存法则:买显卡时显存容量请自动×2,因为开发者永远能想出办法把它喂饱回归C++: 在GGUF上构建高效的向量模型

    结论

    如何在便宜显卡上玩转AI?教你用”穷鬼套餐”飙出4000字每秒!

    1. 硬件预算不够?算法来凑!

    还在为买不起高端显卡发愁?别担心!我们现在推出了“穷鬼快乐版”组合:

  • IQ3S / IQ3M GGUF模型 —— 专为预算有限的小伙伴优化
  • 定制版 llama-embedding 工具 —— 让你的显卡发挥200%的潜力
  • 普通句子(<2048字)测试中,这套配置能飙到4000字/秒,速度堪比隔壁土豪的4090!

    2. 处理超长文档?三招教你省显存!

    想处理堪比《三体》长度的文档(>32K字)?只需记住这三招:

  • 调大 `-c` 参数 —— 把上下文窗口拉满
  • 调小 `-ub` 参数 —— 把批次降到1024
  • 祈祷显存别爆炸(误)
  • 结果?只需3GB显存,就能让老显卡奇迹般地撑起超长文本!要知道,这在原版Transformers里可是想都不敢想的事情……

    3. 我们的目标:更快!更省!更强!

    4000字/秒?呵,这远远不是终点! 我们的目标是:
    修复 `llama.cpp` 里 `qwen2.5-vl-3b` 的瞎眼视觉模块(谁写的代码?)
    深入优化 `llama.graph` 和 KV缓存 机制
    让 `llama-serving` 的批处理逻辑聪明一点
    给API加个“流式输出”,像奶茶一样顺滑~
    最终,我们想让 `llama.cpp` 真正支持现代多模态模型,为未来的AI世界打下穷人也能享受的基础

  • (本文干货来自微信公众号”Jina AI”,已用魔法翻译成人话)*
  • © 版权声明

    相关文章