Как я собрал LLM-печку на 4 GPU, и на что она способна

от автора

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

Надо сразу сказать, что о бюджетных комплектующих здесь речь не пойдет, ибо какой тут интерес: можно собрать игровой комп с 32 Гб DDR5 и RTX 3090 — и задача решена. Мы будем говорить про 96 Гб VRAM на добротной игровой материнке в ПК, который не будет напоминать монстра Франкенштейна. Статья для тех, кто начал разбираться в теме, или самых новичков, которым почему-то не интересны AMD Strix Halo, Mac studio и DGX Spark. Помимо сборки расскажу и то, какие модели и как она позволяет запускать. Также поделюсь своим опытом использования моделей в локальном агентском кодинге. Опыт запуска LLM охватывает только llama.cpp на windows 11 без WSL, инфраструктура для кодинга — Opencode.

Сборка

Материнская плата: ASUS ROG STRIX x870E-e GAMING WIFI RAM: 192 Гб (4×48) Corsair Vengeance одним набором, завелось на скорости 3600 МТ\с, и это грустно, когда речь идет о MoE-моделях с выгрузкой слоев в RAM CPU: AMD Ryzen 9950x Охлаждение CPU: СЖО arctic liquid freezer III 420 мм. Хранилище: 3xSSD, 3xHDD. В рамках статьи важно, что используются 3 M2 SSD при 5 слотах на материнке. Суммарно более 18 Тб места: можно много моделей держать и тестировать. GPU: (2xRTX 3090 + 2xRTX 3090Ti):

  • Gagibyte AORUS GeForce RTX™ 3090 XTREME WATERFORCE 24G

  • INNO3D GeForce RTX 3090 iCHILL X3

  • Palit GeForce RTX 3090 Ti GameRock

  • ASUS ROG Strix LC GeForce RTX 3090 Ti

БП: Thermaltake toughpower i2000w Корпус: Fractal Design Meshify 2 XL. Благодарю моего друга Серегу, который посоветовал мне его, когда я только начинал думать про сборку нового ПК, а речи о нескольких GPU даже и не шло.

Существующая сборка получилась в 4 этапа:

  1. В феврале 2025 года еще до дефицита RAM собрал новый для себя ПК, так как предыдущий уже прослужил 5 лет к тому моменту и требовал замены. Отличие от финальной сборки: 64 Гб RAM, только 1 rtx 3090 ti (от Palit), БП на 1.3 Квт и 2 SSD + 2 HDD

  2. Где-то в апреле 2025 года заменил RAM на комплект в 192 Гб. Повезло, что решился, так как в тот момент взял комплект за 56 тыс. руб. Тогда испытал кайф от того, что можно обучать модели на реально большом объеме данных, не заморачиваться с оптимизацией, рассчитывать попарные расстояния на ~150 тыс. эмбеддингов и не страдать от OOM.

    Первая версия сборки

    Первая версия сборки
  3. В апреле 2026 года решил, что тема локальных агентов и LLM мне близка, и я бы хотел иметь возможность спокойно жечь токены в своих экспериментах, не переживая за какие-либо лимиты. На Авито докупил две GPU на СЖО: Gagibyte AORUS GeForce RTX™ 3090 XTREME WATERFORCE 24G и ASUS ROG Strix LC GeForce RTX 3090 Ti. Выбор пал на такие карты, потому что иного способа отвести тепло в рамках закрытого корпуса я не представлял, и, так повезло, что в корпус можно хитрым образом вставить сверху два радиатора на 240 мм. Вообще я планировал приобрести две одинаковые RTX 3090 Ti от ASUS, но на Авито буквально из-под носа увели вторую.

    Установка радиаторов

    Установка радиаторов
    Немного другой ракурс

    Немного другой ракурс
    Вот так выглядела сборка с 3 GPU

    Вот так выглядела сборка с 3 GPU
  4. Чуть позже в том же месяце решил докупить еще одну видеокарту, которая бы заняла последние свободные кубические сантиметры моего корпуса. Была куплена INNO3D GeForce RTX 3090 iCHILL X3. Выбрал именно ее, так как она была около 32 см в длину и с микроскопическим запасом должна была влезть в корпус.

    Вот так выглядит сборка с 4 GPU

    Вот так выглядит сборка с 4 GPU

