From 9145de8e5424e1da4eb3eb48e127c0f7cc190938 Mon Sep 17 00:00:00 2001 From: jze9 Date: Mon, 31 Aug 2026 21:11:19 +0500 Subject: [PATCH] =?UTF-8?q?docs(worker-gpu):=20=D0=BE=D0=B1=D1=8A=D1=8F?= =?UTF-8?q?=D1=81=D0=BD=D0=B8=D1=82=D1=8C,=20=D0=BF=D0=BE=D1=87=D0=B5?= =?UTF-8?q?=D0=BC=D1=83=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BB=D0=BB=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=20=D0=B6=D1=91=D1=81=D1=82=D0=BA=D0=BE=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BD=D0=B0=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В Dockerfile стояло -c 1 без пояснения, и это выглядит как недосмотр: панель отладки показывает «параллельно: 1» рядом с воркерами на 4, 8 и 16 процессов. На самом деле поднимать нельзя: FAISS-индекс — синглтон в памяти процесса, при -c N каждый форк получит свою копию, и save() каждого затрёт чужие векторы. Потери были бы молчаливыми — как с 60 993 ложными отметками faiss_id. Смысла в параллельности тоже нет: Ollama занимает все ядра сервера обработкой одного запроса (2.29 req/s при конкурентности 1 против 2.48 при 16). Поднимать -c уместно только вместе с VECTOR_BACKEND=qdrant. Co-Authored-By: Claude Opus 5 --- services/worker-gpu/Dockerfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/worker-gpu/Dockerfile b/services/worker-gpu/Dockerfile index 71846cb..00f8603 100644 --- a/services/worker-gpu/Dockerfile +++ b/services/worker-gpu/Dockerfile @@ -28,4 +28,11 @@ COPY . . # Директория для FAISS индекса (монтируется как volume) RUN mkdir -p /data/index +# -c 1 обязателен, пока VECTOR_BACKEND=faiss: индекс — синглтон в памяти процесса +# (app/faiss_manager.py). При -c N Celery форкает N процессов, у каждого своя копия +# индекса, и save() каждого затирает чужие векторы в общем файле — эмбеддинги +# теряются молча. Параллельность тут всё равно не нужна: Ollama занимает все ядра +# сервера обработкой одного запроса (замер: 2.29 req/s при конкурентности 1 против +# 2.48 при 16). Поднимать -c имеет смысл только вместе с VECTOR_BACKEND=qdrant, +# который допускает конкурентную запись. CMD ["celery", "-A", "app.celery_app", "worker", "-Q", "queue.gpu", "-c", "1", "-n", "gpu@%h", "--loglevel=info"]