Глава 1: Коробка с мусором

13 августа 2026

Сейчас интересное время для разработчика: трансформерные большие языковые модели — пожалуй, первое по-настоящему новое и любопытное технологическое явление в отрасли за долгое время. AI-агенты для написания кода, построенные на этой технологии, быстро стали неотъемлемой частью работы, и ощущение похоже на переход от ручных инструментов к электроинструментам в столярном деле — в этом есть свои плюсы и минусы.

Доверие к технологии обычно возникает только тогда, когда её можно разобрать и собрать обратно в собственном гараже. Идея подключаться к сервису и использовать AI-агента, работающего под чужим контролем, вызывает беспокойство: слишком много всего может пойти не так. Сначала привыкаешь зависеть от такого инструмента, а потом его в любой момент могут отобрать. Технология сама по себе увлекательная, но подключаться к чьему-то огромному AI-датацентру не хочется — гораздо интереснее иметь маленький AI-датацентр в каждом доме! А поскольку сейчас на рынке компьютерных комплектующих что-то похожее на дефицит (или, может, конец 2010-х был периодом избытка?), для экономии придётся собирать всё буквально из мусора.

AI-датацентр в каждом доме

Главное, что нужно для такой сборки — набор GPU. Нужна быстрая память, подключённая к чему-то, способному выполнять массу параллельных матричных вычислений — именно этим и является видеокарта. Но, как уже говорилось, всё, что хоть как-то заточено под AI-нагрузки или известно своей эффективностью в этой области, сейчас стоит диких денег.

Ещё в 2022 году несколько компаний пытались раскрутить облачный гейминг — идею запускать видеоигры где-то в датацентре, чтобы не тратиться на дорогой игровой ПК или консоль. AMD взяла одну из своих рабочих станционных видеокарт, добавила немного памяти и убрала все видеовыходы. Получившуюся карту назвали V620. В открытую продажу она никогда не поступала, поэтому многие о ней не слышали. AMD выпустила этих карт с огромным запасом, а затем вся идея облачного гейминга провалилась из-за (задним числом очевидных) проблем с задержками.

Эти карты не предназначены для AI-нагрузок, а поддержка софта у AMD, как известно, оставляет желать лучшего — поэтому их относительно дешево можно купить у перепродавцов списанного серверного оборудования на eBay. Судя по внешнему виду, полученные экземпляры вообще не были в использовании — выглядят практически новыми. В каждой — 32 ГБ довольно быстрой VRAM. Да, за ними закрепилась репутация карт, плохо подходящих именно для того, что задумано, но насколько сложно может быть заставить это заработать?

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

проверка совместимости без вентиляторов и кабелей питания

Раз уж дефицит комплектующих в разгаре, для объединения массива GPU были куплены и другие б/у детали. Материнская плата — с платформы X299 2017 года, из чьей-то старой игровой сборки, достаточно старая, чтобы стоить дёшево на eBay. У неё четыре слота PCIe x16 с нужным шагом, чтобы разместить четыре карты рядом друг с другом — это было единственным критерием выбора. Процессор — Intel Core i9-10900X, худший чип, выпущенный Intel за последние двадцать лет; при запуске в 2019 году это была уже трижды-переосвежённая версия чипов Skylake, переоценённая и энергоёмкая, поскольку Intel в тот момент никак не могла угнаться за Ryzen от AMD ни по архитектуре, ни по техпроцессу. И это только на руку — значит, сейчас он дёшев, а свою работу выполнит.

Оперативная память и SSD были извлечены из других компьютеров в доме. Это, конечно, немного читерство — покупать их отдельно сейчас было бы неприятно дорого. Но требования здесь ниже, чем может показаться: вся вычислительная нагрузка ложится на VRAM видеокарт, а после загрузки модели с диска эти компоненты в основном простаивают. Даже без запасных деталей под рукой этот этап обошёлся бы недорого.

