FEATURED STORY / 01

同一张16GB显卡,为什么你的向量检索又慢又错?

为什么同样的16GB显卡,有人跑EmbeddingGemma 2顺顺当当,有人索引出来的结果却悄悄变差?答案不在显卡型号,而在三个设置。 EmbeddingGemma 2是Google DeepMind在10月6日以Apache 2.0协议发布的嵌入模型。嵌入模型把输入变成一串数字(这里是768个),语义相近的内容对应相近的数列,检索就变成"找最近的数列"。这个模型把文本、图像、视频和音频映射进同

READ
THE
DETAIL
EDITORIAL NOTE

为什么同样的16GB显卡,有人跑EmbeddingGemma 2顺顺当当,有人索引出来的结果却悄悄变差?答案不在显卡型号,而在三个设置。 EmbeddingGemma 2是Google DeepMind在10月6日以Apache 2.0协议发布的嵌入模型。嵌入模型把输入变成一串数字(这里是768个),语义相近的内容对应相近的数列,检索就变成"找最近的数列"。这个模型把文本、图像、视频和音频映射进同一个空间,下载包1.5 GB,参数量7.4亿。 有人把它部署在一块16 GB的NVIDIA RTX 2000 Ada上。加载本身不难,难的是三个设置——它们决定了向量是否正确、延迟是否合理。写索引任务之前,先把这三件事定下来。 一、数字格式选错,不报错但结果变差 GPU可以用紧凑的16位格式存数字,float16和bfloat16,把显存占用减半。但随权重一起发布的模型卡只允许bfloat16或float32。模型卡明确写道:在float16下,网络内部有些数值大到无法表示,结果是NaN或者悄悄退化的嵌入,而且不抛异常。放进检索索引里,就是程序不崩,排名变差。 模型卡给出的一行选型逻辑是: 能用bfloat16就用bfloat16,否则退回float32,永远不用float16 。在没有原生bfloat16支持的GPU上,float32回退需要两倍显存。所有实际运行都用了安全格式,所以float16的失败是Google的警告,不是复现出来的结果——那项测试还排在下一步。至少先确认你的技术栈实际加载的是哪种dtype。 二、容器只分到7核,PyTorch却开了64个线程 第一个后端处理图片比应有速度慢了两到五倍。性能分析显示,每张图GPU计算约72毫秒,CPU预处理却要0.33到0.44秒。容器的CPU配额(通过Linux cgroups设定的可用处理器份额)大约是7核,但PyTorch数到了宿主机的64核,于是起了64个线程去抢这7核。 把线程数限制到配额之后,单张图从531毫秒降到111毫秒,八张图从4333毫秒降到867毫秒,一段6秒视频从754毫秒降到307毫秒。文本和音频几乎没变化,所以只测文本的基准根本暴露不了这个问题。示例后端从cgroup配额推导线程数;没有配额时就得手动设。这个结论只在一个容器上验证过,建议按输入类型分别计时CPU预处理和GPU编码。 三、释放的显存不会还给系统 完整模型占用1.4 GB显存,只加载文本部分时是0.5 GB。单条请求峰值2.6 GB。批处理才是增长点:一次请求里放八份约6000 token的文档,峰值接近10 GB。 意外出现在请求结束之后。PyTorch会缓存已释放的显存以便复用,进程一直占着11.6 GB,直到重启。在超大请求之后调用 torch.cuda.empty_cache() 可以解决:同样一批数据跑完,进程占用回落到1.6 GB。做批量索引时,按你最大的批次来规划显存。 截短向量:速度不变,质量有代价 模型用Matryoshka表示学习训练,所以每个向量的前512、256或128个数字可以当作更小的嵌入使用。截短并没有更快——各种尺寸下每次查询都是34到35毫秒,省下的只有存储和传输体积。 质量损失取决于输入类型。模型卡称256维接近无损;到128维,文本还能撑住,图像和视频检索下降近四分之一,所以模型卡把128维留给文本。截短后要重新归一化(把向量缩放回长度1),并且查询和文档必须用同一尺寸嵌入。 这套测试证明了什么,没证明什么 测试索引里有十二个文件、零文本:照片、短视频和语音录音。六个英文查询各自把正确文件排在第一。"How to knead bread dough"匹配到一段西班牙语的面包食谱录音。十二个文件全部是生成的,所以这只能确认跨模态流程端到端跑通,不能说明模型与其他模型的优劣对比。 服务层面还有个坑:开源推理服务器vLLM在0.31.0版本时还不支持这个模型,连文本都不行,于是后端改用sentence-transformers写了个小的Python服务。Google的发布文章点名支持vLLM、SGLang、Ollama和llama.cpp,用之前先查当前版本。 特别

