Бенчмарк на Ryzen 9 9950X показал обратное тому, что было на Apple M4:
там всё растёт до 16 потоков (распознавание x14.7 -> x61.3), здесь после
четырёх начинается спад. Причина в неоднородных ядрах M4.
Дефолт стал умеренным (половина ядер, но не больше 8), а точное значение
подбирается через /v1/benchmark. Воркер по умолчанию один: параллельная
обработка выигрыша не дала, процессор и так загружен целиком.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Масштабирование ONNX зависит от процессора: замеры на Apple M4 не
переносятся на Ryzen, а подбирать конфигурацию перезапусками мучительно.
Теперь /v1/benchmark гоняет минуту записи на 1, 2, 4, 8 и 16 потоках
и говорит, что поставить в config.toml.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Прогрет был только нулевой воркер, остальные получали пустой конвейер и
роняли задачу с "модели не загружены". В комментарии было написано, что
они греются сами, но кода для этого не было.
Заодно отключены ANSI-цвета uvicorn на Windows: консоль их не разбирает
и печатала управляющие последовательности как мусор.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Замеры: распознавание даёт x52 на 4 потоках против x13 на 16, разделение
говорящих x33 против x8. Дальше четырёх потоков синхронизация съедает весь
выигрыш, поэтому ядра занимаются несколькими задачами сразу.
По умолчанию 4 потока на задачу и до 4 задач параллельно. Захват задачи
из очереди стал атомарным - без этого два воркера брали одну и ту же.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>