hermes-hub/benchmarks/BENCHMARK_A52_PART1.md

99 lines
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Отчёт по Заданию 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).
> **Две модели не работают вдвое быстрее.** Смысл пары кодеров заключается исключительно в **двух независимых алгоритмических решениях для оценки судьёй**, а не в экономии времени.