Введение

Запуск больших языковых моделей на своём железе — это всегда поиск компромисса. Либо ты тратишь больше $10 000 на потребительские видеокарты, которые едва тянут модели на 70 миллиардов параметров, либо лишь мечтаешь о серьезном железе корпоративного класса, которое, увы, тебе не по карману. Платформа Grace‑Hopper — архитектура суперчипа NVIDIA, объединяющего CPU и GPU, — это именно та инфраструктура для ИИ, о которой грезит сообщество LocalLlama. Но так��е системы обычно стоят от $100 000 и доступны только дата‑центрам и научным институтам.

Поэтому, когда на Reddit я наткнулся на систему Grace‑Hopper за 10 000 евро, первой мыслью было: «Это развод». А второй: «Интересно, получится ли договориться за 7500?».

Эта история — о том, как я купил корпоративное ИИ‑оборудование, изначально рассчитанное на жидкостное охлаждение в серверной стойке, но кое‑как переделанное предыдущим владельцем на воздушное. Затем я вновь переделал его на водяное охлаждение, пережил несколько ситуаций на грани фола (включая работу с GPU, который докладывал о температуре в 16 миллионов градусов) и в итоге получил десктопную систему, способную запускать у меня дома модели на 235 миллиардов параметров. Это рассказ о сомнительных решениях, творческом решении проблем и о том, что происходит, когда пытаешься превратить серверное чудовище в домашнюю рабочую станцию.

Если вам когда‑нибудь было интересно, что нужно, чтобы запускать по‑настоящему большие модели локально, или если вы просто зашли посмотреть, как кто‑то разбирает «железо» за $80 000 с одной лишь надеждой и бутылкой изопропилового спирта — вы по адресу!

Сделка

В начале этого года, просматривая r/LocalLLaMA/new, я наткнулся на невероятно выгодное предложение. Насколько выгодное? Вот характеристики сервера, предлагаемого за 10 тысяч евро — серьёзное обновление по сравнению с моей системой на 4x RTX 4090:

Характеристики:

  • 2x Nvidia Grace-Hopper Superchip

  • 2x 72-ядерных процессора Nvidia Grace CPU

  • 2x GPU Nvidia Hopper H100 Tensor Core

  • 2x 480 ГБ LPDDR5X памяти с коррекцией ошибок (ECC)

  • 2x 96 ГБ HBM3 памяти

  • 1152 ГБ общей высокоскоростной памяти

  • NVLink-C2C: пропускная способность 900 ГБ/с

  • программируемое энергопотребление от 1000 Вт до 2000 Вт (TDP CPU + GPU + память)

  • 1x высокоэффективный блок питания 3000 Вт (230 В → 48 В)

  • 2x слота PCIe Gen4 M.2 22110/2280 на материнской плате

  • 4x FHFL PCIe Gen5 x16

Уточнение: С тех пор как я купил эту систему, цены на DDR5 RAM стали безумными. 960 ГБ быстрой DDR5 сейчас стоят дороже, чем вся моя Grace-Hopper система 🤯

«Это развод», — подумал я, потому что:

  • H100 стоят около 30-40 тысяч евро каждая, а в этой системе их две

  • системы Grace-Hopper NVL2 практически недоступны для потребителей!

В посте Reddit объяснялась причина такой низкой цены: Основная причина в том, что это «Франкенштейн-система», переведённая с жидкостного охлаждения на воздушное. Кроме того, она выглядит не очень эстетично и не подходит для монтажа в стойку из-за прикреплённого блока питания на 48 В. Изначально система поставлялась напрямую от Nvidia.

Я немедленно предложил купить её, ведь почему бы и нет? Если это мошенничество, я всегда могу отказаться, но я хотел быть первым в очереди!

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

Я приехал к фермерскому дому в небольшом лесу и встретил Бернхарда — владельца GPTshop.ai. Он показал мне хорошую мастерскую (плазменные резаки, электронная лаборатория и т.д.), в которой он изготавливает специальные корпуса для высокопроизводительных H100-десктопов. Эти настольные ПК выглядят очень прилично, поэтому жаль, что его веб-магазин производит сомнительное впечатление; регистрация бизнеса на Каймановых островах определённо его не улучшает. Что я могу сказать, так это то, что этот товар был сильно скидочным и не относился к тем изысканным высококлассным настольным системам, которые он обычно продаёт.

