首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >immich机器学习基础和配置使用

immich机器学习基础和配置使用

作者头像
用户1160092
发布于 2024-12-05 06:02:24
发布于 2024-12-05 06:02:24
3.4K04
代码可运行
举报
文章被收录于专栏:MUM笔记MUM笔记
运行总次数:4
代码可运行

immich的机器学习基础

之前的一篇文字说了,如何私有化部署自己的私有相册, immich提供的照片相关的AI功能,如人脸检查,搜索等,参考告别付费会员,部署适合个人的相册库

这些功能是靠ghcr.io/immich-app/immich-machine-learning这个镜像提供的。这个镜像独立于主要的immich-server。镜像的主要主要为server端提供人工智能相关的接口。这个镜像可以独立部署,也可以集成部署,当然也可以选择不部署。这个根据自己机器的性能来看,如果只是照片备份或者简单的相册功能,可以不用,不过提供的AI功能是真的好用。担心机器性能的,官方推荐的2个核心, 4G内存是完全可以部署起来的。

实现这些智能功能的容器叫做immich-machine-learning, 机器学习。 这是人工智能领域的一个技术,即通过计算机程序的自我学习,实现像人一样,能够智能的完成一些工作或者判断一些事务。

比如,immich的一个功能,照片搜索,其实就是一个以文搜图的场景,这个在baidu等搜索引擎上很常见,但是要搬到你家的NAS或者软路由上,没有后台强大的服务器支持,需要怎么实现呢?

这里依靠一个叫模型的东西。这个大家可能听过:大模型,chatGPT等的关键技术也是这个。 正常我要识别一张照片是猫,而不是狗,可以通过观看他得外貌,耳朵、鼻子,体型等特征,基于我们得认知,得到结论。计算机也是一样,,对于一张猫得照片,不过它不知道什么鼻子嘴巴,它需要通过建立一个数学模型,集合大量得数据,经过一复杂的运算,得到一套标准(这就是所谓的训练):然后给定一张新得照片,符合这个标准得,就是猫(所谓得推理)。

模型就是把训练得结果保存起来,然后应用根据相应得接口要求去调用并返回,这样我们得设备或者程序就智能了。

当然是智能还是智障,和你的模型(标准)、机器资源(快慢)、输入(符合度)都有关。

模型:你选择了什么样的模型,就表明你具备了什么能力,是识图,还是识字得模型是不一样得。在识图一类得模型中,训练得越好得,精确度越高。

机器资源:就是你允许模型的地方,你如果内存、cpu这些都不够,你让他判断得时候,直接OOM了,那也是不行的。

输入:就是你让他判断得是什么,如果是一个识图得模型,你让让他写作,风马牛不相及,他肯定干不了。

开源社区,做好了很多的模型,大家可以直接用,具体可以到hugingface站点:https://huggingface.co/ 去查询和下载。这些模型用的过程中,也可以进行二次训练,这个站点也提供了训练的数据集。

私有部署immich遇到的问题

immich得机器学习中,用了2类模型:人脸识别模型,和搜索模型。

这两类模型其实很多,但是得让immich能够调用(即前面说得遵循得规则),所以immich得文档里面提了很多支持得模型。 具体选择什么样得模型,怎么配置,在immich的web端可以进行配置,参考这里:

可以设置是否启用,调用的接口是什么。下面可以对每一个功能设置相关的参数,比如用什么样的模型,具体检查的精确度等。

但是第一次部署完成之后,照片备份完成,按照页面设置,开启智能搜索, 模型按照默认的选择,发现搜索等功能都用不了。

