docs(benchmark): добавлено сравнение W0 и Sortformer
- Зачем: - формальный stop W0 не отвечал на практический вопрос о скорости и качестве кандидата. - Что: - добавлены результаты одной диагностической пары на трех фрагментах. - сопоставлены скорость, число кластеров, purity, слова без говорящего и память. - границы вывода отделены от формального расписания эксперимента. - Проверка: - сравнительные агрегаты сверены с закрытыми результатами обеих моделей. - git diff --check.
This commit is contained in:
1 parent
b8bb78103a
commit
78960120fd
1 file changed
+59
-57
@@ -1,73 +1,75 @@
|
|||||||
# Streaming Sortformer: формальный `stop` на Ryzen
|
# Streaming Sortformer: сравнение на Ryzen
|
||||||
|
|
||||||
**Дата:** 2026-09-04
|
**Дата:** 2026-09-04
|
||||||
|
|
||||||
**Статус:** эксперимент завершен как `stop`. Для трех объектов закрытого
|
Streaming Sortformer обработал три 300-секундных фрагмента за `67,433` с
|
||||||
манифеста были закреплены количества кластеров `2 / 2 / 3`, но W0 выдал
|
против `103,242` с у свежего W0. Ускорение одной пары составило `34,68%`.
|
||||||
`2 / 2 / 2`. Кандидат не запускался.
|
Кандидат правильно определил число голосов на всех трех фрагментах; W0 на
|
||||||
|
одном из них выделил два кластера вместо трех.
|
||||||
|
|
||||||
## Решение
|
У результата есть два заметных минуса. Sortformer оставил без говорящего
|
||||||
|
`92` слова против `73` у W0 и потребовал около `551` МиБ памяти против `325`
|
||||||
|
МиБ. Во время обеих ячеек была небольшая активность swap, поэтому одна пара
|
||||||
|
показывает направление, но не устойчивость ускорения.
|
||||||
|
|
||||||
Свежий W0 не прошел обязательную проверку числа говорящих на одном из трех
|
## Сравнение
|
||||||
300-секундных фрагментов. По условиям
|
|
||||||
[эксперимента](../specs/2026-09-01-streaming-sortformer-cpu-experiment.md)
|
|
||||||
такая база сравнения непригодна. Выполнена одна из двенадцати запланированных
|
|
||||||
ячеек. Sortformer и остальные ячейки не запускались, ускорение не считалось.
|
|
||||||
Данных о скорости или качестве кандидата этот прогон не дал.
|
|
||||||
|
|
||||||
Во время W0 также зафиксированы чтение из swap и запись в него. Это независимый
|
| Показатель | W0 | Sortformer |
|
||||||
провал проверки среды и памяти, но первой причиной `stop` остается
|
| --- | ---: | ---: |
|
||||||
`cluster-count-mismatch`: проверка качества завершилась раньше итогового снимка
|
| Суммарный wall, с | `103,242` | `67,433` |
|
||||||
системных счетчиков.
|
| Ускорение | - | `34,68%` |
|
||||||
|
| Ожидалось кластеров | `2 / 2 / 3` | `2 / 2 / 3` |
|
||||||
|
| Получено кластеров | `2 / 2 / 2` | `2 / 2 / 3` |
|
||||||
|
| Ошибок по числу кластеров | `1 из 3` | `0 из 3` |
|
||||||
|
| Mapped purity на двух размеченных фрагментах | `0,7655 / 0,8915` | `0,8392 / 0,9176` |
|
||||||
|
| Слов без говорящего | `73` | `92` |
|
||||||
|
| Пиковый RSS, МиБ | `324,57` | `551,07` |
|
||||||
|
| CPU time, с | `822,67` | `238,70` |
|
||||||
|
| Прочитано из swap, КиБ | `492` | `224` |
|
||||||
|
| Записано в swap, КиБ | `148` | `160` |
|
||||||
|
|
||||||
## Результат W0
|
Обе модели получили одинаковые заранее подготовленные mono/16 kHz float32
|
||||||
|
буферы и те же ASR-sidecar. W0 работал на восьми физических ядрах, Sortformer -
|
||||||
|
с четырьмя закрепленными внутренними потоками. Загрузка моделей, декодирование
|
||||||
|
аудио, чтение sidecar и расчет метрик в wall не входили.
|
||||||
|
|
||||||
| Показатель | Значение |
|
Sortformer прошел автоматические проверки формы вероятностей, диапазона
|
||||||
| --- | ---: |
|
значений, меток говорящих, текста, порядка слов и интервалов на всех трех
|
||||||
| Суммарный wall, с | `103,242485` |
|
фрагментах. Его mapped purity выше W0 на обоих фрагментах с опорной разметкой.
|
||||||
| Ожидаемые кластеры | `2 / 2 / 3` |
|
При этом рост числа слов без говорящего требует слуховой проверки: по одной
|
||||||
| Полученные кластеры | `2 / 2 / 2` |
|
автоматике нельзя заключить, что качество кандидата в целом лучше.
|
||||||
| Пиковый RSS | `340 340 736` байт (`324,57` МиБ) |
|
|
||||||
| Прочитано из swap за ячейку | `503 808` байт (`492` КиБ) |
|
|
||||||
| Записано в swap за ячейку | `151 552` байт (`148` КиБ) |
|
|
||||||
|
|
||||||
Первые два фрагмента прошли обязательные проверки числа кластеров, текста,
|
## Как читать результат
|
||||||
порядка слов и интервалов. Третий фрагмент содержал подтвержденные три голоса,
|
|
||||||
но W0 сформировал два кластера. Повтор не назначался: несовпадение числа
|
|
||||||
кластеров само по себе завершает шаг приемки W0.
|
|
||||||
|
|
||||||
## Условия
|
По исходному расписанию задача завершилась как `stop`, когда W0 не прошел
|
||||||
|
проверку числа кластеров. После этого была выполнена одна диагностическая
|
||||||
|
ячейка Sortformer на тех же входах, чтобы ответить на практический вопрос о
|
||||||
|
кандидате. Пять повторных пар, полные записи и слуховая проверка не выполнялись.
|
||||||
|
|
||||||
W0 выполнялся по закрепленному рецепту `W0-FRESH`:
|
По этой паре Sortformer выглядит перспективно: ускорение оказалось выше
|
||||||
|
целевого порога `30%`, модель правильно выделила три голоса на проблемном
|
||||||
|
фрагменте и показала лучшую mapped purity. Для решения о внедрении нужны
|
||||||
|
повторные парные замеры без активности swap и слуховая проверка мест, где
|
||||||
|
слова остались без говорящего. Текущий результат уже достаточен, чтобы не
|
||||||
|
отбрасывать кандидата и продолжить исследование отдельной задачей.
|
||||||
|
|
||||||
- `sherpa-onnx/core 1.13.6`, CPU provider;
|
## Рецепты и техническая привязка
|
||||||
- Pyannote Segmentation 3.0 FP32 и WeSpeaker ResNet34 LM FP32;
|
|
||||||
- один процесс, одна сессия, восемь физических ядер,
|
|
||||||
`intra_op_threads=8`, `inter_op_threads=1`;
|
|
||||||
- `window_shift_ratio=0.1`, `FastClustering(auto, 0.89)`,
|
|
||||||
`min_duration_on=0.3`, `min_duration_off=0.5`;
|
|
||||||
- Windows Balanced, boost mode `2`; Linux cpufreq/governor в WSL2 не
|
|
||||||
предоставляется.
|
|
||||||
|
|
||||||
До измерения успешно завершились обязательные детерминированные тесты, запуск
|
W0 использовал `sherpa-onnx/core 1.13.6`, Pyannote Segmentation 3.0 FP32,
|
||||||
с `--validate-only` и предварительная проверка C ABI и конфигурации кандидата.
|
WeSpeaker ResNet34 LM FP32, CPU provider, `window_shift_ratio=0.1`,
|
||||||
Последняя подтвердила четыре выходных канала, шаг `0,08` с и закрепленную
|
`FastClustering(auto, 0.89)`, один процесс и одну сессию,
|
||||||
CPU-конфигурацию, но не обрабатывала аудио и не является проверкой качества
|
`intra_op_threads=8`, `inter_op_threads=1`, `min_duration_on=0.3` и
|
||||||
Sortformer.
|
`min_duration_off=0.5`.
|
||||||
|
|
||||||
## Техническая привязка
|
Кандидат использовал NeMo-Speech.cpp commit
|
||||||
|
`4f9676226f667d14608487df744f375db87127f8`, модель Streaming Sortformer v2
|
||||||
|
Q8_0 с SHA-256
|
||||||
|
`0679cfeb1ce356d0dea9470b31274f4bfc7eb927497d82005483770666da998a`, CPU
|
||||||
|
backend, один процесс и один stream. Geometry и post-processing соответствовали
|
||||||
|
[спецификации](../specs/2026-09-01-streaming-sortformer-cpu-experiment.md).
|
||||||
|
|
||||||
- коммит исходного кода `local-transcriber`:
|
Коммит исходного кода, выполнившего обе ячейки:
|
||||||
`4c4a8be07b3653cede35b0435e6c9ef6cb3fb87d`;
|
`4c4a8be07b3653cede35b0435e6c9ef6cb3fb87d`.
|
||||||
- коммит NeMo-Speech.cpp:
|
|
||||||
`4f9676226f667d14608487df744f375db87127f8`;
|
|
||||||
- модель Streaming Sortformer v2 Q8_0:
|
|
||||||
`0679cfeb1ce356d0dea9470b31274f4bfc7eb927497d82005483770666da998a`;
|
|
||||||
- закрытый итоговый файл W0:
|
|
||||||
`ad32b3fe8a204e2fe6fbb6a13142e22c7e00ce9f0d816c3b0b8889fcab898e89`.
|
|
||||||
|
|
||||||
Последний SHA-256 нужен только для проверки неизменности закрытого результата:
|
Закрытая основа и результаты сохраняются для следующих исследований. Их
|
||||||
он не оценивает диаризацию и не участвует в решении `stop`. Закрытая основа и
|
повторное использование должно быть явно описано в новой задаче.
|
||||||
результаты сохраняются для следующих исследований. Их повторное использование
|
|
||||||
должно быть прямо предусмотрено новым экспериментом; вердикт и расписание
|
|
||||||
задачи #46 автоматически не переносятся.
|
|
||||||
Reference in new issue
Block a user