Отказ от ответственности: У меня нет никакой аффилированности с GPTshop.ai, кроме как передачи им пачки наличных и получения взамен покрытого пылью сервера. Если бы это была спонсорская публикация, они вряд ли позволили бы мне упоминать температуры GPU в 16 миллионов градусов или часть, где мне пришлось паять компоненты навесным монтажом, молясь электронным богам.

Разборка сервера Grace Hopper

Сам сервер находился в не самом лучшем состоянии. Всё это добро работало чрезвычайно шу��но, имело высокопроизводительные вентиляторы, которые засосали много пыли, покрыв материнскую плату таким её слоем, что я не мог определить цвет текстолита. Однако система запустилась и работала нормально, поэтому я передал пачку наличных, пристегнул сервер ремнём безопасности на заднем сиденье моей машины (весил он около 20 кг) и повёз домой.

Я упоминал слово "шумно"? Запуск системы причиняет физическую боль. Там установлено 8 модулей Sunon с двойными вентиляторами, каждый из которых громкий, как мощный пылесос, но с гораздо более высокой и раздражающей тональностью звука. При работе всех 8 на полной мощности требуется защита для слуха — я мог слышать работу системы в подвале с закрытыми окнами на расстоянии 50 метров! Моя жена немедленно (и совершенно справедливо) запретила его использование дома. Мы оба работаем из дома, и мы не могли участвовать в онлайн-созвонах. Но у меня были другие планы…

Прежде всего, я, конечно же, сначала сфотографировал различные соединители между всеми этими платами, модулями и материнской платой, а потом приступил к разборке сервера.

Очистка сервера

Существенную часть пыли удалось убрать пылесосом во время разборки, но было очевидно, что под модулями Grace‑Hopper её ещё много. После их демонтажа я решил полностью промыть материнскую плату.

Я купил несколько литров изопропилового спирта и с помощью мягкой щётки несколько раз обработал всю плату, чтобы удалить оставшуюся мелкую пыль из разъёмов и между выводами SMD‑компонентов.

Я предположил было, что пыль может быть и внутри модулей Grace‑Hopper — но на самом деле я просто очень хотел их открыть, чтобы заглянуть внутрь.

Положил материнку на теплый пол на неделю для просушки, а пока перешёл к замене системы охлаждения.

Новая система водяного охлаждения

Я подумал было о создании собственного, кастомного блока водяного охлаждения, но беспокоился о возможных протечках, так что поискал и нашёл недорогие системы водяного охлаждения «все‑в-одном», по ~40 евро каждая со скидкой. Двух штук на каждый модуль GH200 было бы достаточно, поэтому я тщательно измерил размеры кристаллов GPU и CPU, а также расположение винтов, и занёс эти данные в Fusion 360 для моделирования адаптерных блоков.

У меня есть Bambu X1, который очень пригодился для прототипирования адаптерных блоков. Допуски должны быть очень точными, поэтому я напечатал несколько версий с вырезами, чтобы убедиться в надёжном контакте с открытым кристаллом GPU и безопасном расстоянии от хрупких частей.

Отправил детали на ЧПУ-фрезеровку, они приехали, когда материнская плата закончила сохнуть. После использования ещё большего количества изопропилового спирта для удаления масла, использованного в процессе обработки, их установили без особых проблем.

Сборка настольной системы

Мой основной материал для таких проектов — ProfilAlu с eBay. Он недорогой, жёсткий и поставляется предварительно нарезанным для сборки. Я собрал дизайн в Fusion 360, и детали прибыли через несколько дней. Однако различные крепления потребовали гораздо больше работы. Мне нужно было спроектировать несколько десятков специальных креплений для различных плат и фиксаторов воздушных фильтров; на это ушло несколько килограммов филамента, чтобы всё получилось правильно.

Катастрофы

То, что издаёт звук «ХЛОП» ночью… 💀

Я обнаружил, что один из самых страшных звуков, которые вы когда‑либо услышите, — это «хлопок», за которым следует «шипение», исходящие от материнской платы стоимостью $80 000, над которой вы только что работали. Запах волшебного дыма, появляющийся моментами позже, вызывает больше ощущение ужаса.

