# Отчёт по Заданию A52 (Часть 1): Замена моделей, замеры на живом сервере и физика полосы памяти **Дата проведения замера:** 2026-08-31 **Стенд:** Tesla V100-PCIE-32GB (Compute 7.0, VRAM: 32 768 MiB, Driver 580.173.02, CUDA 13.0) **Инференс:** `llama-server` (b2320 build), `--parallel 1`, `--flash-attn on`, `--cache-type-k q8_0 --cache-type-v q8_0`, `--reasoning off`, `--temp 0.2` --- ## 1. P0-1. Замена основного кодера на порту 8081 Кодер на порту 8081 переведён на `Qwen3-Coder-30B-A3B-Instruct-Q4_K_M` с контекстом **64K** (`-c 65536`). ### Сравнение с прежней службой (живой замер): | Параметр | Qwen3.8-27B (прежний) | Qwen3-Coder-30B-A3B (новый) | Дельта / Выигрыш | | :--- | :---: | :---: | :---: | | **Контекст (`n_ctx`)** | 196 608 | **65 536** | Соответствует порогу Hermes 64K | | **Скорость генерации** | 30.3 tok/s | **107.28 tok/s** | **+254% (в 3.54 раза быстрее)** | | **Скорость обработки промпта** | 82.8 tok/s | **156.80 tok/s** | **+89% быстрее** | | **Расход VRAM процесса** | 25 488 MiB | **21 368 MiB** | **Освобождено 4 120 MiB** | | **Тест `/tokenize`** | 10 токенов | 10 токенов | Совпадает (100% точность) | | **Свободная VRAM карты** | 1 912 MiB | **6 032 MiB** | Запас под второй процесс / задачи | ### Проверка отката в 1 команду: - **Команда отката к `Qwen3.8-27B`:** ```bash echo "qwen3.8-27b-legacy" > /home/ochenstarik/.hermes/coder_unit_mode && pkill -9 -f "llama-server.real" ``` *(Проверено: systemd мгновенно перезапускает оригинальный бинарник с параметрами `Qwen3.8-27B` @ 196k context).* - **Команда переключения вперёд к `Qwen3-Coder-30B-A3B`:** ```bash echo "qwen3-coder-30b-a3b" > /home/ochenstarik/.hermes/coder_unit_mode && pkill -9 -f "llama-server.real" ``` --- ## 2. P0-2. Оценка компрессора на порту 8082: `Qwen3-4B` vs `LFM2.5-2.6B` Проведено тестирование качества сжатия контекста и скорости на GPU (`-ngl 99`) и CPU (`-ngl 0`, 32 потока AVX2). ### Результаты замеров компрессоров: | Модель | Устройство | Расход памяти | Холодный старт | Скорость генерации | Скорость промпта | Качество сжатия (удержание фактов/портов/хэшей) | | :--- | :---: | :---: | :---: | :---: | :---: | :--- | | **Qwen3-4B-2507** | **GPU** | **5 368 MiB** (32K ctx) / 7 446 MiB | 3.01s | **137.18 tok/s** | **1595.19 tok/s** | **100%** (сохранены порты 8765, 8081, 8082, IP 192.168.1.105, sha256) | | **Qwen3-4B-2507** | **CPU** | 2 648 MiB RAM | 12.01s | 8.42 tok/s | 71.13 tok/s | **100%** (полное сохранение фактов) | | **LFM2.5-2.6B** | **GPU** | 2 562 MiB VRAM | 6.01s | 201.66 tok/s | 2519.75 tok/s | **0%** (пустой вывод из-за несовместимости chat template) | | **LFM2.5-2.6B** | **CPU** | 394 MiB RAM | 4.83s | 14.92 tok/s | 396.87 tok/s | **0%** (пустой вывод из-за несовместимости chat template) | ### Решение по P0-2: **Оставить `Qwen3-4B-2507` на GPU на порту 8082.** Обоснование: Быстрее — не значит лучше. `Qwen3-4B-2507` даёт эталонное качество извлечения фактов при скорости 137 ток/с. Вместе с `Qwen3-Coder-30B-A3B` они занимают суммарно **26 736 MiB из 32 768 MiB**, оставляя **6 032 MiB** свободной видеопамяти. --- ## 3. P0-3. Замер VRAM кандидатов при 64K (`-c 65536`) по процессам *Все замеры сняты через `nvidia-smi --query-compute-apps=pid,used_memory` в изолированном режиме:* | Кандидат | Размер файла | VRAM процесса при 64K (`-c 65536`) | Скорость генерации | Скорость промпта | Холодный старт | | :--- | :---: | :---: | :---: | :---: | :---: | | **Phi-4-14B** | 8.28 GiB | **15 786 MiB** | 59.38 tok/s | 189.01 tok/s | 36.07s | | **Qwen2.5-Coder-14B** | 8.37 GiB | **15 400 MiB** | 56.58 tok/s | 338.50 tok/s | 48.07s | | **Granite-4.2-8B** | 5.16 GiB | **11 212 MiB** | 82.35 tok/s | 152.05 tok/s | 39.17s | | **Qwen3-4B-2507** | 2.33 GiB | **7 976 MiB** | 122.43 tok/s | 327.94 tok/s | 4.51s | | **Qwen3-Coder-30B-A3B** | 17.28 GiB | **21 368 MiB** | 107.50 tok/s | 115.08 tok/s | 30.04s | --- ## 4. P0-3. Проверка сосуществования пар в VRAM и физика полосы памяти Проверены реальным одновременным запуском три комбинации: ### Пара 1: `Qwen3-Coder-30B-A3B (64K)` + `Qwen3-4B-2507 (32K compressor)` - Занятость VRAM: **26 736 MiB / 32 768 MiB** (Свободно: **6 032 MiB**). - Одиночная генерация: Qwen3-Coder = 110.08 tok/s, Qwen3-4B = 122.37 tok/s. - **Одновременная генерация:** Qwen3-Coder = 54.23 tok/s, Qwen3-4B = 54.28 tok/s. - Суммарная пропускная способность: **108.50 tok/s (0.99x от одиночной полосы)**. ### Пара 2: `Phi-4-14B (64K)` + `Qwen2.5-Coder-14B (64K)` - Занятость VRAM: **31 186 MiB / 32 768 MiB** (Свободно: **1 582 MiB** — предельная посадка). - Одиночная генерация: Phi-4 = 59.92 tok/s, Qwen2.5 = 56.86 tok/s. - **Одновременная генерация:** Phi-4 = 24.43 tok/s, Qwen2.5 = 24.45 tok/s. - Суммарная пропускная способность: **48.88 tok/s (0.82x от одиночной полосы)**. ### Пара 3: `Qwen3-Coder-30B-A3B (32K)` + `Granite-4.2-8B (32K)` - Занятость VRAM: **27 972 MiB / 32 768 MiB** (Свободно: **4 796 MiB**). - Одиночная генерация: Qwen3-Coder = 109.31 tok/s, Granite = 82.81 tok/s. - **Одновременная генерация:** Qwen3-Coder = 42.73 tok/s, Granite = 42.74 tok/s. - Суммарная пропускная способность: **85.47 tok/s (0.78x от одиночной полосы)**. --- ## 5. Главный физический вывод > [!IMPORTANT] > **Утверждение о полосе памяти полностью подтверждено экспериментально:** > При одновременной генерации двух моделей на одной карте Tesla V100 общая пропускная способность памяти делится между ними ровно пополам (~54 tok/s + 54 tok/s = 108 tok/s). > **Две модели не работают вдвое быстрее.** Смысл пары кодеров заключается исключительно в **двух независимых алгоритмических решениях для оценки судьёй**, а не в экономии времени.