local-llm (jamesob)
- title
- local-llm (jamesob)
- type
- toolbox
- summary
- Руководство по сборке и конфиги для фермы инференса на 4x RTX PRO 6000 с настройкой PCIe-коммутатора
- tags
- local-models, hardware, llm, self-hosted, gpu
- language
- Shell, Docker Compose
- license
- not stated
- created
- 2026-07-23
- updated
- 2026-07-23
- lang
- ru
- translation_of
- local-llm-guide
- source_updated
- 2026-07-23
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Описание от jamesob всего, что он знает о запуске современных моделей с открытыми весами локально: список комплектующих для его собственной машины, настройки BIOS и ядра, поиск которых потребовал кучи возни, готовые к запуску конфиги раздачи docker-compose.yml в runners/ и настройка распознавания речи (speech-to-text). В README отмечено, что ничего, кроме таблиц, не было написано ИИ, и это заметно по тону: текст читается так, будто автор показывает вам свою сборку, а не как документация.
Три ценовые категории
Примерно за $2k вы покупаете две RTX 3090 ради 48GB VRAM: этого хватает для запуска Qwen3.6-27B и остаётся место для локального STT. Настройку распознавания речи он называет главным сюрпризом сборки: cohere-transcribe (заменивший whisper-large-v3) требует около 11GB VRAM, и в runners/stt есть готовый конфиг. Автор пишет, что ему комфортно им пользоваться именно благодаря локальности - в отличие от облачных аналогов.
Уровень за $20k помечен как TODO. В качестве вариантов он перечисляет 2x RTX 6000 Pro, четыре объединённых в сеть DGX Spark и платформы Apple, отмечая, что личного опыта с ними у него нет.
Примерно за $40k вы получаете четыре карты RTX PRO 6000 Blackwell Workstation ради 384GB VRAM - один только кремний тянет примерно на $46 000. Его текущая модель на этом уровне по состоянию на 1 июля 2026 года - GLM-5.2-Int8Mix-NVFP4-REAP-594B, запущенная через vLLM с DCP4 и MTP5, выдающая около 80 токенов/с на контексте в 460k. REAP в названии файла означает reap-expert-pruning - из весов уже вырезаны наименее активные эксперты.
Сборка
Необычный выбор - потратиться на VRAM и сэкономить на хосте. Базовая система - платформа EPYC прошлого поколения на DDR4, собранная почти целиком из деталей с eBay: ASRock Rack ROMED8-2T, EPYC Milan 7313P, 128GB DDR4 ECC RDIMM, два БП по 1700W, загрузочный NVMe на 4TB и два NVMe по 8TB под веса, всё это в открытом стенде. Итого $5687, что, по его оценке, экономит около $10 000 по сравнению с хостом на PCIe5/DDR5 по ценам июля 2026 года. Логика проста: сброс данных в системную RAM всё равно делает инференс непригодно медленным для агентных нагрузок, так что поколение хоста мало что даёт, если модель влезает в VRAM.
То, что превращает это руководство во что-то большее, чем просто список покупок, - PCIe-коммутатор. Он использует коммутатор c-payne Microchip Switchtec PM40100 Gen4 (~$1330 вместе с хост-адаптером redriver и кабелями SlimSAS), чтобы четыре GPU связывались peer-to-peer на полной скорости линии на этапе allreduce при тензорном параллелизме, вместо маршрутизации всего трафика через root complex шины PCIe. Видеокарты и коммутатор размещены в деревянном корпусе, который он собрал за день, причём штатный вентилятор коммутатора отключён как шумный и бесполезный.
Настройки, отнявшие больше всего времени
К этому разделу стоит возвращаться: здесь собран список вещей, которые по умолчанию молча не работают.
В BIOS: принудительно выставить слот коммутатора в x16, так как бифуркация разделяла его и обучала апстрим-линк как Gen4 x8 (оба кабеля SlimSAS 8i несут по x8, поэтому подключены должны быть оба). Принудительно выставить Gen4 вместо Auto, так как устройства Blackwell Gen5 при согласовании скорости через коммутатор Gen4 могут сбоить при обучении линка и падать до Gen1. Отключить ASPM, которая сбрасывает простаивающие линки до 2.5GT/s: под нагрузкой линки действительно работали на Gen4, но ASPM выдавала тревожное сообщение "downgraded" в lspci. Включить Resize BAR для полного доступа к BAR на 96GB и работы P2P. Отключить SR-IOV.
В ядре: iommu=off amd_iommu=off nomodeset в командной строке GRUB, плюс options nvidia_uvm uvm_disable_hmm=1. Без iommu=off библиотека NCCL зависает на multi-GPU P2P.
В рантайме: необходимо отключить ACS, иначе peer-to-peer трафик заворачивается через корневой порт процессора, и коммутатор становится совершенно бесполезен. Для pcie_acs_override требуется патченное ядро, поэтому репозиторий предлагает цикл setpci, запускаемый при загрузке через systemd oneshot-сервис. Проверка: команда lspci -vvv | grep ACSCtl должна показывать одни минусы, а nvidia-smi topo -m - связь PIX между всеми четырьмя GPU вместо PHB или NODE.
Замеренный результат - полная пропускная способность Gen4: 27.5 GB/s в одну сторону, 50.4 GB/s в обе стороны, задержка 0.37 - 0.45 мкс. Скрипт tools/measure-gpu-speed.sh воспроизводит эти замеры.
sudo nvidia-smi -pm 1
sudo nvidia-smi -pl 350 # down from a 600W default
Ограничение по питанию введено потому, что вся ферма работает от одной линии 110V, что автор сам считает не самым разумным решением. По 350W на четыре карты дают 1400W нагрузки на GPU, что укладывается в бюджет БП; на более раннем этапе с одним блоком питания карты работали примерно на 260W каждая.
Как он это использует на практике
Веса моделей лежат на файловой системе ZFS, зеркалированной на два диска по 8TB, и скачиваются через hf download <model> --local-dir ~/storage/<model>. Под каждую модель создаётся директория со своим docker-compose.yml, и каждый контейнер монтирует ~/storage/models в режиме только для чтения. Сервис раздачи доступен по адресу http://clank.j.co:5000 под внутренним DNS-именем.
Агентная часть работает на отдельной VM: небольшое приложение открывает tmux-сессию для каждой директории внутри ~/src, и в каждой запускается экземпляр opencode, направленный на HTTP API машины инференса. По его мнению, открытые модели становятся по-настоящему полезными в основном благодаря инструментарию: camoufox плюс Kagi API ключ плюс searXNG для браузинга и поиска, Telegram-бот для уведомлений и приватный экземпляр Gitea, куда агент может отправлять PR. Виртуальная машина видит хост только через общее монтирование файловой системы, поэтому агент может устанавливать всё, что захочет.
Ограничения и предостережения
В README лицензия не указана. Всё описанное специфично для Nvidia и по большей части для AMD EPYC, а обходные пути для ACS и IOMMU жертвуют изоляцией ради пропускной способности: это разумно для выделенного bare-metal сервера под инференс, но не подходит для совместного использования на общей машине. Цены приведены по состоянию на июль 2026 года, а аргумент в пользу отказа от DDR5 завязан на перекосы рынка оперативной памяти - см. hold-on-to-your-hardware.
Утверждение о том, что "за $40k можно получить нечто очень близкое к Claude Opus", стоит сопоставить с local-ai-is-not-opus, где Alex Ellis доказывает, что формулировка "почти Opus" неверна даже для хорошо настроенных локальных сборок. Эти позиции не то чтобы прямо противоречат друг другу - Ellis говорит о гораздо более скромном железе, - но vault не должен считать тезис "близко к Opus" окончательно доказанным.
См. также
titit-local-ai рассматривает общий случай запуска локальных моделей; local-llm-16gb-vram-tests - тот же эксперимент на противоположном конце бюджета, с одной картой на 16GB. mesh-llm объединяет GPU с разных машин вместо установки их в одно шасси. Понятия со стороны моделей, которые предполагаются в конфигах runner'ов: mixture-of-experts, llm-quantization, kv-cache-sizing, moe-cpu-offload. Смежные инструменты: llama-cpp и ik-llama-cpp для работы с форматом GGUF, который этот репозиторий в основном обходит стороной в пользу vLLM.
Репозиторий: jamesob/local-llm. Упомянутые смежные репозитории и ссылки: local-inference-lab/rtx6kpro для настройки нескольких карт RTX 6000 Pro и c-payne.com по коммутаторам.