Питать четыре GPU и самый неэффективный процессор Intel решено было мощным блоком питания. Почему-то на eBay блок на 1600 Вт оказался дешевле, чем на 1200 Вт. Постоянно потреблять столько энергии система не будет, но запас нужен, чтобы справиться с одновременным включением всех компонентов при старте.

На новый корпус и вентиляторы пришлось потратиться отдельно. Да, именно вентиляторы! У серверных GPU нет собственного охлаждения — они рассчитаны на поток воздуха от стены серверных вентиляторов. В сети есть немало моделей кожухов для 3D-печати под такие карты, но при установке четырёх карт рядом все они оказываются неоптимальными: либо используют крошечный, но очень шумный вентилятор на 40 мм прямо на торце, либо выступают слишком далеко в сторону, не позволяя разместить карты близко друг к другу. Четыре двухслотовые карты рядом занимают около 160 мм по ширине, так что оптимальным решением выглядят два серверных вентилятора на 80 мм, обдувающих радиаторы карт прямо в этом месте.

для таких задач в последнее время используется OnShape — удобный инструмент

Был спроектирован и напечатан кожух, крепящий один 80-мм вентилятор сразу на две карты.1 На задней части карт имелось что-то вроде металлического кабельного направляющего плавника, закреплённого мелкими винтами — эти отверстия и использовались для крепления кожуха. В нём предусмотрен вырез для электрических разъёмов и четыре отверстия для крепления вентиляторов сзади. Печать выполнена из карбонового ASA-пластика, хотя обычный PLA, скорее всего, справился бы не хуже.

Выбор пал на вентиляторы с частотой вращения 10 000 об/мин — для гарантии достаточного потока воздуха, тем более стоили они столько же, сколько более медленные модели. Они действительно очень шумные! Изначально планировалось, чтобы материнская плата регулировала их скорость по температуре GPU, но сразу это не заработало, так что на этапе первичной настройки пришлось пользоваться защитой для ушей.

подходит как перчатка

Система изначально не хотела загружаться. Почти час пришлось провести в наушниках, стоя в гараже и перебирая настройки BIOS, чтобы понять, какие параметры PCIe нужно выставить, чтобы плата действительно запустилась со всеми четырьмя картами (нужно включить Resizable BAR и MMIO High Size, в двух разных подменю глубоко в расширенных настройках — в 2017 году никто не рассчитывал, что в эту плату подключат столько VRAM). Примерно тогда же выяснилось, что в гараже нет Ethernet, так что в 11 вечера пришлось начать проделывать отверстия в стене.

совершенно обычное занятие

После нескольких неудачных попыток система всё же загрузилась, и началась установка Ubuntu 24.04. С берушами в ушах и всё ещё без управления вентиляторами был собран любимый инференс-сервер — отличный llama.cpp, а затем протестирована модель Gemma4, которая с комфортом уместилась на одну карту. Это была любимая локальная модель для работы на одиночной GPU-станции, и результаты оказались вполне неплохими — не так быстро, как на бывшей RTX 3090, но вполне достойно. Затем была запущена Deepseek V4 Flash — реальная цель всей этой сборки. Она медленная! На тот момент не было ни малейшего представления, как её ускорить (об этом — в следующей главе), важно было лишь убедиться, что она вообще поместится — и она поместилась.

Снова о вентиляторах! Невозможно переоценить, насколько они шумные. На полной мощности их слышно через стены дома, а такая мощность здесь вовсе не требуется. Изначальный план — управлять вентиляторами через встроенный контроль на материнской плате — не сработал: плата отказывалась выставлять разным вентиляторам разную скорость. Судя по всему, это распространённая особенность плат от Supermicro. Поэтому вместо этого был собран отдельный контроллер вентиляторов: в запасе была целая коробка noname-клонов Arduino Nano, купленных на AliExpress ещё до введения тарифов. Пришлось откопать код, написанный больше десяти лет назад для университетского курса по микроконтроллерам для управления ШИМ-мотором, и немного его подчистить.