查看immich-machine-learning得日志,发现很多这样的打印,都是下载失败:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[11/26/24 07:47:31] INFO Downloading detection model 'buffalo_l'. This may take a while. [11/26/24 07:47:32] WARNING Failed to load detection model 'buffalo_l'. Clearing cache. [11/26/24 07:47:32] WARNING Attempted to clear cache for model 'buffalo_l', but cache directory does not exist [11/26/24 07:47:32] WARNING Failed to load detection model 'buffalo_l'. Clearing cache. [11/26/24 07:47:32] WARNING Attempted to clear cache for model 'buffalo_l', but cache directory does not exist [11/26/24 07:47:33] INFO Downloading visual model 'ViT-B-32__openai'. This may take a while. [11/26/24 07:49:42] INFO Downloading detection model 'buffalo_l'. This may take a while. [11/26/24 07:49:42] WARNING Failed to load visual model 'ViT-B-32__openai'. Clearing cache. [11/26/24 07:49:42] WARNING Attempted to clear cache for model 'ViT-B-32__openai', but cache directory does not exist [11/26/24 07:51:54] INFO Downloading visual model 'ViT-B-32__openai'. This may take a while.

查看了下代码,官方站点提供的是通过huggingface的接口下载的,但是国内因为大家都知道的原因,下载肯定失败。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from huggingface_hub import snapshot_download
...

 def _download(self) -> None:
        ignore_patterns = [] if self.model_format == ModelFormat.ARMNN else ["*.armnn"]
        snapshot_download(
            f"immich-app/{clean_name(self.model_name)}",
            cache_dir=self.cache_dir,
            local_dir=self.cache_dir,
            ignore_patterns=ignore_patterns,
        )

不过hugeface,在国内有镜像站,HF-mirror : https://hf-mirror.com。这里尝试从国内镜像站下载了,手动传上去。

模型下载

在查阅资料的时候,了解到immich默认的搜索模型ViT-B-32__openai不支持中文,于是搜索的模型换成了XLM-Roberta-Large-Vit-B-16Plus。参考hf-mirror首页得如何使用,下载方式有很多。

这里我选择了git的方式直接全部拉下来。

模型记得选择immich-app这个拥者的。下载过程如下;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 确保安装了git和lfs,用如下命令验证是否安装了
git lfs install
# 如果没有安装

# 根据系统选择更新软件源,参考这里https://github.com/git-lfs/git-lfs/blob/main/INSTALLING.md
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
apt-get install git-lfs

# 安装完成之后直接下载对应得模型文件,XLM-Roberta-Large-Vit-B-16Plus和buffalo_l
git clone https://hf-mirror.com/immich-app/XLM-Roberta-Large-Vit-B-16Plus
git clone https://hf-mirror.com/immich-app/buffalo_l

修改安装docker-compose文件

默认得compose文件,模型并没有持久化保存,所以修改docker-compose文件中 immich_machine_learning得volume部分

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 immich-machine-learning:
    container_name: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
    #   file: hwaccel.ml.yml
    #   service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - /data/immich/modelcache:/cache   # 修改这里,根据个人情况,我这里是/data/immich/modelcache
    env_file:
      - immich.env
    restart: always
    healthcheck:
      disable: false

如果你的immich是部署在有GPU得机器上,可以选择开启GPU硬件加速,可以提高搜索、识别得速度。参考compose中注释掉得部分

然后将模型放到你得本地路径下,这里遇到了一个小坑:这个模型得目录结构。 最开始我是这样得结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.
└── modelcache
    ├── buffalo_l
    └── XLM-Roberta-Large-Vit-B-16Plus

然后日志还是提示失败。查了下,好像也没找到相关资料,都是直接下载了放到对应目录下,不知道是不是版本更新了。然后我在下载得代码/usr/src/app/models/base.py里面加了一条log

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def download(self) -> None:
        if not self.cached:
            log.info(self.model_path)  # 增加得日志打印
            log.info(
                f"Downloading {self.model_type.replace('-', ' ')} model '{self.model_name}'. This may take a while."
            )
            self._download()

看到日志路径应该是这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[11/28/24 17:10:53] INFO     /cache/clip/XLM-Roberta-Large-Vit-B-16Plus/visual/model.onnx   
...
[11/28/24 20:29:14] INFO     /cache/facial-recognition/buffalo_l/detection/model.onnx  

