Immich: simplify ML run script; other small changes

This commit is contained in:
vhsdream 2025-04-01 17:39:38 -04:00
parent c9b9d35d01
commit 96548a7890

View File

@ -258,7 +258,7 @@ ML_DIR="${APP_DIR}/machine-learning"
GEO_DIR="${INSTALL_DIR}/geodata" GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p ${INSTALL_DIR} mkdir -p ${INSTALL_DIR}
mv ${APPLICATION}-${RELEASE}/ ${SRC_DIR} mv ${APPLICATION}-${RELEASE}/ ${SRC_DIR}
mkdir -p {${APP_DIR},${UPLOAD_DIR},${GEO_DIR},${ML_DIR},${INSTALL_DIR}/cache} mkdir -p {${APP_DIR},${UPLOAD_DIR},${GEO_DIR},${ML_DIR},${INSTALL_DIR}/.cache}
cd ${SRC_DIR}/server cd ${SRC_DIR}/server
$STD npm ci $STD npm ci
@ -284,12 +284,13 @@ $STD python3 -m venv ${ML_DIR}/ml-venv
$STD uv sync --extra cpu --active $STD uv sync --extra cpu --active
) )
cd ${SRC_DIR} cd ${SRC_DIR}
cp -a machine-learning/{ann,start.sh,app} ${ML_DIR} cp -a machine-learning/{ann,immich_ml} ${ML_DIR}
ln -sf ${APP_DIR}/resources ${INSTALL_DIR} ln -sf ${APP_DIR}/resources ${INSTALL_DIR}
cd ${APP_DIR} cd ${APP_DIR}
grep -Rl /usr/src | xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g" grep -RlI /usr/src . --exclude="*.py*" --exclude="*.json" |
sed -i "s|\"/cache\"|\"$INSTALL_DIR/cache\"|g" $ML_DIR/app/config.py xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g"
# sed -i "s|\"/cache\"|\"$INSTALL_DIR/cache\"|g" $ML_DIR/immich_ml/config.py
grep -RlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g" grep -RlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g"
ln -s ${UPLOAD_DIR} ${APP_DIR}/upload ln -s ${UPLOAD_DIR} ${APP_DIR}/upload
ln -s ${UPLOAD_DIR} ${ML_DIR}/upload ln -s ${UPLOAD_DIR} ${ML_DIR}/upload
@ -334,27 +335,17 @@ DB_VECTOR_EXTENSION=pgvector
REDIS_HOSTNAME=localhost REDIS_HOSTNAME=localhost
MACHINE_LEARNING_CACHE_FOLDER=${INSTALL_DIR}/cache MACHINE_LEARNING_CACHE_FOLDER=${INSTALL_DIR}/.cache
EOF EOF
cat <<EOF >${ML_DIR}/start.sh cat <<EOF >${ML_DIR}/ml_start.sh
#!/usr/bin/env bash #!/usr/bin/env bash
cd ${ML_DIR} cd ${ML_DIR}
. ml-venv/bin/activate . ml-venv/bin/activate
: "\${MACHINE_LEARNING_HOST:=127.0.0.1}" python -m immich_ml
: "\${MACHINE_LEARNING_PORT:=3003}"
: "\${MACHINE_LEARNING_WORKERS:=1}"
: "\${MACHINE_LEARNING_WORKER_TIMEOUT:=120}"
exec gunicorn app.main:app \
-k app.config.CustomUvicornWorker \
-w "\$MACHINE_LEARNING_WORKERS" \
-b "\$MACHINE_LEARNING_HOST":"\$MACHINE_LEARNING_PORT" \
-t "\$MACHINE_LEARNING_WORKER_TIMEOUT" \
--log-config-json log_conf.json \
--graceful-timeout 0
EOF EOF
chmod +x ${ML_DIR}/ml_start.sh
cat <<EOF >/etc/systemd/system/${APPLICATION}-web.service cat <<EOF >/etc/systemd/system/${APPLICATION}-web.service
[Unit] [Unit]
Description=${APPLICATION} Web Service Description=${APPLICATION} Web Service
@ -387,7 +378,7 @@ Type=simple
User=root User=root
WorkingDirectory=${APP_DIR} WorkingDirectory=${APP_DIR}
EnvironmentFile=${INSTALL_DIR}/.env EnvironmentFile=${INSTALL_DIR}/.env
ExecStart=${ML_DIR}/start.sh ExecStart=${ML_DIR}/ml_start.sh
Restart=on-failure Restart=on-failure
SyslogIdentifier=immich-machine-learning SyslogIdentifier=immich-machine-learning
StandardOutput=append:/var/log/immich/ml.log StandardOutput=append:/var/log/immich/ml.log