메뉴
HN
Hacker News 25일 전

최신 고성능 AI 모델을 로컬에서 구동하는 법

IMP
7/10
핵심 요약

OpenAI나 Anthropic 같은 빅테크에 의존하지 않고, 로컬 환경에서 최고 수준(SOTA)의 AI 모델을 구동하기 위한 하드웨어 구성 및 세팅 가이드입니다. 약 2,000달러로 시작하는 중소형 구성부터 약 4만 달러의 다중 GPU 워크스테이션까지, 가격대별 권장 부품과 Docker 기반 실행 환경을 제공합니다. 특히 PCIe 스위치를 활용해 GPU 간 통신 병목을 해결한 점이 기술적으로 주목할 만합니다.

번역된 본문

jamesob의 로컬에서 SOTA LLM 구동 가이드 참고: 이 README의 표를 제외한 어떤 내용도 AI가 작성하지 않았습니다.

주머니에 2,000달러가 넘쳐나는데 로컬에서 구동되는 최고 수준의 기계 지능을 원하시나요? 그렇다면 4만 달러는 어떤가요? Dario와 Altman(각각 Anthropic, OpenAI의 CEO) 때문에 속이 쓰리신다면(그래야 정상입니다), 계속 읽어보세요. 이 새로운 형태의 컴퓨팅을 로컬에서 어떻게 실행하는지 알아볼 테니까요.

이 리포지토리에서는 제가 로컬에서 SOTA 모델을 구동하기 위해 사용하는 하드웨어, 구매 이유, 잘 알려지지 않은 설정의 비결, 로컬에서 음성 인식(STT)을 구동하는 방법, 그리고 제가 유용하다고 생각하는 모델을 Docker 컨테이너 내에서 실행할 수 있는 즉시 실행 가능한 설정 등을 확인할 수 있습니다.

목차 섹션 TL;DR 얼마나 쓸 의향이 있으신가요? 2,000달러로 Qwen과 훌륭한 STT를 얻을 수 있습니다(꽤 괜찮죠!). 4만 달러라면 거의 Opus(Claude 3) 수준의 모델을 구동할 수 있습니다. 기본 시스템: 이전 세대 EPYC + 이베이에서 구한 DDR4로 5,600달러 GPU: RTX PRO 6000 4개, 384GB VRAM. 돈이 들어간 곳입니다. c-payne 스위치 하위 BOM: 독립적인 PCIe 스위칭을 통해 GPU가 피어 투 피어(P2P)로 통신 GPU 인클로저: 하루 종일 목공을 한 이야기 스위치 정상 작동시키기: BIOS 버스 분할(Bifurcation), 링크 속도, ASPM 커널 / GRUB 매개변수: iommu=off 또는 NCCL이 멈춤 현상, ACS 비활성화 P2P 트래픽을 스위치 패브릭 내부에 유지하기 GPU 전력 제한: 110V 회로에서 46,000달러짜리 실리콘 구동하기 결과: Gen4 라인 속도 27.5/50.4 GB/s, 1마이크로초 미만의 지연 시간 runners/: 즉시 실행 가능한 서빙 설정: GLM-5.2-594B - vLLM docker-compose, DCP4+MTP5, 240k 컨텍스트에서 약 80 t/s runners/stt: whisper-large-v3를 활용한 즉시 실행 가능한 음성 인식 설정 tools/ measure-gpu-speed.sh: P2P 대역폭/지연 시간 벤치마크 리소스: rtx6kpro 리포지토리, c-payne

나의 설정 저는 운이 좋게도(혹은 바보 같이도) 프로용 RTX 6000 4개를 더 저렴했을 때 구매했습니다. 요즘 RAM 가격이 너무 비싸지면서, 이 GPU를 호스팅하기 위해 이베이에서 부품을 구해 이전 세대 DDR4 시스템을 구축하기로 했습니다. 이를 통해 기본 시스템 비용은 합리적으로 유지하면서도 많은 VRAM을 확보할 수 있었습니다.