На сегодня сборка выглядит именно так, как на последнем фото. Ниже можно увидеть, что без проблем закрывается боковая стенка. В таком закрытом состоянии я и использую свой ПК. Очень не хотел получить монстра Франкенштейна, и у меня вроде получилось. Немного колхозинга со стяжками имеется, но меня устраивает

И корпус даже закрывается!

И корпус даже закрывается!

Почему выбор пал на 4 RTX 3090 (Ti)? На сегодня это наиболее оптимальный путь для “быстрого” инференса:

  • Скорость памяти 900-1000 ГБ/сек — ни один девайс с унифицированной памятью такого обеспечить не может.

  • Это потребительские GPU, которые встанут в сборку без танцев с бубном и экзотики с переходниками, драйверами

  • Поддерживает NVlink, теоретически можно ускорить инференс, а также использовать для обучения

  • Не дешево, но все еще бюджетно за быстрые 24 Гб VRAM

  • Не ревут как авиалайнер на взлете.

“Быстрый” в кавычках, так как даже такой скорости маловато, когда модель занимает всю память без квантования. О запускаемых LLM, скоростях и “инсайтах” будет ниже. Пока вернемся к железу.

На фото видно, что вентиляторов я не пожалел, все-таки такая сборка может потреблять 2 Квт без проблем, а значит хорошо прогревается и может отопить большую комнату. Везде, где можно было установить вентилятор до и после радиатора, я так и поступал: однозначно это полезно для радиаторов видеокарт, так как при стресс-тесте температура радиаторов такая, что руку начинает жечь при прикосновении. Для радиатора ЦП это, в целом, не нужно, единственная цель бутерброда из 5 вентиляторов при нем — это создать более сильный входящий воздушный поток (раньше было 6, но из-за одного по центру не влезал кабель питания для GPU от Palit). Установлено 2 вентилятора в середине корпуса, сразу за ближайшей к фронтальной панели видеокартой. Также дополнительно установил два “карлсона” на задней стенке корпуса

Немного колхозинга, зато воздушный поток - ураган!

Немного колхозинга, зато воздушный поток — ураган!

Итого 16 “крутиляторов”. Заранее скажу, что проблем с охлаждением нет (тесты будут ниже).

Как подключить 4 GPU, если у тебя всего 2 PCI-e?

Оказывается, нет ничего сложного в том, чтобы установить много PCI-e девайсов, если на материнской плате мало PCI-e слотов, но есть достаточно M2 (те, что для SSD), так как существуют переходники m2 -> PCI-e x4.

Изучая вопрос локального инференса, натолкнулся на Reddit на упоминание переходников m2 -> PCI-e 4.0 x4. Там же писали, что медленная шина не должна быть бутылочным горлышком при инференсе LLM. Эта информация дала понимание, что я могу реально запустить много GPU, не покупая дорогущие HEDT процессоры и материнки. В целом, ничего хитрого, покупаешь переходник и устанавливаешь. Хитрым оказалось то, что не каждый переходник позволяет работать стабильно, а самое неприятное, что не каждый переходник в принципе встанет так, чтобы можно вывести провод или райзер. Я купил несколько вариантов. Однако стабильным оказался только один — тот, что на фото без встроенного райзера.

Стабильный переходник - самый левый

Стабильный переходник — самый левый
Работающим без проблем оказался адаптер без встроенного райзера

Работающим без проблем оказался адаптер без встроенного райзера

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

Неприятной неожиданностью оказалось то, что к переходнику необходимо подключить питание, благо через стандартный SATA, но подключение дополнительного кабеля к БП, чтобы был свободный SATA в уже готовой сборке — занятие небыстрое. Без питания видеокарта, подключенная к такому переходнику, не стартует — оказывается GPU, хоть и питается от БП, но около 20-30 Вт забирает с PCI-e.

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

Отдельная история была с райзерами. У меня был райзер на 20 см (купил, чтобы поставить видеокарту вертикально, еще когда только собрал компьютер). Докупил 30 см, когда решил установить еще 2 видеокарты. А позже для 4-й докупил 50 см райзер. Все PCI-e 4.0 x16. Что интересно, каждый райзер по отдельности работал стабильно, без отвалов GPU. Тем не менее, я перебирал несколько вариантов установки видеокарт и пробовал последовательное подключение райзеров. И в этом сценарии хорошо отработал только вариант 20 см -> 50 см. А вот остальные комбинации были нестабильны: то система не проходила POST, то при загрузке LLM в память GPU отваливалась (хотя нагрузку в AIDA64 выдерживало хорошо).