原来在模型前面还有一个路径,分别是clip和facial-recognition,按照以上得路径,重新存放我们git拉下的目录,结构如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
├── modelcache
│   ├── clip
│   │ └── XLM-Roberta-Large-Vit-B-16Plus
│   └── facial-recognition
│       └── buffalo_l

然后在看容器的log,就没有发现错误了。

机器学习功能验证验证

到配置页面,修改搜索得模型为XLM-Roberta-Large-Vit-B-16Plus

修改之后,需要手动触发任务,更新数据

等待任务完成,我就可以快速得搜索了。速度算不上多快,属于能接受的范围,如果我机器配置高一点,应该会更快。

比如这里,我搜索关键字沙漠,就把几年前去沙漠得照片都搜索出来了

总结

之前一篇文章,immich作为自己私有得在线相册是非常方便得,今天配置完成了机器学习相关的内容,不管是web端,还是app端,都非常方便,都媲美商业软件了。关于immich的人工智能功能,说几点大家可能关心得吧:

  1. 资源占用问题。我限制了机器得配置2核心4G。 在日常过程中,资源基本是空闲得。包括搜索得时候,占用资源也很少。 只有在更换模型,触发后台任务更新得时候占用较高。此时得负载在200%左右。这个是完全能接受得,因为immich得这个任务更新不是一直都在运行,第一次批量上传完成之后运行即可。后面的任务都可以增量运行。
  2. 关于模型选择问题,官方提供的,毕竟不是适合中文的,前面说的地图也是这样。 所以这个需要自己去找到合适的模型。模型的名称里面体现了一些训练的参数等,比如这里两个模型用的_l16Plus,代表的含义是不一样,不同的模型,对资源占用,精确度等都不一样,有精力的可以看下模型的介绍自己验证下。
  3. 模型下载,不同的技术框架,得到的模型是不一样的。比如这里我们用到的是onnx,这个不是主要的,主要的是遵循相应的框架接口。下载的时候,不知道,可以像我这样,直接全部拉下来,路径匹配好就行。不用纠结这些文件我都不认识,我该下哪个。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-12-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MUM笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hugging Face 的应用
Hugging Face 专门开发用于构建机器学习应用的工具。该公司的代表产品是其为自然语言处理应用构建的 transformers 库,以及允许用户共享机器学习模型和数据集的平台
霍格沃兹测试开发Muller老师
2024/09/09
1800
当Git和Git-LFS无法解决机器学习复现问题时,是时候祭出DVC了
有人认为,由于软件工具的不充分,无法保证完全复现机器学习模型的结果,机器学习领域正「陷入危机」。这个危机可以通过为机器学习从业者提供更好的软件工具来解决。
机器之心
2019/06/20
2.2K0
当Git和Git-LFS无法解决机器学习复现问题时,是时候祭出DVC了
Chat with RTX:定制聊天机器人体验!一键安装+离线模式设置,畅聊不停歇!
在基于 NVIDIA GPU 的强大云端服务器支持下,聊天机器人已经深入到全球数百万人的日常生活中。这些开创性的工具不仅提供了便利的沟通方式,还大大提升了信息获取和处理的效率。而现在,这些先进的 AI 技术将进一步拓展其应用场景,搭载在 NVIDIA RTX 的 Windows PC 上。这不仅实现了本地化的 AI 运算,还为用户带来了更快速、更个性化的生成式 AI 服务。无论是商务沟通、学习辅助还是娱乐互动,搭载 NVIDIA RTX 的 Windows PC 都将为用户提供更高效、更精准的 AI 支持。
不可言诉的深渊
2024/02/26
1.8K0
Chat with RTX:定制聊天机器人体验!一键安装+离线模式设置,畅聊不停歇!
成为钢铁侠!只需一块RTX3090,微软开源贾维斯(J.A.R.V.I.S.)人工智能AI助理系统
    梦想照进现实,微软果然不愧是微软,开源了贾维斯(J.A.R.V.I.S.)人工智能助理系统,贾维斯(jarvis)全称为Just A Rather Very Intelligent System(只是一个相当聪明的人工智能系统),它可以帮助钢铁侠托尼斯塔克完成各种任务和挑战,包括控制和管理托尼的机甲装备,提供实时情报和数据分析,帮助托尼做出决策等等。
