feat(photo-ai): официальный CodeFormer вендорен, веса на этапе сборки
CodeFormer был написан по API сторонней обёртки с PyPI (rohitkhatri): CodeFormer(..., device=..., fp16=False) и net.device официальный класс не принимает — вызов падал бы с TypeError. В photo-ai/vendor/codeformer вендорен официальный sczhou/CodeFormer (codeformer_arch.py + vqgan_arch.py, b33cc7d, лицензия S-Lab 1.0), устройство передаётся через net.to(device), чекпоинт читается из params_ema. Веса больше не качаются лениво при первом запросе: fetch-weights.py на сборке образа кладёт их в /opt/photo-ai-seed (build-arg PHOTO_AI_PREFETCH, дефолт codeformer), при старте seed_weights() переносит их в том photo-ai-models:/models/weights. Том переживает пересборку образа, BuildKit-кэш не даёт качать повторно, недоступная сеть на сборке не роняет образ.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
FROM python:3.10-slim
|
||||
|
||||
ARG TORCH_VARIANT=cpu
|
||||
@@ -25,10 +26,22 @@ RUN BASICSR_DEG=$(python -c "import basicsr; import os; print(os.path.join(os.pa
|
||||
fi
|
||||
|
||||
COPY app.py ./
|
||||
COPY fetch-weights.py ./
|
||||
COPY vendor/ ./vendor/
|
||||
|
||||
ENV PHOTO_AI_MODELS_DIR=/models
|
||||
ENV MODEL_PATH=/models/RealESRGAN_x2plus.pth
|
||||
ENV PHOTO_AI_SEED_DIR=/opt/photo-ai-seed
|
||||
|
||||
ARG PHOTO_AI_PREFETCH=codeformer
|
||||
|
||||
RUN --mount=type=cache,target=/var/cache/photo-ai-weights,sharing=locked \
|
||||
mkdir -p "$PHOTO_AI_SEED_DIR" && \
|
||||
if [ -n "$PHOTO_AI_PREFETCH" ] && [ "$PHOTO_AI_PREFETCH" != "none" ]; then \
|
||||
python fetch-weights.py "$PHOTO_AI_SEED_DIR" /var/cache/photo-ai-weights || echo "предзагрузка весов не удалась, сервис скачает их при первом запросе"; \
|
||||
else \
|
||||
echo "предзагрузка весов отключена (PHOTO_AI_PREFETCH=$PHOTO_AI_PREFETCH)"; \
|
||||
fi
|
||||
|
||||
VOLUME /models
|
||||
|
||||
|
||||
Reference in New Issue
Block a user