about image
上一篇 两个总监,三个候选人,谁来接替卡里克,曼联换帅先卡在宫斗这关... 下一篇 [流言板]中甲:梅州负无锡保级形势堪忧;苏州平石家庄;鲲城平亚泰...

觉得内容有价值?

分享给更多关注行业变化的朋友。

返回资讯列表
03 / TRENDING NOW

热点资讯

查看近期访问较多的内容,快速了解读者正在关注的行业话题。

碾压阿尔瓦雷斯!阿森纳锁定欧冠全能神锋!完美顶替 7000 万水货
1

碾压阿尔瓦雷斯!阿森纳锁定欧冠全能神锋!完美顶替 7000 万水货

阿森纳 0-3 惨败布莱顿,锋线彻底暴露致命短板! 哈弗茨全场隐身、进攻疲软,7000 万身价沦为队内大水货,难堪争冠大任。 夏窗枪手全力追逐阿尔瓦雷斯遗憾失败,如今球队找到 全方位碾压的终极替身 ! 阿森纳正式入局争夺战,锁定多特全能神锋拜尔! 年仅 23 岁的拜尔天赋拉满,能踢中锋、边锋、攻击中场,跑动积极、速度劲爆、终结效率稳定。 97 场赛事狂造 40 球,欧冠赛场同样有亮眼发挥,大赛属性

贾国龙急救西贝
2

贾国龙急救西贝

文| 《投资者网》张伟 餐饮行业从来不缺少潮起潮落的故事,位居中式正餐C位多年的西贝莜面村(下称"西贝")正经历创立三十多年来最艰难的一场大考。 近日,一则"西贝或将两三个月内倒闭"的微博让西贝再次冲上热搜,尽管西贝官方立马澄清,称全国门店正常运营,但无法掩盖的事实是,过去一年西贝的门店持续收缩、客流大幅下滑、亏损规模高企。 这种情况下,西贝创始人贾国龙一边大刀阔斧关停低效门店,一边密集孵化新品牌

亚运会落幕!中国队,2人陷入纷争!3人意难平,唯1人几乎零差评
3

亚运会落幕!中国队,2人陷入纷争!3人意难平,唯1人几乎零差评

名古屋亚运会,正式落下帷幕。 十几天的比赛,终于画上了句号。 中国队以金牌169枚、银牌89枚、铜牌83枚,总奖牌341枚的成绩,拿下奖牌榜第一,结束了这届赛事。 可这一届留下的故事,远比奖牌更加复杂。 乒乓赛场内外陷纷争 林诗栋今年21岁,这是他第一次参加亚运会。 在男单决赛中,林诗栋4比0横扫卫冕冠军王楚钦。 四局比分分别是11比5、11比8、13比11、11比5,全程只打了32分钟。 林诗栋

速递!弗格自宣加盟广东,宏远新赛季目标四强,胡明轩最新伤情
4

速递!弗格自宣加盟广东,宏远新赛季目标四强,胡明轩最新伤情

北京时间10月14日,宏远传来最新消息!弗格方面,他在个人社交媒体转发了自己身穿广东44号球衣的照片,并回复了前队友古德温的调侃,表示自己会将古德温传错的球会传回来,前提是他得让自己拿够40分。而他本人也已经正式到队,正在排队进行体检,相信宏远很快就会官宣。而广东的新赛季目标已经确定,在出征仪式上宏远主赞助商东阳光集团喊出了“保八争四”的赛季目标,显然现在的宏远更加务实,不再随便喊“广东总冠军”了

这8个草书字,我盯了半晌只敢确认2个!您能全认出来吗?老师教我一招:先看答案再对照,草书写法原来这么记!
5

这8个草书字,我盯了半晌只敢确认2个!您能全认出来吗?老师教我一招:先看答案再对照,草书写法原来这么记!

我看了几遍之后也只能承认其中两个是正确的!全部认识的人中,有识别草书的能力,请问可以教你一些东西吗?初学草书的时候要先看看注解和解释,在哪里可以找到答案的学习方式是怎样的呢?又不能跟着答案去硬记吗?许多读者在临帖识草的时候都遇到了这样的问题,在一开始就要参照释文来观察文字内容再试着去套用字形的话 时间长了并不是真的把草法学会了而是靠已经知道的文字含义硬是给它强行配上了相应的字形。把释文拿掉之后,同