From 98c81043c6d7b9d1bd0ede5870cbc3f8882a6602 Mon Sep 17 00:00:00 2001 From: n1kt4r Date: Wed, 14 Oct 2026 10:53:17 +0500 Subject: [PATCH] =?UTF-8?q?ADR-12:=20=D1=80=D0=B0=D0=B7=D0=B2=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D0=B1=D0=BE=D0=B5=D0=B2=D0=BE=D0=B9=20=D1=81?= =?UTF-8?q?=D0=B5=D1=80=D0=B2=D0=B5=D1=80=20(1=C3=97=20RTX=20A2000=2012=20?= =?UTF-8?q?GB,=2024/7)=20=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE=D1=87=D1=83?= =?UTF-8?q?=D1=8E=20=D0=BC=D0=B0=D1=88=D0=B8=D0=BD=D1=83=20(2=C3=97=20RTX?= =?UTF-8?q?=203080=20Ti,=20dev)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ARCHITECTURE.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 2649ac2..1aa5c82 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -163,7 +163,7 @@ **Мета-позиция:** - Концепция — это **основная идея** (направление, философия), а не детальные требования. - Каждый инструмент/технология/фреймворк — **гипотеза**, которую нужно **проверить на железе и реальных задачах**, а не принимать по описанию. -- «Существует проект X, который решает задачу Y» ≠ «мы берём X и всё работает». Реальная ценность — в измерении: как X ведёт себя на 2×3080 Ti, на bge-m3, на локальных моделях с 8K контекстом. +- «Существует проект X, который решает задачу Y» ≠ «мы берём X и всё работает». Реальная ценность — в измерении: как X ведёт себя на a2000 (1× RTX A2000 12 GB — боевой контур 24/7), на bge-m3, на локальных моделях с 8K контекстом. **Почему:** - Описания в репозиториях и статьях показывают лучший случай, а не поведение в твоей инфраструктуре. @@ -184,9 +184,13 @@ **Решение:** Рассмотреть EmbeddingGemma 2 (Google) как замену или дополнительную модель для эмбеддингов вместо bge-m3. Тестировать, не менять сразу. +**Железо (задаёт бюджет VRAM):** +- Боевой контур 24/7 — сервер **a2000: 1× RTX A2000 12 GB**. Эти 12 GB — общий бюджет на всё сразу: LLM-инференс агента, эмбеддинги, ASR и прочее. +- Вторая машина с **2× RTX 3080 Ti** — рабочая, для разработки: включается вручную и в 24/7-контуре не учитывается. Фоновые сервисы на неё ставить нельзя — они не переживут выключение. + **Почему:** -- Сервер a2000 — 2× RTX 3080 Ti. bge-m3 (dim=1024, тяжёлая) занимает GPU целиком; чтобы освободить 3080 под LLM-инференс, её надо выключать. -- EmbeddingGemma 2 — лёгкая embed-модель (~200M). На фоне 24/7-фоновой эмбединговой нагрузки она не вытесняет LLM-инференс агента и не требует «выключить 3080», чтобы освободить GPU. +- bge-m3 (dim=1024, тяжёлая) занимает 12 GB на a2000 целиком; чтобы дать GPU LLM-инференсу агента, её приходится выключать. +- EmbeddingGemma 2 — лёгкая embed-модель (~200M). На фоне 24/7-фоновой эмбединговой нагрузки она не вытесняет LLM-инференс агента и не требует «выключить эмбеддер», чтобы освободить GPU. - Для фоновой ингестсии (не интерактив) приоритет — низкое consumption GPU в фоне, а не максимальное качество поиска. **Ключевое ограничение (обязательно учитывать):** @@ -195,7 +199,7 @@ **Как проверять (на железе, не по описанию):** - recall@k / MRR на реальных задачах против bge-m3. -- Latency эмбединга и consumption GPU параллельно с LLM-инференсом (не должно OOM'ить 3080). +- Latency эмбединга и consumption GPU параллельно с LLM-инференсом (не должно OOM'ить 12 GB на a2000). - Если EmbeddingGemma 2 даёт приемлемый recall и не давит GPU — кандидат в MVP-стек. Иначе остаёмся на bge-m3. **Статус:** к тестированию (гипотеза, не решение к внедрению).