ВычислительГлава 04 / 51

Совместимость важнее запаса

Почему подходящие по отдельности детали могут не сложиться в систему?

Работоспособность сборки определяется стыками: сокет, BIOS, память, охлаждение, питание, драйвер и механика.

Разъём — только начало совместимости. Процессор может подходить к сокету, но требовать более нового BIOS. Плата может иметь Wi-Fi, но неудобный для выбранного Linux драйвер. Модель может помещаться на диске, но не в оперативной памяти во время работы.

Поэтому до заказа составляем короткую цепочку доказательств: точная ревизия детали, документированная поддержка, небольшой проверочный запуск и измерение под общей нагрузкой. Красивая таблица характеристик не заменяет эту цепочку.

У двух деталей может быть один подходящий разъём и всё же не быть совместимости. CPU помещается в сокет, но не поддерживается текущим BIOS. Wi-Fi-карта физически подходит в M.2, но требует отсутствующего интерфейса. SSD получает питание, но перегревается под соседним радиатором. Поэтому ведомость компонентов должна содержать не только названия, но и основание совместимости.

Опорная сборка H2#

УзелДокументированный ориентирЧто допускается заменитьЧто проверяется повторно
CPURyzen 7 8700GСовместимый AM5 с достаточной CPU-производительностьюBIOS, мощность, высота и крепление кулера
ПлатаB650I Lightning WiFi, Mini-ITXДругая Mini-ITX с нужными разъёмамиI/O, расположение сокета, радио, fan headers
RAM2 × 16 ГБ DDR5, штатный режим2 × 32 ГБ после потребностиQVL, обучение памяти, стабильность
SSDNVMe 1 ТБНадёжная модель нужного форм-фактораТепло, ресурс, прошивка, восстановление
CPU-кулерNH-U9S как ориентир 125 ммСовместимая башня или низкий кулерНаправление потока, RAM, радиаторы VRM
Корпусные FAN3 × 120 мм PWMNF-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]

Найти в книге

Поиск по всем главам, схемам и техническим разделам.