Совместимость важнее запаса
Почему подходящие по отдельности детали могут не сложиться в систему?
Работоспособность сборки определяется стыками: сокет, BIOS, память, охлаждение, питание, драйвер и механика.
Разъём — только начало совместимости. Процессор может подходить к сокету, но требовать более нового BIOS. Плата может иметь Wi-Fi, но неудобный для выбранного Linux драйвер. Модель может помещаться на диске, но не в оперативной памяти во время работы.
Поэтому до заказа составляем короткую цепочку доказательств: точная ревизия детали, документированная поддержка, небольшой проверочный запуск и измерение под общей нагрузкой. Красивая таблица характеристик не заменяет эту цепочку.
У двух деталей может быть один подходящий разъём и всё же не быть совместимости. CPU помещается в сокет, но не поддерживается текущим BIOS. Wi-Fi-карта физически подходит в M.2, но требует отсутствующего интерфейса. SSD получает питание, но перегревается под соседним радиатором. Поэтому ведомость компонентов должна содержать не только названия, но и основание совместимости.
Опорная сборка H2#
| Узел | Документированный ориентир | Что допускается заменить | Что проверяется повторно |
|---|---|---|---|
| CPU | Ryzen 7 8700G | Совместимый AM5 с достаточной CPU-производительностью | BIOS, мощность, высота и крепление кулера |
| Плата | B650I Lightning WiFi, Mini-ITX | Другая Mini-ITX с нужными разъёмами | I/O, расположение сокета, радио, fan headers |
| RAM | 2 × 16 ГБ DDR5, штатный режим | 2 × 32 ГБ после потребности | QVL, обучение памяти, стабильность |
| SSD | NVMe 1 ТБ | Надёжная модель нужного форм-фактора | Тепло, ресурс, прошивка, восстановление |
| CPU-кулер | NH-U9S как ориентир 125 мм | Совместимая башня или низкий кулер | Направление потока, RAM, радиаторы VRM |
| Корпусные FAN | 3 × 120 мм PWM | NF-A12x25 / P12 или другой проверенный ряд | Толщина, ток, кривая давления, разъём |
| БП | Закрытый SFX с родными кабелями | Другая сертифицированная модель достаточной мощности | Размеры, разъёмы, кабельный объём |
Паспорт NH-U9S и руководства платы нужны именно для геометрической проверки, а не для обещания универсальной совместимости. У рассмотренной платы руководство указывает допустимую нагрузку до 2 А / 24 Вт для перечисленных CPU/WP и chassis/WP headers; переносить это число на другую плату нельзя. [3][5]
У SF750 большой запас мощности относительно планируемой конфигурации без дискретной GPU. Это пример документированного SFX-формата, а не требование покупать 750 Вт. Выбор меньшего БП определяется реальной конфигурацией, качеством и доступностью разъёмов; экономия на номинале не должна приводить к сомнительному источнику питания. [7]
Как распределить память#
Вместо требования «ядро обязано занимать 64 МБ» задаём отдельные бюджеты. Rust-core имеет ограниченные очереди и контролируемый кэш. База ограничивает объём выборок. Speech-worker получает собственный предел памяти. Ускоритель, если он использует общую RAM, учитывается как конкурент остальных процессов, а не как бесплатный ресурс.
Пример планирования для 32 ГБ: ОС и службы получают несколько гигабайт резерва; собственное ядро и БД — отдельный измеряемый бюджет; основная часть остаётся моделям и файловому кэшу. Это не статическое разбиение памяти и не гарантия конкретной модели. Политика должна выдерживать пиковое переподключение узлов одновременно с запуском STT и резервным копированием.
Вытеснение голосового worker лучше, чем вытеснение единственного процесса управления. Но корректнее не доводить систему до OOM: ограничить число одновременных inference-запросов, отклонять лишние с понятным ответом и заранее загрузить часто используемую небольшую модель.
CPU, GPU и NPU: какой тест нужен#
Для каждого backend сохраняются имя модели, хеш весов, формат квантования, runtime, число потоков, входное аудио, время первого ответа, длительность полного распознавания и пиковая память. Проверяется русский и английский корпус команд, а не только английская демонстрационная фраза.
Современные проекты вывода предлагают разные ускорители. Например, whisper.cpp документирует несколько CPU/GPU/NPU-путей, но перечень в README не доказывает, что конкретная плата и версия драйвера подходят нашему профилю. Именно поэтому аппаратный выбор привязан к воспроизводимому прогону. [61]
Проверки при получении комплектующих#
Плата фотографируется с маркировкой ревизии и разъёмов. Записываются версия UEFI, серийный номер SSD и идентификаторы радио. Выполняется загрузка Linux с последующей проверкой сети, USB-аудио, температуры и восстановления после обычного выключения. Затем запускаются нагрузка CPU и диска, несколько последовательных перезапусков и копирование большого файла с проверкой хеша.
Не следует начинать с разгона, undervolt или отключения защит ядра ради красивой задержки. Сначала нужен воспроизводимый штатный режим. Изменение лимитов питания выполняется по одному параметру и сопровождается повторным тепловым и функциональным испытанием. Аппаратные уязвимости и их mitigations являются отдельным фактором безопасности; их нельзя молча выключать в «оптимизированном образе». [87]
Карточка совместимости#
Для каждой пары «плата—CPU», «плата—RAM», «плата—Wi-Fi», «CPU—кулер», «плата— корпус» сохранить ссылку, ревизию, проверенный факт и результат стенда. Если ячейка основана только на предположении продавца, статус остаётся «проверить», даже когда остальные детали уже куплены.
Дополнительные устройства хранения и питания#
Имеющийся внешний SSD полезен для резервных копий, аудиокорпуса и переноса образов. Для постоянной системной БД внутренний накопитель уменьшает риск случайного отсоединения. USB-адаптеры NVMe отличаются контроллерами, охлаждением и поведением при сбое — внешний диск не становится ненадёжным по определению, но требует собственного теста.
UPS имеет смысл после первого устойчивого стенда. Он должен предоставлять станции сигнал о разряде и достаточное время для завершения критических операций. Бесконечно держать питание реле при потере управляющего сервера не является универсально безопасным поведением: режим нагрузки задаётся отдельно.
Ресурсный бюджет сервера#
Бюджет станции состоит из рабочего набора Core, БД, сетевых буферов, ОС, модели речи и временных пиков. Для голоса полезно сравнивать не только размер файла весов, но и максимальную RAM/VRAM, время загрузки, real-time factor и задержку первой пригодной гипотезы.
Если десятисекундный фрагмент обрабатывается за четыре секунды, RTF = 0,4. Это не означает ответ через 0,4 секунды: добавляются окончание фразы, очередь, разрешение намерения и исполнение. Если система одновременно записывает историю и обновляет модель, повторяют тот же тест под этой нагрузкой.
Рабочий набор собственного ядра измеряется отдельно от файлового кэша Linux. Результат хранит версии BIOS, ядра, драйвера, runtime, модели и способ квантования. Без этого сравнение Ryzen, Pi и Jetson не воспроизводится.
Файл модели, рабочая память и задержка — разные величины#
Для каждой выбранной модели составляем одну измерительную карточку. В неё входят точный файл и его хеш, формат весов, способ квантования, runtime, устройство исполнения, число потоков, память в покое и на пике, время загрузки и задержка на одном и том же наборе входов. Сравнение проводится вместе с работающим ядром, журналом и аудио, а не на свободном компьютере.
Четыре вентилятора и три разъёма#
В руководстве B650I Lightning WiFi указаны два CPU/WP и один CHA/WP — всего три разъёма. Три корпусных вентилятора плюс кулер нельзя считать четырьмя независимо наблюдаемыми каналами. Разветвитель обычно возвращает только один тахосигнал. Варианты: уменьшить число вентиляторов, принять групповое управление с явно неполной диагностикой или поставить документированный контроллер с отдельными таховходами. Проверяются ток каждого порта и суммарный пусковой ток. [3]
Модель Wi-Fi-чипа определяем по PCI/USB ID и реально загруженному драйверу, а не по ссылке на Intel в книге. Для встроенной графики также проверяется конкретный backend модели; наличие Radeon не является обещанием поддержки ROCm. Перед выбором H2 нужно сравнить CPU, Vulkan и доступные официально поддерживаемые ускорители на одном наборе задач.
Практический результат должен звучать как проверенное условие: «эта конфигурация обрабатывает такой набор команд при такой нагрузке». Из размера файла или рекламного числа операций в секунду такой вывод не следует. Поддержка ускорителя в runtime также не означает, что все операции выбранной модели выполняются на нём; это проверяется профилем исполнения. [144]