用户9127725
2023/04/07
1.1K0
成为钢铁侠!只需一块RTX3090,微软开源贾维斯(J.A.R.V.I.S.)人工智能AI助理系统
《书生·浦语大模型实战营》第5课 学习笔记:LMDeploy 量化部署 LLM 实践
这种说法是片面的,虽然计算机计算定点数和整数比计算浮点数快,但是模型的参数仅仅是以定点或者整数的方式存储,在实际计算时,还需要把定点数和整数反量化为浮点数进行数值计算,再把计算的结果以定点数或整数进行存储,这一步的目的是最大化减少计算精度的损失。
流川疯
2024/07/01
6420
《书生·浦语大模型实战营》第5课 学习笔记:LMDeploy 量化部署 LLM 实践
一种从 🤗HuggingFace 下载模型的方法
无法直接从 HuggingFace[1] 下载模型时,可借助 https://github.com/AlphaHinex/hf-models 仓库,使用 GitHub Actions[2] 构建一个 Docker 镜像,在镜像中用 huggingface_hub[3] 下载好所需模型,再将镜像推送至 Docker Hub[4],最后以下载镜像方式曲线下载模型。
AlphaHinex
2024/04/09
1.4K0
一种从 🤗HuggingFace 下载模型的方法
Transformers 4.37 中文文档(十三)
Transformers Agents 是一个实验性 API,随时可能发生变化。代理返回的结果可能会有所不同,因为 API 或底层模型可能会发生变化。
ApacheCN_飞龙
2024/06/26
6660
[大模型]QAnything的docker安装方法
QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。
云未归来
2025/07/20
400
[大模型]QAnything的docker安装方法
MLC LLM——本地应用程序上原生部署任何语言模型
在AI浪潮风起云涌的当下,AI正在不断地重塑着每一个行业。在各大厂先后争先恐后地推出一系列大模型的同时,也不断出现了很多开源的大模型。今天介绍的这个出现在GitHub热榜上的项目是MLC LLM。它是一种通用解决方案,可以在各种硬件后端和本地应用程序上原生部署任何语言模型,同时为所有人提供一个高效的框架,以进一步优化模型性能以适应其自身的用例。 一切都在本地运行,无需服务器支持,并且可以在手机和笔记本电脑上通过本地GPU加速。
山行AI
2023/06/14
3.6K0
MLC LLM——本地应用程序上原生部署任何语言模型
使用 Docker 和 Alpaca LoRA 对 LLaMA 65B 大模型进行 Fine-Tune
这篇文章中,我们来聊聊如何使用两张显卡来进行 LLaMA 65B 大模型的微调工作,以及如何在一张普通的 4090 家用显卡上,只花几个小时,就能够完成 7B 模型的微调。
soulteary
2023/03/25
5K1
使用 Docker 和 Alpaca LoRA 对 LLaMA 65B 大模型进行 Fine-Tune
使用 Docker 快速上手官方版 LLaMA2 开源大模型
本篇文章,我们聊聊如何使用 Docker 容器快速上手 Meta AI 出品的 LLaMA2 开源大模型。
soulteary
2023/09/04
6980
使用 Docker 快速上手官方版 LLaMA2 开源大模型
stable-diffusion-webui [Centos]安装记录
基于 https://github.com/AUTOMATIC1111/stable-diffusion-webui
Michael阿明
2023/08/21
1.4K0
stable-diffusion-webui [Centos]安装记录
5 分钟实现「视频检索」:基于内容理解,无需任何标签
「视频检索」任务就是输入一段文本,检索出最符合文本描述的视频。随着各类视频平台的兴起和火爆,网络上视频的数量呈现井喷式增长,「视频检索」成为人们高效查找视频的一项新需求。
Zilliz RDS
2023/01/10
4.9K0
5 分钟实现「视频检索」:基于内容理解,无需任何标签
transformers示例
「重要」 :要运行示例的最新版本,你必须从源代码安装并为示例安装一些特定要求。在新的虚拟环境中执行以下步骤:
磐创AI
2020/03/31
1.7K0
「最佳实践」通过ES的机器学习功能,实现一站式NLP语义聚合
随着腾讯云ES 8.8.1及其后续版本8.11.3、8.13.3的推出,腾讯云ES在人工智能、向量搜索和自然语言处理(NLP)等领域功能得到了显著的增强。这些新功能为开发者提供了更多的可能性,尤其是在处理复杂的NLP任务时。本文将探讨如何利用腾讯云ES的机器学习功能,实现一站式的NLP语义聚合,并通过demo来实践来这一过程。
Rassyan
2024/05/14
7120
「最佳实践」通过ES的机器学习功能,实现一站式NLP语义聚合
使用 Docker 快速上手官方版 LLaMA2 开源大模型
本篇文章,我们聊聊如何使用 Docker 容器快速上手 Meta AI 出品的 LLaMA2 开源大模型。
soulteary
2023/07/21
1.6K0
由浅入深详解NLP中的Adapter技术
每天给你送来NLP技术干货! ---- ©作者 | 吴迪 单位 | UCLA 研究方向 | NLP 排版 | PaperWeekly 前言 在现代自然语言处理(NLP)的应用中,使用预训练的表征进行迁移学习是很重要的一个方法。在深度学习开始被应用之后,迁移学习最早出现在使用预训练的特征向量,以及对预训练语言模型(pre-trained language model,PLM)进行微调(fine-tuning)[1]。基于预训练模型,adapter 给出了一个新的思路,即能否在模型中插入一些少量的参数,在下
zenRRan
2022/07/27
2.4K0
由浅入深详解NLP中的Adapter技术
机器学习发展历史回顾
机器学习是现阶段解决很多人工智能问题的主流方法,作为一个独立的方向,正处于高速发展之中。最早的机器学习算法可以追溯到20世纪初,到今天为止,已经过去了100多年。从1980年机器学习称为一个独立的方向开始算起,到现在也已经过去了近40年。在这100多年中,经过一代又一代人的努力,诞生出了大量经典的方法,在本文中,SIGAI将分有监督学习,无监督学习,概率图模型,深度学习,强化学习4个大方向对历史上出现的经典算法进行整理与总结,帮助大家理清机器学习这100多年来的发展历史,完成对机器学习的寻根问祖之旅。限于篇幅,我们无法对所有算法一一列举,只介绍有代表性的一部分。
SIGAI学习与实践平台
2018/09/29
9580
机器学习发展历史回顾
【机器学习】机器学习资料大汇总
注:本页面主要针对想快速上手机器学习而又不想深入研究的同学,对于专门的researcher,建议直接啃PRML,ESL,MLAPP以及你相应方向的书(比如Numerical Optimization,Graphic Model等),另外就是Follow牛会牛paper,如果谁有兴趣也可以一起来整理个专业的汇总页。本页面将持续更新,敬请关注,如有推荐的文章请留言,谢谢! 000 开源工具 机器学习的开源工具 Python机器学习库 C++矩阵运算库推荐 001 公开课 Machine Learning |
陆勤_数据人网
2018/02/26
1.5K0
使用 Redis 构建轻量的向量数据库应用:图片搜索引擎(一)
以及基于 Redis 来快速实现一个高性能的本地图片搜索引擎,在本地环境中,使用最慢的稠密向量检索方式来在一张万图片中查找你想要的图片,总花费时间都不到十分之一秒。
soulteary
2023/11/15
2.1K0
使用 Redis 构建轻量的向量数据库应用:图片搜索引擎(一)
推荐阅读
相关推荐
Hugging Face 的应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档