Идея была достаточно простой: у меня есть 8 мощных вентиляторов, каждый из которых должен потреблять огромный ток и работать при 12 В. В то же время у меня есть четыре системы водяного охлаждения, которые также работают при 12 В. Просто, правда? Я меняю стандартный 3-контактный разъём вентилятора от потребительского охладителя Arctic на странный серверный разъём вентилятора, и я могу запитать их от материнской платы, да ещё с управлением скоростью вращения!

Проблема 1. Какие-то странные разъёмы для вентиляторов на материнской плате. Они выглядели как крошечные Molex, но я их не узнал. Кажется, я наконец нашёл их в продаже, но они стоили ~20 евро каждый, а у меня есть принципы! Поэтому я составил схему проводки и с помощью резки и пайки изготовил адаптеры, после чего восстановил систему. Затем последовали хлопок и шипение… Мои расчёты по потреблению тока, должно быть, были не совсем точны!

Проблема 2. После разборки только что изготовленного изящного адаптера и перепайки вентиляторов я обнаружил, что несколько вентиляторов больше не работают. Хмммм. Перестановка различных вентиляторов показала ясную картину: некоторые разъёмы для вентиляторов на материнской плате не работали. Я взял свою самодельную тепловизионную камеру (тема для другого поста в блоге) и осмотрел всю плату, прежде чем заметить то, что выглядело как тёплый MOSFET (по сути, переключатель). Я погуглил маркировку, но результатов не было.

Проблема 3. Мне нужен был новый способ питания 12В AIO-водяных охладителей. Основной блок питания обеспечивает 48 В при 62,5 А, что как-то многовато, и я не был готов подключать их последовательно после последнего небольшого «инцидента». Я купил дешёвый блок питания 12 В-5 А с Amazon, потому что было указано «доставка на следующий день», и он обошёлся менее чем в 10 евро. Когда он прибыл, моя система охлаждения снова заработала!

Критические ошибки вентиляторов

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

Дата/время

Компонент

Событие

Состояние

Значение

4

08/06/25 19:24:08 CEST

Fan FAN_6_F

Lower Critical going low

Asserted

Reading 0 < Threshold 2156 RPM

5

08/06/25 19:24:08 CEST

Fan FAN_6_R

Lower Critical going low

Asserted

Reading 0 < Threshold 2156 RPM

6

08/06/25 19:24:08 CEST

Fan FAN_5_F

Lower Critical going low

Asserted

Reading 0 < Threshold 2156 RPM

7

08/06/25 19:24:08 CEST

Fan FAN_5_R

Lower Critical going low

Asserted

Reading 0 < Threshold 2156 RPM

8

08/06/25 19:24:08 CEST

Fan FAN_8_F

Lower Critical going low

Asserted

Reading 0 < Threshold 2156 RPM

9

08/06/25 19:24:08 CEST

Fan FAN_8_R

Lower Critical going low

Asserted

Reading 0 < Threshold 2156 RPM…

Если отключить вентиляторы, то BMC (Baseboard Management Controller) немедленно паникует и отключает материнскую плату, чтобы предотвратить термическое повреждение, даже несмотря на наличие водяных охладителей. Поэтому я отключил подсистему проверки вентиляторов.

# stops the service for the current session
systemctl stop phosphor-sensor-monitor.service

# prevents the service from starting on the next boot
systemctl disable phosphor-sensor-monitor.service

Кому нужен аппаратный мониторинг? ¯\_(ツ)_/¯

Ядерный синтез?

Отлично! На этом этапе я смог запустить процесс загрузки и даже доходил до входа в систему! Но только примерно в 1 случае из 4… Не оптимально. И даже если удавалось войти в систему, то сервер падал через 2 минуты.

Изучая логи BMC, я увидел:

Время

Источник

Процесс

Событие

Sep 23 08:20:18

oberon-bmc

shutdown_ok_mon[1478]

event: FALLING EDGE offset: 26 timestamp: [571.615238550]

Sep 23 08:20:18

oberon-bmc

power-status[1493]

event: FALLING EDGE offset: 18 timestamp: [571.632491062]

Sep 23 08:20:18

oberon-bmc

shutdown_ok_mon[545]

SHDN_OK_L-I = 0

Sep 23 08:20:18

oberon-bmc

shutdown_ok_mon[545]

Asserting SYS_RST_IN_L-O to hold host in reset

Sep 23 08:20:18

oberon-bmc

shutdown_ok_mon[545]

