File size: 11,271 Bytes
0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e bbbb83e 8f9724e bbbb83e 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e bbbb83e 8f9724e bbbb83e 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 88761a4 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e 0ae0e7b 8f9724e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 | ---
license: agpl-3.0
language:
- en
- zh
pipeline_tag: zero-shot-image-classification
tags:
- immich
---
# 一、项目简介
Immich 是一款支持本地 AI 检索与多端备份的开源自托管智能相册。将其深度适配并独立部署在 AX650 边缘算力板卡上,可让所有照片数据与 AI 推理均在本地物理隔离运行,从而实现100%的数据主权与最高级别的隐私安全保障。
**原项目官方资源:**
- 官方网站:https://immich.app/
- GitHub 仓库:https://github.com/immich-app/immich
本项目的目标是演示如何在AX650开发平台上部署 Immich,部署后可直接使用**AX650板卡**,或者外接 **AX650 AI 算力卡** 进行使用。
# 二、参考链接
我们已将针对 Immich 代码库的修改版本在 GitHub 上开源,目前版本对齐immich最新版本v2.7.5:
- **开源仓库**:https://github.com/AXERA-TECH/immich/tree/ax650-v2.7.5
# 三、支持平台
- **AX650 / AX8850**
- **AX650N DEMO Board**
- [M4N-Dock(爱芯派Pro)](https://wiki.sipeed.com/hardware/zh/maixIV/m4ndock/m4ndock.html)
- [**M.2 Accelerator card**](https://axcl-docs.readthedocs.io/zh-cn/latest/doc_introduction.html#id4)
# 四、支持模型
在 Immich 项目中,CLIP 模型是实现智能相册功能且计算需求最高的核心组件。为了进一步提升识别准确率,我们采用了参数量更大的模型:**CLIP-L/14-336** 和 **CN-CLIP-L/14-336**。
针对爱芯元智(Axera)AI 加速卡优化后的预编译模型,可参考以下版本获取:
- [**CLIP-L/14-336 (English)**](https://huggingface.co/AXERA-TECH/ViT-L-14-336__axera)
- [**CN-CLIP-L/14-336 (Chinese)**](https://huggingface.co/AXERA-TECH/ViT-L-14-336-CN__axera)
# 五、部署操作
## **1. 系统配置与代码获取**
### (1)前置准备与依赖安装(必做)
在开始部署前,必须更新系统并安装核心依赖组件。
```bash
apt-get update
apt-get install -y unzip libgl1
```
### **扩充存储空间(可选)**
- **挂载 SD Card**:若系统内部空间不够,可选择挂载 SD Card 来存放数据。首先需将 SD Card 格式化为 `ext4` 格式并挂载。
```bash
lsblk
#格式化SD Card 注意保存数据
# mkfs.ext4 /dev/mmcblk1p1
mkdir /mnt/sdcard
mount /dev/mmcblk1p1 /mnt/sdcard
```
- **配置开机自动挂载**:通过 `blkid /dev/mmcblk1p1` 获取 UUID 后,修改 `/etc/fstab` 文件以实现开机自启。配置示例如 `UUID=13054439-9d76-47ca-b8ed-c7cd8d208a5d /mnt/sdcard ext4 defaults 0 2`。
### (3) 获取部署代码(必做)
- **方案一:使用 Git**:安装 `git-lfs` 后,直接从 HuggingFace 拉取代码仓库(空间不足时可选择拉取至 SD Card 目录)。
```bash
apt-get install git-lfs
git clone https://huggingface.co/AXERA-TECH/immich
```
- **方案二:使用 HuggingFace**:若 Git 因为网络问题导致拉取失败,可安装 `huggingface_hub` 工具并使用 `hf download` 进行本地下载。
```bash
apt-get install -y python3.11
#若无法直接访问 可使用国内代理
export HF_ENDPOINT=https://hf-mirror.com
pip install -U huggingface_hub
hf download AXERA-TECH/immich --local-dir .
```
## 2. Docker 服务部署
### (1) 解压配置文件(必做)
- 进入拉取的 `immich` 代码目录,解压部署文件并创建 `.env` 环境变量文件。
```bash
cd immich
unzip -o docker-deploy.zip
cp example.env .env
```
### (2)Docker 环境配置(可选)
- **修改数据目录**:若内部空间不够,可修改 Docker 镜像路径至 SD Card。创建 `/mnt/sdcard/docker_data` 目录后,修改 `/lib/systemd/system/docker.service`,在 `ExecStart` 后面添加 `-data-root=/mnt/sdcard/docker_data` 并重启服务。请务必确保 SD Card 已配置开机自动挂载。
- **设置 Docker 代理**:若由于网络问题无法访问外部镜像,可为 Docker 添加 HTTP/HTTPS 代理配置(写入 `/etc/systemd/system/docker.service.d/http-proxy.conf` 并重启服务)或直接改用国内镜像源。
### (3)导入并启动镜像(必做)
- 加载离线 Docker 镜像包,并使用 Docker Compose 启动容器服务。
```bash
docker load -i ax-immich-server-aarch64.tar.gz
docker compose -f docker-compose.yml -f docker-compose.override.yml up -d
```
- 可通过 `docker ps` 查看容器状态。若长时间处于 "starting" 状态,建议使用 `docker logs immich_server --tail 20` 等命令排查启动日志。
- 启动正常后,通过浏览器访问 `http://<开发板IP>:2283` 即可进入网页端进行注册和登录。

## 3. 机器学习 (ML) 服务部署
### (1)配置 Python 虚拟环境(可选)
- 若主存储空间不够,可安装 `python3.11-venv` 并在 SD Card 上创建虚拟环境 `/mnt/sdcard/immich_venv` 以节省空间。
```bash
apt-get install -y python3.11-venv
python3.11 -m venv /mnt/sdcard/immich_venv
```
### (2)安装 ML 依赖包(必做)
- 可根据自身情况选择直接**全局安装**或进入**虚拟环境安装**(二选一),建议使用虚拟环境。
**全局安装:**
```bash
#注意安装py 3.11版本(v2.7.5 immich官方指定)
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11
# 安装依赖
pip install -r requirements.txt
#建议选择PyAXEngine最新版本 当前最新0.1.3.rc3
pip install https://github.com/AXERA-TECH/pyaxengine/releases/download/0.1.3.rc3/axengine-0.1.3-py3-none-any.whl
#安装Wheel包
pip install immich_ml-2.7.5-py3-none-any.whl
```
**虚拟环境安装**
为了避免存储不够,安装时可通过 `TMPDIR` 和 `-cache-dir` 参数将临时文件与缓存放到 SD Card 上。
```bash
# 激活虚拟环境(若使用了venv)
source /mnt/sdcard/immich_venv/bin/activate
# 安装依赖
TMPDIR=/mnt/sdcard pip install -r requirements.txt --cache-dir /mnt/sdcard/.pip_cache
#建议选择PyAXEngine最新版本 当前最新0.1.3.rc3
TMPDIR=/mnt/sdcard pip install https://github.com/AXERA-TECH/pyaxengine/releases/download/0.1.3.rc3/axengine-0.1.3-py3-none-any.whl --cache-dir /mnt/sdcard/.pip_cache
#安装Wheel包
TMPDIR=/mnt/sdcard pip install immich_ml-2.7.5-py3-none-any.whl --cache-dir /mnt/sdcard/.pip_cache
```
PyAXEngine最新版本获取:[**PyAXEngine GitHub**](https://github.com/AXERA-TECH/pyaxengine)
### (3) 启动 ML 服务(必做)
- **算力卡检测**:若需要使用算力卡,通过指令 axcl-smi 确定算力卡是否正常,可见类似输出:
```bash
root@ax650:/opt/bin/axcl# ./axcl-smi
+------------------------------------------------------------------------------------------------+
| AXCL-SMI V3.15.0_20260609020154 Driver V3.15.0_20260609020154 |
+-----------------------------------------+--------------+---------------------------------------+
| Card Name Firmware | Bus-Id | Memory-Usage |
| Fan Temp Pwr:Usage/Cap | CPU NPU | CMM-Usage |
|=========================================+==============+=======================================|
| 0 AX8850 V3.15.0 | 0001:81:00.0 | 148 MiB / 945 MiB |
| -- 39C -- / -- | 1% 0% | 18 MiB / 7040 MiB |
+-----------------------------------------+--------------+---------------------------------------+
+------------------------------------------------------------------------------------------------+
| Processes: |
| Card PID Process Name NPU Memory Usage |
|================================================================================================|
```
- **启动immich_ml服务**:激活对应的 Python 环境,配置主机与端口信息后启动 `immich_ml` 服务(若使用虚拟环境需要注意是否处于虚拟环境中)。
**标准启动:**
```bash
IMMICH_HOST=0.0.0.0 IMMICH_PORT=3003 python -m immich_ml
```
**指定缓存目录启动方式(推荐空间不足者使用):**
若需进一步节省根分区空间,可指定 `MACHINE_LEARNING_CACHE_FOLDER` 与 `HF_HOME` 环境变量将模型缓存存放至 SD Card。
```bash
mkdir -p /mnt/sdcard/immich_ml_cache /mnt/sdcard/huggingface
MACHINE_LEARNING_CACHE_FOLDER=/mnt/sdcard/immich_ml_cache HF_HOME=/mnt/sdcard/huggingface IMMICH_HOST=0.0.0.0 IMMICH_PORT=3003 python -m immich_ml
```
**使用本地模型启动(推荐网络无法访问者使用):**
immich在启动ml服务时,会通过网络检测有无模型更新需求,若无法访问网络,可以获取模型后使用本地模型启动。
如若使用[**CN-CLIP-L/14-336 (Chinese)**](https://huggingface.co/AXERA-TECH/ViT-L-14-336-CN__axera)模型,拉取模型放到模型目录(实际目录可根据immich_ml日志进行查看),可能目录如下:
```bash
#采用标准启动,可能路径为:
/root/.cache/immich_ml/clip/ViT-L-14-336-CN__axera
#指定目录启动,根据目录路径进行查找,比如:
/mnt/sdcard/immich_ml_cache/clip/ViT-L-14-336-CN__axera
```
指定 `HF_HUB_OFFLINE=1` 进行启动,如:
```bash
HF_HUB_OFFLINE=1 IMMICH_HOST=0.0.0.0 IMMICH_PORT=3003 python -m immich_ml
```
## 4. 功能验证与设置
### **(1)查询网关 IP**:
在宿主机通过命令 `docker network inspect immich_default | grep Gate` 查看 IP(通常类似于 `172.19.0.1`)。
### **(2)配置 ML 服务**:
登录 Immich **网页端**,点击左上角**头像**,选择**Administration**,进入**设置**,选择**机器学习设置**,配置上一步获取到的 IP,并填写模型,如填为`ViT-L-14-336-CN__axera`。

### **(3)上传与测试**:
- 在网页端上传图片
- 创建智能搜索任务
- 任务处理完毕后,执行智能搜索以验证 ML 服务是否正常解析图像特征。



### (4)APP测试
- 下载app,并使手机在同一网络环境下
- 填写ip和账号密码进入
- 进行智能搜索

# 六、性能评估
在当前测试场景下,Immich 服务由 Docker 中的 `server/postgres/redis` 与宿主机 `immich_ml` 组成。由于模型懒加载、运行时缓存、数据库缓存以及AX CMM 分配策略等因素,MEM与 CMM 占用会受操作影响。
AX650板卡采用 `AxEngineExecutionProvider`,处理182张图片。
智能搜索任务处理期间观察到的资源占用峰值约为:
- CPU:整机总 CPU 约 5%~6%
- MEM:约 1.5~1.6 GiB
- CMM:约 600 MiB |