Контроллер вентиляторов просто получает от сервера значение в процентах; на самой машине нужен скрипт, считывающий температуру и подбирающий подходящую скорость. А поскольку это AI-сервер, показалось уместным попросить его написать скрипт самому. Deepseek V4 Flash вполне справилась с этой задачей — при обычном для лёгких моделей уровне контроля и вмешательства человека.2 Был забавный момент, когда модели предложили придумать способ разогреть GPU для теста скрипта — и она начала писать PyTorch-скрипт для матричного умножения. Ей пришлось объяснить: «Нет, ты работаешь именно на этих картах, ты существуешь в экземпляре llama.cpp на этой машине — просто сгенерируй что-нибудь, и карты уже загрузятся» — после чего у модели произошёл небольшой экзистенциальный кризис. Умилительно!

Сам контроллер собран на макетной плате, просто засунутой в корпус сервера. На всякий случай он обёрнут изолентой, чтобы не устроить короткое замыкание на корпус.

наверное, всё будет в порядке. Не о чём беспокоиться.

На этом этапе система работает довольно стабильно, GPU протестированы, и остаётся разобраться, как заставить всё это работать быстро — об этом пойдёт речь в следующей главе.

ОБНОВЛЕНИЕ: 14 августа 2026

Накануне статья неожиданно попала в тренды одновременно на Hacker News и Bluesky. Работа над второй главой продолжается, а пока — ответы на несколько заданных вопросов.

«Какой корпус использовался?»
SilverStone RM4A — выбран в основном за то, что у него восемь слотов для PCI-карт на задней панели вместо стандартных семи, что позволило разместить четыре GPU рядом друг с другом. Не самый дешёвый вариант, но цена не пугающая — $262.
«Сколько стоили видеокарты?»
Продавца удалось уговорить на $350 за штуку при покупке сразу четырёх. Результат может отличаться, особенно при покупке одной карты — цены на этот товар сейчас довольно волатильны.
«Какие ещё детали использовались?»
Материнская плата Supermicro C9X299-PGF, процессор Intel Core i9-10900X, блок питания EVGA на 1600 Вт, четыре разномастные модуля DDR4 по 32 ГБ (это избыточно, подробнее — в следующей главе), NVMe-накопитель Samsung 980 PRO, необслуживаемая жидкостная система охлаждения Asetek и разные вентиляторы. На GPU установлены вентиляторы Arctic S8038-10K.
«Разве не нужны серверная материнка, процессор и память, чтобы разгонять четыре карты одновременно?»
Память в системе не ECC, процессор — Core i9, а не Xeon, а на самой плате в нескольких местах написано «Play Harder». С другой стороны, на задней панели есть отдельный Ethernet-порт для IPMI, а загружается всё это целую вечность. Как это классифицировать — вопрос открытый.
«Не проще было бы купить Ryzen AI Max Halo или DGX Spark и получить те же 128 ГБ памяти для моделей?»
Конечно, так было бы намного проще — это разумный вариант вместо сборки такого франкенштейна. С другой стороны, это стоило бы почти вдвое дороже, и не было бы возможности разобраться в параллелизме между несколькими GPU. Можно пойти ещё дешевле и просто купить кредиты API для Deepseek V4 Flash на OpenRouter, но тогда весь смысл затеи потерялся бы.
«Погодите, вы просверлили противопожарную перегородку между гаражом и гостиной, чтобы протянуть Ethernet, тем самым аннулировав страховку жилья?»
Нет, кабель проведён через перегородку через отверстие, где раньше проходил коаксиальный кабель.
«Сделайте RSS-ленту.»
Да, когда-нибудь дойдут руки.
«Насколько всё плохо с ROCm вместо CUDA?»
Не так плохо, как можно подумать! Подробнее — в следующей главе.
  1. Файл кожуха в формате STL можно скачать и распечатать при необходимости. [назад]
  2. Код для Arduino и серверного скрипта доступен здесь. [назад]