immich智能搜索大模型在intel HD630核显下的测试

最近immich更新,带来了更好的NLLB模型支持。按翻译来看,中文用户的智能搜索模型除了XLM-Roberta-Large-Vit-B-16Plus又多了一个选择:nllb-clip-large-siglip__v1

Better multilingual searching with NLLB models
原文:
The NLLB model family performs the best for most languages excluding English, but Immich didn’t use them optimally. This release lets them perform at their best and brings a new tradeoff for searching: NLLB models give the best results for most languages, in exchange for the model interpreting a user’s searches as being in the user’s UI language.
If your users mainly search in a single non-English language, then these models are definitely worth a look. Each user can search in a different language since it’s based on the user’s UI language, applying to both the web app and mobile app (the latter must be updated to 1.131.0 or later for it to apply). If you’d like the flexibility for the same user to search in different languages, or if your users mainly search in English, then other models will work better for those usages.
See the documentation for more info on how to pick and change the search model.

机翻:
NLLB 模型系列在大多数语言中表现最佳,但不包括英语,然而 Immich 没有充分利用它们。此次发布让它们能够发挥最佳性能,并带来一个新的权衡:NLLB 模型为大多数语言提供最佳结果,但需要模型将用户的搜索解释为用户界面语言。

如果您的用户主要使用一种非英语语言进行搜索,那么这些模型绝对值得一看。每个用户可以使用不同的语言进行搜索,因为它是基于用户界面语言的,适用于网页应用和移动应用(后者必须更新到1.131.0或更高版本才能应用)。如果您希望同一个用户能够使用不同的语言进行搜索,或者您的用户主要使用英语进行搜索,那么其他模型将更适合这些用途。
查看文档以获取更多关于如何选择和更改搜索模型的信息。

于是我就尝下鲜。换个模型试试。

配置

immich运行在家庭服务器里,服务器的cpu是羸弱的j4125。

服务器自带的核显intel HD600在运行immich的机器模型时有问题。所以一直都是纯CPU运行的。

后来我嫌慢,把家里的冥王峡谷(cpu i7-8809g,4核心8线程,采用Intel 14nm制程,单核最高睿频4.2GHz,全核最高睿频3.9GHz,核显是intel HD 630。自带的amd的显卡这里用不上)也部署了immich的机器学习模型(纯CPU运行的),供服务器在内网远程调用。

升级模型的代价是:需要给我3万多张照片喂给模型重新跑一遍(用的是照片元数据,不是照片本体,数据量很小)。突然想到试试冥王峡谷的核显HD630,毕竟是核显,应该比cpu快吧?

实践

  1. 在冥王峡谷使用docker额外部署了image: ghcr.io/immich-app/immich-machine-learning:v1.131.3-openvino,此时冥王峡谷上有2个immich机器学习服务,一个纯CPU(端口3003),一个纯核显(端口3004)。

  2. immich的机器学习的服务url配置切换到冥王的核显服务。

盯着任务面板剩余任务数量,发现任务执行地好像变慢了。

然后我又做了测试证实了这个结果:

核显openvino与纯CPU的效率区别

分别使用2个服务进行了20分钟测试:

服务模式 效率(个/小时) immich任务并发设置 任务cpu占用 核显占用 内存 功率
纯cpu 1377 4 65%-75%(全核参与,3.8Ghz) 0 3.5G 100W
核显openvino 651 4 0 间歇100% 3.5G 50W

可以看到,实际上cpu的效率反而比核显效率高(功耗比核显高一倍),确实和预期相反。

观察一段时间任务管理器发现:

  • 纯cpu模式:cpu全时占用,多任务并行,并发设置越高,cpu负载越大
  • 核显模式:核显间歇占用,任务按顺序单个执行,核显负载和任务并发设置无关

所以原因是:核显利用率没有起来,核显执行任务时,两个任务之间有等待、空闲的时间

结论

核显比cpu是否更强这个我没法得出结论,但是immich大模型镜像对核显的调度效率不高应该是个事实。
还是回归我的cpu模式吧,就是费点电的事。

后来我在纯cpu模式继续监测了2个小时,得出效率是2172张照片每小时。

其他

huggingface下载这两个模型很慢,用代理(https://hf-mirror.com)会快些。提前告知下当前(2025年4月)版本的模型大小(网页上看不到):

模型 硬盘占用
XLM-Roberta-Large-Vit-B-16Plus 15.39GB
nllb-clip-large-siglip__v1 27.77GB
4 Likes

智能搜索?就是照片的各种场景识别和文本识别归类?那应该和mtphotos的ai识别是一样的,这个功能感觉没啥用,远不如人脸识别有用。

1 Like

人脸识别是另一个功能,immich也有的

是的,我知道,现在两个应该都用的是Insightface模型容器识别吧。

目前immich人脸识别和智能搜索用的不是同一个模型

nllb上一个版本的release里发了一批对特定语言优化的模型。我换掉了我之前的XLM-Roberta-Large-Vit-B-16Plus。现在是XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k(可能只是一次小版本更新?)。图库一共1.7w张照片,12300t,用cpu跑的,分配了6c,跑了一下午。

感觉提升非常大!我的图库里有很多的截图,之前这种截图会无规律地出现在各种搜索结果里。现在完全没有。搜索速度提升也很明显。

又看了一眼,当时看xlm比nllb运行时间少了一半,没选nllb

智能搜索是语义化搜索,比如你直接在搜索栏写蓝色的汽车,结果第一个就是蓝色的汽车

我知道,mtphotos也是两个

嗯,识别出来是有这功能可以搜索,但是很多识别不准,证件照片都识别不全,有的能识别到有的不能

试试换个模型呢。 现在对图片搜索只有语义,如果再+一个OCR就完美了

HD630都能这么快,那更新的Xe估计能超越CPU了 :smiling_face_with_three_hearts:

ocr的话,挺吃gpu的?不过其实我也没这个需求,人脸识别好用就足够了

嗯,还是看自身需求,我会偶尔通过文字找照片素材

我入坑的时候,纯中文也是只有一个选择xlm,现在多了这个nllb,使用了几天,不知道是不是幻觉,感觉快了一点?

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。