제가 한 또 다른 다소 특이한 작업은 PCIe 4.0 스위치(c-payne.com 제품)를 사용한 것입니다. 이를 통해 텐서 병렬 처리의 allreduce 단계에서 모든 데이터를 PCI 루트 컴플렉스를 통해 보낼 필요 없이, GPU들이 서로 '직접' 유선 속도로 통신할 수 있게 해줍니다. 이 방식의 가장 큰 장점은 카드 간 지연 시간이 줄어든다는 것입니다. 결과적으로 저는 (핵심인) VRAM에 돈을 쓰고, 2026년 7월 현재 기준 비용이 매우 비싼 PCIe 5.0 / DDR5 기반 시스템에 돈을 쓰지 않게 되었습니다. 제가 구매한 부품 목록(BOM)은 아래에 자세히 나와 있습니다.

얼마나 쓸 의향이 있으신가요? 약 2,000달러 (~$2k) RTX 3090 두 개를 사용해 총 48GB의 VRAM을 구축하는 것이 훌륭한 선택입니다. 그러면 훌륭한 모델인 Qwen3.6-27B를 실행할 수 있습니다. 또한 매우 유용하다고 생각드는 whisper-large-v3를 사용해 최고 수준의 로컬 음성 인식(STT)을 구동할 수 있습니다. 모델 구동 후에는 제가 만든 크로스 플랫폼 STT 하네스(실행 도구)로 접근하면 됩니다. 저는 로컬 STT가 놀라울 정도로 유용하다고 느꼈고, 클라우드 호스팅 서비스와 달리 안심하고 사용할 수 있었습니다. 11GB 정도의 엔비디아 VRAM만 있다면 바로 실행할 수 있는 설정은 ./runners/stt 폴더에 있습니다.

약 4만 달러 (~$40k) 이 가격대에서는 모델의 지능이 한 단계 더 높아집니다. Claude Opus와 거의 비슷한 수준입니다. RTX 6000 Pro 4개를 구매하여 총 384GB의 VRAM을 구축하게 됩니다. RTX6kPRO 4개를 위한 현재 최고의 모델 GLM-5.2-Int8Mix-NVFP4-REAP-594B 날짜 / 최고의 모델 / 나의 설정 2026-07 / GLM-5.2-Int8Mix-NVFP4-REAP-594B / 러너 설정

다른 접근 방식 참고: 이것은 제 추천이지만, 여러분의 돈을 쓸 수 있는 다른 완벽히 타당한 방법들도 있습니다. 예를 들어, RTX 6000 Pro 4개를 구매하는 대신 예산의 대부분을 연결된 4개의 DGX Spark 클러스터(총 512GB VRAM)를 구축하는 데 할애할 수도 있습니다. 그리고 이를 느리지만 거대한 두뇌로 사용하여 Qwen3.7-27b가 단순 작업을 빠르게 처리하도록 유도하는 방식도 있습니다.

하드웨어 제가 RTX 6000 Pro 머신을 위해 최종적으로 구매한 하드웨어입니다.

기본 시스템 거의 전적으로 이베이에서 부품을 따로 구매한 지난 세대 보급형 EPYC 시스템입니다. 부품 / 사양 / 가격 마더보드 / ASRock Rack ROMED8-2T (SP3, 7× PCIe 4.0 x16, 듀얼 10GbE) / 715달러 CPU / AMD EPYC Milan 7313P (16코어 3.0GHz) / 504달러 RAM / 8× 16GB Crucial CT16G4RFD4213 DDR4 ECC RDIMM (총 128GB, 이베이) / 642달러 CPU 쿨러 / Dynatron T17