Также иногда для повышения стабильности может быть лучше в BIOS поставить режим работы M2-слота на PCI-e gen3 или даже меньше. Мне это помогло получить более стабильную работу при использовании нестабильных райзеров, переходников и их комбинаций. Однако, в итоговой сборке снижать версию PCI-e не пришлось, все работает на 4-й версии.

Влияет ли как-то то, что видеокарты подключены по медленной шине? В действительности это накладывает ограничения на тот тип разделения модели по видеокартам, который будет максимально эффективен. В llama.cpp есть 2 основных — это row и layer. Первый разделяет модель так, что важным становится быстрый обмен данными между видеокартами, что обеспечивает более точное распределение нагрузки по видеокартам, и теоретически, если скорость обмена действительно быстрая, дает прирост скорости чтения и генерации. Второй, и он в моем случае оптимальный, разделяет нейросеть по слоям. Если в модели 40 слоев, а видеокарт — 4, то можно на каждую скинуть 10 слоев. Но надо понимать, что минимальная единица, которую можно переместить на видеокарту — это слой, слой может быть тяжелым, поэтому иногда бывает невозможным распределить модель и кэш (в гигабайтах) на карты равномерно: слои бывают разные по весу, а еще есть кэш, который надо где-то хранить. Слои относительно друг друга в нейросетях последовательные, то есть для расчета результата текущего слоя необходимо знать результат предыдущего. Таким образом, раскидав слои по видеокартам, соблюдая их последовательность, мы получаем, что обмен информацией между ними будет только в тот момент, когда рассчитан последний слой на одной видеокарте и необходимо передать результаты для расчета первого слоя на другой. Нагрузка на шину в этом случае мала. Но есть и минус — рост количества GPU приводит к тому, что вы можете использовать более крупные модели, но скорость генерации от количества видеокарт не растет. По факту даже падает, так как при росте размера модели (при одинаковом квантовании), у нее больше весов, которые надо рассчитывать, а видеокарты у вас работают как один последовательный пайплайн. Например, было 4 GPU c 40-слойной моделью, стало 5 GPU, но и модель вы взяли 50-слойную (при прочих равных), новая видеокарта занимается тем, что забирает на себя новые 10 слоев, а так как пайплайн стал даже длиннее (для нового токена мы вместо ожидания последовательных расчетов на 4 GPU, ждем расчеты на 5 GPU), то мы получили снижение скорости. Такое положение вещей стало для меня еще одним неприятным сюрпризом

Итог: можно подключить много GPU, если есть свободные M2, но тут есть точка насыщения, так как оптимальный способ задействовать все GPU при медленной шине приводит к падению скорости при росте размеров модели.

Потребление

В сборке стоит БП на 2 кВт, теоретически должен потянуть всю сборку без необходимости снижения TDP видеокарт: 350+350+450+480 (RTX 3090 Ti ASUS ROG Strix LC чуть разогнана с завода) = 1630 Вт, оставшиеся 370 Вт должны были бы обеспечить работу остального железа, учитывая, что одновременное максимальное потребление всех компонентов маловероятно. Тем не менее, использовать БП на грани его возможностей — идея не лучшая. Также у RTX 3090 есть особенность в виде пикового короткого потребления доходящего до 600 вт. По этим причинам TDP немного урезано до 90% у RTX 3090 и до 95% у RTX 3090 Ti. У последних лимиты слабее, так как именно на них при инференсе я стараюсь закинуть больше работы, и у них нет тех проблем с температурой памяти, которые есть у обычных RTX 3090.

Максимальное потребление всей сборки в системе мониторинга БП выше 1900 Вт я не видел даже в стресс-тестах.

Температура

Стресс-тест

Был проведен неполноценный стресс-тест длительностью около 6 минут: выбило предохранитель на пилоте, который я использую для подключения ПК, а в комнате стало чрезвычайно жарко, перезапускать тест не стал. К тому же подобных нагрузок на инференсе нет. Использовалась AIDA64 с нагрузкой CPU и GPU. Потребление системы держалось в диапазоне 1700-1850 вт. Диапазон температур комплектующих во время нагрузки видно на диаграмме ниже