gpioset SYS_RST_IN_L-O = 0

Sep 23 08:20:18

oberon-bmc

power-status[697]

gpioset SYS_RST_IN_L-O = 0

Sep 23 08:20:18

oberon-bmc

power-status[697]

Set SYS_RST_IN_L-O=0

Итак, критический сбой в 08:20:18:

  • Сигнал SHDN_OK_L-I опускается до нуля (обнаружен спадающий фронт)

  • Это немедленно запускает последовательность отключения

  • Система отключается примерно через 30 секунд после успешной загрузки

Но почему?!!? Я же отключил аппаратный мониторинг.

Глубже погружаясь в логи:

Время

Источник

Процесс

Событие

Oct 05 10:15:00

oberon-bmc

ipmid[520]

thresholdChanged: Assert

Oct 05 10:15:00

oberon-bmc

ipmid[520]

thresholdChanged: Assert

Oct 05 10:15:00

oberon-bmc

ipmid[520]

thresholdChanged: Assert

Oct 05 10:15:00

oberon-bmc

satellitesensor[2351]

Sensor HGX_GPU_1_TEMP_1 high threshold 92 assert: value 1.67772e+07 raw data nan

Oct 05 10:15:00

oberon-bmc

satellitesensor[2351]

Sensor HGX_GPU_1_TEMP_1 high threshold 89 assert: value 1.67772e+07 raw data nan

Oct 05 10:15:00

oberon-bmc

satellitesensor[2351]

Sensor HGX_GPU_1_TEMP_1 high threshold 87 assert: value 1.67772e+07 raw data nan

Oct 05 10:15:00

oberon-bmc

phosphor-fru-fault-monitor[524]

/xyz/openbmc_project/logging/entry/496 created

Oct 05 10:15:00

oberon-bmc

phosphor-fru-fault-monitor[524]

/xyz/openbmc_project/logging/entry/497 created

Oct 05 10:15:00

oberon-bmc

sensor-monitor[499]

Starting 1000ms HardShutdownAlarmHigh shutdown timer due to sensor /xyz/openbmc_project/sensors/temperature/HGX_GPU_0_TEMP_1 value 16777214

Внимание: Ваш GPU не должен достигать 16 777 214 градусов Цельсия во время загрузки. Представьте, что случилось бы под нагрузкой!

Это заняло некоторое время для отладки, поскольку я был совершенно уверен, что датчики физически не могут считывать температуры выше 16 миллионов градусов Цельсия… Но затем я заметил нечто интересное в этом конкретном числе:

Десятичное

Двоичное

Шестнадцатеричное

16,777,214

1111 1111 1111 1111 1111 1110

0xFFFFFE

Это 2²⁴ - 2, что подозрительно близко к максимальному значению 24-битного целого без знака. В мире аппаратного обеспечения это сообщения от датчика: «Я понятия не имею, что происходит!» Когда оборудивание не может считать значение правильно — будь то из‑за плохого соединения, повреждённой цепи или сбоя инициализации — оно часто возвращает максимальное (или почти максимальное) возможное в данном представлении значение. Это похоже на цифровую версию пожатия плечами.

Логи подтвердили эту теорию: там была величина 1.67772e+07 (16 777 214), что не было свидетельством того, что мой GPU достиг температур ядерного синтеза 🔥 — это было свидетельством того, что датчик температуры просто вышел из строя. А если ошибка датчика носит прерывистый характер, наиболее вероятная причина — плохое соединение или физическое повреждение.

Потратив весьма много времени на поиск программных решений (потому что кому хочется снова разбирать всё?), я наконец смирился с неизбежным и достал отвёртки.

В этом году мне как раз пришлось обзавестись новым микроскопом, и он идеально подошел для диагностики и решения проблемы. Рядом с одним из модулей я обнаружил поврежденные компоненты для поверхностного монтажа. Скорее всего, они пострадали уже после чистки — вероятно, во время обратной сборки модулей с медными переходниками. Те весят больше двух килограммов, так что даже легкий удар мог легко их повредить.

Удивительно, но эти крошечные детали всё еще держались на дорожках, что позволило мне их промерять: конденсатор на 100 нФ и резистор на 4,7 кОм (оба у меня были под рукой, поскольку это стандартные номиналы для развязки). Плохая новость была в другом: в моих запасах в основном лежали крупные компоненты типоразмера «0805» (длиной 2 мм), а здесь стояли крошечные «0402» (всего 1 мм). К тому же одна из контактных дорожок полностью оторвалась.

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