원문 보기
원문 보기 (영어)
jamesob's guide to running SOTA LLMs locally Note: nothing in this README aside from the tables was written by AI. Have $2k burning a hole in your pocket and want some local, state-of-the-art machine intelligence? How about $40k? If Dario and Altman are giving you heartburn (they should be), read on to figure out how to run this new kind of computing locally. In this repo you'll find the hardware I use to run SOTA locally, why I bought what and little-known SECRETS for configuring it, how I run speech-to-text (STT) locally, ready-to-run configuration for running models I think are good within Docker containers. Contents Section TL;DR How much are you willing to spend? $2k gets you Qwen and good STT (pretty far!); $40k gets you almost-Opus Base system Last-gen EPYC + eBay DDR4 for $5.6k GPUs 4× RTX PRO 6000, 384GB VRAM, where the money went c-payne switch sub-BOM Indie PCIe switching so GPUs talk peer-to-peer GPU enclosure A day of carpentry Making the switch behave BIOS bifurcation, link speed, ASPM Kernel / GRUB params iommu=off or NCCL hangs ACS disable Keep P2P traffic inside the switch fabric GPU power limiting Running $46k of silicon on a 110V circuit Result Gen4 line rate: 27.5/50.4 GB/s, sub-µs latency runners/ Ready-to-run serving configs: GLM-5.2-594B : vLLM docker-compose, DCP4+MTP5, ~80 t/s @ 240k ctx runners/stt Ready-to-run speech-to-text config with whisper-large-v3 tools/ measure-gpu-speed.sh : P2P bandwidth/latency benchmark Resources rtx6kpro repo, c-payne My setup I was lucky/dumb enough to buy 4x RTX Pro 6000s back when they were cheaper. Because RAM is now so expensive, I opted to build a last-gen DDR4 system to host these cards, the parts for which I got off eBay. This allowed me to keep base system cost reasonable while still getting a lot of VRAM. Another somewhat unusual thing I did was to use PCIe4 switches (from c-payne.com). This allows the GPUs to communicate to one another "directly" at wire speeds during the allreduce step in tensor parallelism, rather than having to send all data through the PCI root complex. The upshot of this is reduced latency between the cards. Consequently, I'm spending money on VRAM (where it counts) rather than on a PCIe5/DDR5 base system, which is terrifically expensive as of July 2026. My particular BOM is detailed below. How much are you willing to spend? ~$2k A great way to go is 2x RTX 3090s for a total of 48GB VRAM total. You can then run Qwen3.6-27B , which is an awesome model. You can also run SOTA speech-to-text (STT) with whisper-large-v3 , which I find very useful. That's the model - you'd then access it with my cross-platform stt harness . I've found local STT surprisingly useful - and I feel comfortable using it, unlike a hosted equivalent. You can find a ready-to-run config in ./runners/stt that only assumes the presence of ~11GB of VRAM on an Nvidia GPU. ~$40k At this price level, you get the next step up in model intelligence. Something pretty close to Claude Opus. You'd buy 4x RTX 6000 Pros for a total of 384GB of VRAM . Current best models for 4x RTX6kPRO GLM-5.2-Int8Mix-NVFP4-REAP-594B Date Best model My config 2026-07 GLM-5.2-Int8Mix-NVFP4-REAP-594B Runner config Other approaches Note: these are my recommendations, but there are other completely valid ways to spend your money. For example, there's probably also some regime where rather than getting 4 rtx6kpros, you allocate most of your money to building out a linked 4x DGX Spark cluster for a total of 512GB VRAM and use that as the slow, big brain to drive Qwen3.7-27b to do the rote tasks quickly. Hardware Here's the hardware I wound up purchasing for the 4x RTX 6000 pro machine. Base system A modest, last-gen EPYC system purchased in parts almost entirely from eBay. Component Spec Price Motherboard ASRock Rack ROMED8-2T (SP3, 7× PCIe 4.0 x16, dual 10GbE) $715 CPU AMD EPYC Milan 7313P (16-core 3.0GHz) $504 RAM 8× 16GB Crucial CT16G4RFD4213 DDR4 ECC RDIMM (128GB total, eBay) $642 CPU Cooler Dynatron T17 SP3 tower, 280W TDP $40 Case AAAWave Sluice V2 open frame $100 PSUs 2× Super Flower 1700W $750 PCIe Switch c-payne Microchip Switchtec PM40100 Gen4 (see sub-BOM below) ~$1,330 Boot NVMe 4TB M.2 $291 Storage NVMe (2x) 8TB M.2 (model weights) $1,200 Fans 3× 120mm PWM $15 Total $5,587 GPUs Component Spec Price GPUs 4× NVIDIA RTX PRO 6000 Blackwell Workstation (96GB each, 384GB VRAM total ) ~$46,000 c-payne PCIe Gen4 Switch Sub-BOM (c-payne.com) Part Qty Unit (€) Notes PCIe gen4 Switch 5× x16 — Microchip Switchtec PM40100 1 1.050 2× SlimSAS 8i upstream, 5× x16 quad-width-spaced downstream, aux x4 SlimSAS, 3× 8-pin EPS power SlimSAS PCIe gen4 Host Adapter x16 — REDRIVER AIC (DS160PR810) 1 140 Plugs into ROMED8-2T x16 slot, feeds switch upstream SlimSAS SFF-8654 8i cable — PCIe gen4 2 ~30 Each carries x8; pair = x16 upstream Total €1,220 ( $1,330 USD) GPU enclosure I had to custom fabricate a wood enclosure for the PCI switch and GPUs, which took about a day. I found the PCI switch's builtin fan very loud and seemingly useless, so I simply unplugged that from the board. Hoarding model weights I save all model weights locally on a ZFS filesystem that's replicated across the two 8TB drives, which is mounted at ~/storage . For any model I want to run, I first download the model using hf download <model-name> --local-dir ~/storage/<model-name> Running models Once the model weights are cached locally, I have a specific directory for each model that contains a docker-compose.yml file that cordones off the running of each model to its own Docker container. You can find these configurations in ./runners/ . Each container mounts in ~/storage/models in read-only mode to obtain the weights that I've cached locally. I then use opencode hosted on a VM on another machine to access the models once they're serving on http://clank.j.co:5000 . I use a network-internal DNS server to point clank.j.co to the LLM machine, but you could simply do http://:5000 too. Getting the PCI switches to work properly There was a lot of fiddling with the BIOS in order to make sure the motherboard wasn't downregulating the PCI switch speeds. BIOS Configuration (ROMED8-2T) Setting Value Why Chipset Configuration → AMD PCIE Link Width (switch slot) x16 (was x8/x8) Bifurcation was splitting the slot; upstream link trained at Gen4 x8. Requires both SlimSAS 8i cables connected (each carries x8). PCIe Link Speed (switch slot) Gen4 (not Auto) Blackwell Gen5 devices auto-negotiating down through the Gen4 switch could fail training and fall to Gen1. Forcing Gen4 stabilizes it. ASPM Disabled ASPM L1 drops idle links to 2.5GT/s. This turned out to be the explanation for the "Gen1 downgraded" lspci readings — links were actually running Gen4 under load (verified via p2pBandwidthLatencyTest), but disabling ASPM removes the cosmetic scare and any re-train latency. Re-Size BAR Enabled Required for full 96GB VRAM BAR exposure and GPU P2P. SR-IOV Disabled Bare-metal inference; avoids IOMMU overhead and P2P interference. Preferred IO Auto Optionally set Manual → bus 81 (the c-payne switch) for marginal latency gains, but left at Auto — it's a squeeze-more optimization, not a fix, and bus numbers shift after BIOS changes. Kernel / GRUB Parameters # /etc/default/grub GRUB_CMDLINE_LINUX= " iommu=off amd_iommu=off nomodeset " sudo update-grub # nvidia_uvm P2P fix echo ' options nvidia_uvm uvm_disable_hmm=1 ' | sudo tee /etc/modprobe.d/uvm.conf sudo update-initramfs -u Without iommu=off , NCCL hangs on multi-GPU P2P. ACS Disable (critical for switch P2P) With ACS enabled (default), P2P traffic gets bounced through the CPU root port instead of staying inside the switch fabric, negating the switch entirely. pcie_acs_override requires a patched kernel, so we disable via setpci at runtime. # /usr/local/bin/disable-acs.sh #! /bin/bash if [ " $EUID " -ne 0 ] ; then echo " ERROR: must be run as root " exit 1 fi for BDF in $( lspci -d " *:*:* " | awk ' {print $1} ' ) ; do setpci -v -s ${BDF} ECAP_A