Из важного:

  • Температура памяти GPU не доходит и до 90

  • Hotspot, конечно, высок, но до 100 не доходит. GPU1 не мешало бы обслужить (было бы еще известно, какой именно GPU под эти индексом скрывается)

  • Отличные от видеокарт комплектующие чувствуют себя хорошо

Как читать диаграмму типа ‘ящик с усами’

Ящик состоит из 4 элементов: — Тело или непосредственно сам ящик. Нижняя граница — это значение, при котором 25% всех температур были ниже, а 75% — выше. Верхняя граница — наоборот, 25% температур были выше, а 75% ниже. — Линия внутри ящика — это медиана. Половина наблюдений выше этого значения, вторая половина — ниже — Усы обозначают границы «обычных значений». — Точки — это значения за границами обычных значений, т.н. «выбросы». Даже если наблюдается очень много точек, то надо понимать, что их все равно меньше, чем содержится в границах усов

Эта диаграмма наглядно показывает не просто типичные значения, но еще и демонстрирует, как значения распределены (каков диапазон типичных значений, как далеко от типичного значения бывают выбросы и т.п.).

Детальная диаграмма температур GPU

Самые горячие значения наблюдаются на тех видеокартах, температура которых успела выйти на плато. При этом не достигает 100 градусов — не хорошо, но и не плохо.

Говоря об энергопотреблении, по какой-то причине обе 3090 Ti не дотягивают до своих лимитов. Они выставлены в Afterburner, а точные значения я взял из того, что возвращает nvidia-smi. При этом одна из них на воде и турбине, а на второй были заменены термопаста и термопрокладки не более чем за месяц до даты написания статьи. То есть тротлинга я на них не ожидаю. Знатоки, прокомментируйте, в чем может быть причина такого графика? Обе 3090 показывают себя хорошо, стабильно потребляя столько, сколько задано, здесь точно тротлинга нет

Инференс

На инференсе получилось провести более релевантное тестирование длительностью более полутора часов. Постоянный инференс обеспечен работой агентов в Opencode, использовалась Qwen3.6-27B-BF16.

Более узкие тела ящиков говорят о стабильности температур, и, в целом, температуры ниже, чем на стресс-тесте. Явно видно, что долгий инференс — не проблема для этой сборки. По опыту — инференс в течении 16 часов не вызывает проблем, кроме прожарки комнаты. Потребление сборки на инференсе редко когда превышает 750 вт.

Детальная диаграмма температур не показывает экстремальных значений. Инференс проходит в комфортных условиях для GPU

Далее про аппетиты видеокарт во время инференса. Во время замеров я не выставил галочку с мониторингом потребления 4-й GPU, поэтому на диаграмме ее нет и сами GPU по цветам не соответствуют тем, что были на диаграмме при стресс-тесте. Предполагаю, что зеленая — это какая-то rtx 3090, синяя — это ROG Strix LC GeForce RTX 3090 Ti, так как через нее осуществляется вывод картинки, и она стабильно потребляет больше остальных. В основном потребление держится в диапазоне 50-105 Вт. Однако, есть резкие скачки, превышающие установленные лимиты. Reddit утверждает, что такое случается при чтении промпта

Из диаграммы видно, что инференс — достаточно легкая задача в моменты генерации токенов, чем и занимаются GPU подавляющую часть времени.

Что позволяет такая сборка делать

Самое главное, что можно делать с 96 ГБ видеопамяти — это использовать небольшие модели с большим контекстом (262 144 токенов) типа qwen3.6-27b, qwen3.6-35B-A10B или Gemma-31B без квантования модели, без квантования кэша. Также можно позапускать модели покрупнее, но с квантованием. Мне понравилась больше всех Qwen3.5-122B-A10B-Q5_K_S с размером контекста 160 тыс токенов и симметричным квантованием кэша в Q8.