Финальные штрихи

Я напечатал на 3D-принтере несколько дополнительных деталей:

  • Крепления для E1.S SSD 8 ТБ, который я нашёл недорого онлайн

  • Полная задняя панель для монтажа блока питания 3 кВт 48 В

  • Стильная сетка для защиты радиаторов водяного охлаждения и пылевых фильтров

Запуск самих GPU также был болезненным, поэтому я оставлю детали здесь для будущих искателей приключений:

# Data Center/HGX-Series/HGX H100/Linux aarch64/12.8 seem to work!
wget https://us.download.nvidia.com/tesla/570.195.03/NVIDIA-Linux-aarch64-570.195.03.run

# Tell the driver to completely ignore the NVLINK and it should allow the GPUs to initialise independently over PCIe !!!!   This took a week of work to find, thanks Reddit!

# create a modprobe config file:
sudo nano /etc/modprobe.d/nvidia-disable-nvlink.conf

# add the driver option
options nvidia NVreg_NvLinkDisable=1

# update the boot files:
sudo update-initramfs -u

# reboot
sudo reboot

Бенчмарки

Ради этого вы, возможно, и пришли? Я только начал, но после компиляции последней версии Llama.cpp с использованием 144 ядер за 90 секунд, вот несколько цифр бенчмарков на LLM большего размера:

Модель

Обработка запроса
(ток/сек)

Генерация токенов
(ток/сек)

gpt-oss-120b-Q4_K_M

2974.79

195.84

GLM-4.5-Air-Q4_K_M

1936.65

100.71

Qwen3-235B-A22B-Instruct-2507-Q4_K

1022.79

65.90

Это довольно ещё не оптимизировано, но пока выглядит многообещающе! Во время тестов LLM я достигал потребления около 300 Вт на GPU, что далеко от максимума в 900 Вт.

Разбивка затрат

Вот во сколько обошлась вся сборка от первоначальной покупки до финальных штрихов:

Компонент

Описание

Стоимость (EUR)

Сервер Grace-Hopper

2x GH200 суперчипа с GPU H100 («Frankenstein special»)

€7,500

Хранилище

б/у 8 ТБ E1.S NVMe SSD («состояние нового»)

€250

Адаптеры для водяного охлаждения

2x ЧПУ‑фрезерованные медные монтажные пластины для AIO‑охладителей

€700

AIO водяные охладители

4x Arctic Liquid Freezer III 420 (B-Ware)

€180

Каркас конструкции

профили из экструдированного алюминия, предварительно нарезанные и доставленные

€200

Передняя панель из стекла

тонированная стеклянная передняя панель, предварительно нарезанная и доставленная

€40

Филамент для 3D-печати

2x 1 кг чёрного PLA для специальных креплений и скоб

€40

Различное оборудование

гайки, болты и монтажное оборудование

€50

Средство для очистки

5 литров 99.9% изопропилового спирта (использовал от души)

€20

Блок питания 12 В-5 А

отдельный блок питания для AIO-водяных охладителей

€10

Эстетика

светодиодная лента (потому что «RGB всё ускоряет»)

€10

Итого

Собственно, даже не перевалило за 9000

€9,000

Не включено: беруши (совершенно необходимы!), микроскоп, который у меня уже был (но оказался незаменим), расход материалов на несколько неудачных 3D-печатей и стоимость нервов от созерцания надписи про «16 777 214°C» в системных логах.

Заключение

Так стоило ли оно того? Теперь у меня есть настольная система, способная запускать модели с 235 миллиардами параметров дома, за меньшую стоимость, чем один H100. Это потребовало разборки оборудования стоимостью $80 000, отладки датчиков (показывающих температуры, словно плата лежит на поверхности Солнца), и пайки компонентов навесным монтажом под микроскопом. У вас могло бы получиться по-другому. Скажем, в смысле расстояния: мне вот пришлось проехать два часа, чтобы забрать эту систему.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Автор — молодец?
56.45%Ух как он! На все сто молодец!70
36.29%Каждый развлекается как хочет… и может45
7.26%Рисково… Я бы на его месте не полез в такое9
Проголосовали 124 пользователя. Воздержались 11 пользователей.