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. **Статус:** к тестированию (гипотеза, не решение к внедрению).