Скорости генерации и чтения (обработки) промпта на диаграмме ниже. Для замеров использовался llama-bench. Одинаковые цвета — одинаковые квантования моделей. Все замеры были осуществлены при следующих параметрах:

  • Длина промпта — 100 тыс. токенов

  • Размер контекста — 160 тыс. токенов

  • Длина генерации — 3072 токена

  • Один прогон

  • Размер ubatch-size использовался тот, который я нашел опытным путем в ходе экспериментов. Ubatch-size заметно ест память, поэтому не забывайте экспериментировать с его размерами. Искал я тот размер, который позволит максимизировать скорость чтения промпта при достаточно большом контексте:

    • Qwen3.6-35B-A3B-BF16 — 1280

    • Qwen3.6-35B-A3B-UD-Q8_K_XL — 2496

    • Qwen3.6-27B-BF16 — 2432

    • Qwen3.6-27B-UD-Q8_K_XL — 2048 (тут не подбирал, меня устроило все и при размере по умолчанию)

    • Qwen3.5-122B-A10B-Q5_K_S — 472

Все эти модели имеют размер, который влезет в VRAM. Но ведь на этой сборке еще и много обычной RAM (192 ГБ), почему бы не использовать ее тоже? Теоретически можно использовать модели под 250 ГБ весом (оставим пару десятков ГБ RAM на систему). Но это разумно только если от модели ожидаются божьи откровения, так как скорость чтения и генерации ужасно низкие. Я пробовал Qwen3.5-397B-A17B-Q4-UD-XL (228 Гб) и Qwen3.5-122B-A10B-UD-Q8_K_XL (159 ГБ) с использованием n-cpu-moe — выгрузкой всегда активных слоев в VRAM, остальное в RAM, конкретное число слоев подбиралось индивидуально. В обоих случаях скорость генерации была около 3.5 т\сек, а скорость чтения промпта была не более 51 т/сек. На Reddit писали, что можно добиться приемлемой скорости чтения при использовании огромного ubatch-size, около 8096, но я пока не дошел до таких экспериментов.

Вообще из моего опыта, использование частичной выгрузки слоев в RAM в обычном потребительском ПК имеет смысл, если есть только одна GPU, так как прироста от нескольких GPU не возникает. Узкое горлышко — это обмен между RAM и VRAM. На самом деле, это было печальное открытие: изначально я думал, что смогу, благодаря большому объему VRAM + RAM, запускать именно большие модели с гибридным инференсом на CPU и GPU с приемлемыми скоростями, но реальность оказалась не такой радужной.

В целом для инференса на потребительском железе много RAM не нужно — скорости неприемлемые.

Какое железо нужно для инференса разных моделей?

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

Уровень

Необходимая память

Возможности

Примеры моделей

0

16 ГБ

Запустить хоть что-то с минимально приемлемым качеством

Квантованные 9-10B модели, YandexGPT-5-Lite-8B

1

24–32 ГБ

Небольшие LLM (до 9–10B без квантования) или квантованные версии «рабочих лошадок» до ~30B с небольшим контекстом

Модели до 9–10B (без квантования), квантованные версии проверенных моделей до ~30B. Малые версии qwen3.5, gemma4, qwen3.6-35B-A3B, qwen3.6-27B

2

48–96 ГБ

«Рабочие лошадки» с минимальными компромиссами (или без них) и большим контекстом. Можно прикоснуться к более серьёзным моделям. Золотая середина для дома (оптимально 48–64 ГБ)

qwen3.6-35B-A3B, qwen3.6-27B, gemma-31B, qwen3.5-122B-10B

3

200–400 ГБ

Использование моделей уровня qwen3.5-122B-10B почти без квантования, либо более крупных моделей с квантованием

qwen3.5-122B-10B, Qwen3.5-397B-A17B, MiniMax-M2.7

4

800–1200 ГБ

Qwen3.5-397B-A17B поедет с минимальным квантованием или без него. Можно задуматься о квантованных версиях моделей-гигантов

GLM-5, Kimi K2.5, MiMo-V2.5-Pro, GigaChat 3.1 Ultra

5

от 2 ТБ

Использование гигантских моделей без квантования, либо с квантованием, но с большим контекстом

DeepSeek V4 Pro, Kimi-K2.5, MiMo-V2.5-Pro

Как видно, уровни требуют памяти столько, что существуют разрывы между ними, например 96 ГБ — 200ГБ. И в этом кроются важные детали. Если вы оказались между уровнями, то вы не получите сколько-нибудь значимого прироста в качестве модели: вам будут доступны чуть более крупные кванты или больше контекста, но сам список моделей, которые станут вам доступны относительно ближайшего низкого уровня, не изменится, также и не изменится сильно квантование, которое станет доступно.

И это не только мои наблюдения. На Reddit натыкался на посты о бессмысленности перехода с 2-x Blackwell 6000 на 4 штуки, так как единственная модель, которая становится доступна это Qwen3.5-397B-A17B. Отдавать ради такого более 10 тыс. грязных зеленых бумажек — не сильно рационально.

Немного опыта использования моделей

Кратко поделюсь своими открытиями из опыта использования моделей. В основном, это агентский кодинг дашборда на связке python + plotly dash. Экспериментирую с прописыванием разных агентов, использованием разных моделей, используя почти идентичное ТЗ. Пока что выводы таковы:

  1. Штрафы за повторения нужны, но если переборщить, то явным признаком является то, что модель перестает быть способна прописывать пути в tool caling: все время пишет что-то похожее, но не оригинальные пути. Когда столкнулся с такой проблемой, то думал, что дело в длинном контексте или кванте модели.

  2. Многие хвалят qwen3.6 27B. По моему опыту она неплоха, но один минус перекрывает ее достоинства — модель очень часто норовит уйти в повторения. Даже более глупая qwen3.6 35b-A3B не доставляла таких проблем. Условно, я победил проблему повторения с помощью использования DRY семплера в llama.cpp. “Условно”, потому что модель все равно уходит в повторения, но из-за кумулятивного штрафа выходит из них, но 10-20 повторений все равно будет. Важно то, что повторением может быть последовательность в несколько строк текста (иногда и 30-50 строк), поэтому на выход требуется значительное время. Я готов согласиться с этим фактом, так как это позволяет быть кодингу автономным, пусть и не с такой эффективной генерацией токенов

  3. Qwen3.6 35b-A3B генерирует токены как из пулемета, но думает очень много

  4. Qwen3.6 27B тоже думает много, но заметно меньше Qwen3.6 35b-A3B

  5. Мой фаворит сейчас Qwen3.5-122B-10B в квантовании Q5_K_S и 160 тыс. контекста. Думает заметно меньше других: там где Qwen3.6 35b-A3B настрочит размышлений на пару листов A4 мелким шрифтом, Qwen3.5-122B-10B вернет 3-5 строк размышлений. Качество кода явно выше. Скорость чтения и генерации меня устраивает.

  6. Много обычной RAM имеет смысл только, если у вас 1 GPU и вам некритично медленное чтение промпта

  7. Автономный кодинг возможен — и это прекрасно.

Зачем оно тебе, воин?

Как у многих, я думаю, были детские мечты о супер-мощном компе, который однозначно потянет Crysis, так и у меня это желание было. Появилась возможность и какое-то функциональное использование — реализовал. Сам я аналитик данных и иногда люблю покрутить данные, посчитать что-то хитрое просто для себя, да и есть идеи проектов, которые надо реализовывать в коде, а некогда. Собственно такое положение вещей и стало причиной. Относительно недавно в жизнь ИТ (да и не только) ворвались кодинговые агенты, которые могли бы помочь в реализации проектов, которые застряли на стадии “а здорово было бы…”. Можно сказать что и просто чат с LLM такую задачу решает — я пробовал, но это было тяжело, так как руками надо растаскивать код по файлам. А при ручной правке реализованного кода понимаешь, что тратить кучу времени на переписывание костылей от условного DeepSeek просто не готов. В общем, локальная агентская разработка — выглядит интересным способом сделать то, до чего не доходили руки ранее. Тем не менее, остается вопрос “а почему локальная?” — купи подписку на Claude или любой другой инструмент да реализуй все, что хочешь, выйдет скорее всего дешевле. Истинный ответ: мне просто интересно, и я предпочитаю, когда все под рукой и контролируется лично. Дополнительная плюшка — никто не заблокирует доступ к локальной LLM. Могу добавить еще один приятный бонус, который стал понятен уже после сборки и начала использования: многие топики на Reddit на тему того, что “мой агент потребляет токены как не в себя!!! на прошлой неделе навайбкодил на 200$” и “я исчерпал лимит Claude Pro за чаc и теперь мне надо ждать 4 часа, пока откроется новый” идут мимо — токены у меня условно-бесплатны, а лимиты условно-бесконечны.

Сэкономил — значит заработал!

А можно ли что-то сэкономить на домашнем инференсе? Момент спорный, начальные инвестиции в этот мутный проект велики. Но если принебречь этим фактом, то инференс дома не такая плохая идея. Давайте немного посчитаем на основе моей статистики.

Типовое потребление, которое я вижу это 550-650 Втч, возьмем с запасом, пусть будет 750. Скорость чтения и генерации возьмем как в моих замерах для Qwen3.5-122B-A10B-Q5_K_S: чтение — 975 т/сек, генерация — 10.9 т/сек Представим, что мы живем свою лучшую жизнь, и с кнутом в руках заставляем агентов кодить 24 часа в сутки, без обеда, без выходных, в течение 30 дней. За 42 дня использования opencode я получил 101.7 входящих токенов и 9.5 млн исходящих. Что дает нам соотношение 91,5% к 8,5%. Упомяну, что мой ПК не работает 24/7, а кручу я на нем разные модели. Проведем расчеты для 30 дней. Применив “анализ что если” из Excel, поймем, что прочитаем 273 638 792 токена, а нагенерируем 25 193 658 токенов. За электричество мы платим по 2-тарифной системе, 16 часов в сутки мы платим по 10 руб. за Квтч, 8 часов — 4.5 руб. за Квт*ч. С такими вводными мы потратим 4410 рублей за 30 дней.

Теперь обратимся к OpenRouter и воспользуемся 3 моделями:

  1. Qwen3.6-27B (0.29$ за млн входных и 3.2$ за млн выходных)

  2. Qwen3.7 Max (1.25$ за млн входных и 3.75$ за млн выходных)

  3. GPT Chat Latest (5$ за млн входных и 30$ за млн выходных)

Курс доллара на момент написания статьи 71.5 руб. за грязную зеленую бумажку, но мне кажется более реалистичным взять 80 руб. за $.

Кол-во токенов возьмем то же, что и на домашнем инференсе. Хотя по факту она будет больше и токенов мы бы сожгли больше, так что сравнение заведомо смещено не в пользу домашнего инференса.

Что получится:

  1. Qwen3.6-27B скушает 12 768 руб.

  2. Qwen3.7 Max нажжет токенов на 34 922 руб.

  3. Аппетит GPT Chat Latest выльется в 169 920 руб.

И это мы не учли экономию на отоплении (или затраты на кондиционер)!

Расчеты примерные, но какое-то представление они дают. Где-то здесь важно помнить, что перестав пить кофе на вынос мы экономим до 6900 руб. в месяц. А если мы еще и не покупаем по новому роллс-ройсу каждый месяц, то экономия может превысить 30 млн. руб. в месяц! То есть важно понимать, что если, без домашнего инференса вы бы и не использовали подписочный формат инференса, то эта экономия эфемерна.

Выводы

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

  • после сборки ПК все ваши эксперименты не приведут к большим счетам за токены

  • вы можете запускать те модели, которые вряд ли кто-то будет хостить (модели, которые разучили цензуре, например)

  • ваши данные никуда не утекают

  • никто не заблокирует вам доступ к вашей модели

  • в вашем доме всегда будет тепло

Будет ли это дешево? Даже если затариваться на Авито — нет, не будет.

Будет ли такой аппарат есть из розетки много электричества, что оплата ЖКУ будет эквивалентна оплате подписки на модели? — Нет, инференс не является настолько энергозатратной операцией, во всяком случае, когда есть только 1 пользователь.

Советую ли я каждому обзавестись свои сервером под LLM?На первый взгляд, хочется сказать что нет, но немного подумав куда движется коммерческая ИТ-сфера, задумываешься о желании быть независимым от компаний. Есть в англоязычном интернете небольшой тренд на self-hosted, и я думаю, что свой сервер для LLM может быть неплохой отправной точкой.

Мне было интересно поделиться своим опытом, и я надеюсь статья будет полезна. Сам я не бывалый мастер в этих делах, поэтому не стесняйтесь подсказывать, где я был не прав, что вам было бы интересно протестировать и что вы бы делали, имея такой вычислительный агрегат.

ссылка на оригинал статьи https://habr.com/ru/articles/1041422/