---
title: "로컬에서 최상급 LLM 돌리려면 2천 달러와 4만 달러 사이에서 뭘 사야 하나"
published: 2026-07-03T15:03:43.000Z
canonical: https://jeff.news/article/4607
---
# 로컬에서 최상급 LLM 돌리려면 2천 달러와 4만 달러 사이에서 뭘 사야 하나

James O'Beirne이 로컬에서 최신급 LLM과 음성 인식 모델을 돌리기 위해 직접 구성한 하드웨어, GPU, PCIe 스위치, Docker 실행 구성을 정리한 가이드다. 2천 달러급 2× RTX 3090 구성부터 4× RTX PRO 6000으로 384GB VRAM을 확보하는 4만 달러대 구성까지, 돈을 어디에 써야 하는지와 멀티 GPU P2P 병목을 어떻게 피했는지가 핵심이다.

## 로컬 LLM 가이드인데, 사실상 홈랩용 슈퍼컴퓨터 조립기임

- James O'Beirne이 로컬에서 최신급 LLM을 돌리기 위한 하드웨어와 설정을 꽤 노골적으로 공개함
  - 목표는 hosted AI 서비스에만 의존하지 않고, 로컬에서 모델 추론과 음성 인식까지 돌리는 것
  - README에는 어떤 하드웨어를 샀는지, 왜 그렇게 샀는지, BIOS와 커널 설정에서 어디가 터졌는지까지 들어 있음
  - 실행 구성도 `runners/` 디렉터리에 Docker Compose 형태로 제공한다고 함

- 가격대는 크게 두 갈래임. 2천 달러 정도로 꽤 멀리 가거나, 4만 달러 넘게 써서 거의 최상급 로컬 추론 머신을 만들거나
  - 2× RTX 3090이면 총 48GB VRAM을 확보할 수 있고, Qwen3.6-27B 같은 모델을 돌릴 수 있다고 추천함
  - 이 구성으로도 whisper-large-v3 기반 로컬 음성 인식(STT)은 충분히 가능하다고 함
  - 고가 구성은 4× RTX PRO 6000 Blackwell Workstation으로 총 384GB VRAM을 확보하는 쪽임

> [!IMPORTANT]
> 저자가 돈을 쓴 곳은 최신 CPU나 DDR5 플랫폼이 아니라 VRAM임. 2026년 7월 기준 PCIe5·DDR5 베이스 시스템이 너무 비싸서, 중고 EPYC·DDR4 기반에 GPU와 PCIe 스위치를 붙이는 선택을 함.

## 4만 달러급 구성의 핵심은 384GB VRAM

- 저자는 4× RTX PRO 6000으로 GLM-5.2-Int8Mix-NVFP4-REAP-594B를 로컬에서 돌리는 구성을 제시함
  - GPU 한 장당 96GB, 총 384GB VRAM
  - `vLLM` Docker Compose 구성, DCP4+MTP5 설정을 언급함
  - 약 460k 컨텍스트에서 대략 80 tokens/s 수준을 결과로 적어둠

- 베이스 시스템은 의외로 최신 하이엔드가 아니라 전 세대 EPYC와 중고 DDR4 조합임
  - 메인보드는 ASRock Rack ROMED8-2T, SP3 소켓, PCIe 4.0 x16 슬롯 7개, 듀얼 10GbE
  - CPU는 AMD EPYC Milan 7313P 16코어 3.0GHz
  - RAM은 8× 16GB DDR4 ECC RDIMM, 총 128GB
  - GPU를 제외한 베이스 시스템 비용은 약 5,587달러

- GPU 비용이 압도적임
  - 4× NVIDIA RTX PRO 6000 Blackwell Workstation 비용은 약 46,000달러
  - 말 그대로 시스템 예산의 대부분이 VRAM에 들어감
  - 저자는 이게 로컬 SOTA급 추론에서 가장 의미 있는 지출이라고 보는 셈임

## PCIe 스위치가 진짜 주인공임

- 저자가 특이하게 쓴 부품은 c-payne.com의 PCIe4 스위치임
  - Microchip Switchtec PM40100 기반 Gen4 스위치
  - 2× SlimSAS 8i 업스트림, 5× x16 다운스트림 구성
  - 호스트 어댑터와 케이블까지 합쳐 약 1,330달러 수준

- 이 스위치의 목적은 GPU끼리 CPU 루트 컴플렉스를 거치지 않고 직접 통신하게 만드는 것임
  - tensor parallelism에서는 allreduce 단계에서 GPU 간 데이터 교환이 빈번함
  - 트래픽이 CPU 루트 포트를 거치면 병목이 생기고, 비싼 GPU를 꽂아도 성능이 안 나옴
  - 스위치 패브릭 안에서 P2P가 되면 PCIe4만으로도 꽤 높은 대역폭과 낮은 지연시간을 얻을 수 있음

```mermaid
sequenceDiagram
    participant 모델서버
    participant 첫번째GPU
    participant PCIe스위치
    participant 다른GPU들
    participant CPU루트포트
    모델서버->>첫번째GPU: 추론 요청과 텐서 분할
    첫번째GPU->>PCIe스위치: P2P 통신 시작
    PCIe스위치->>다른GPU들: allreduce 데이터 교환
    다른GPU들->>PCIe스위치: 결과 동기화
    PCIe스위치->>첫번째GPU: 병렬 계산 결과 반환
    첫번째GPU-->>CPU루트포트: 필요한 경우에만 호스트와 통신
```

- 실제 측정치도 꽤 좋음
  - CPU 방향 업스트림은 Gen4 x16으로 약 30GB/s
  - 스위치 경유 P2P는 단방향 27.5GB/s, 양방향 50.4GB/s
  - 지연시간은 0.37~0.45µs 수준
  - 저자는 이걸 Gen4 line rate 수준으로 봄

## 설정 삽질 포인트가 실전적임

- BIOS에서 PCIe 설정을 제대로 잡지 않으면 스위치가 기대한 속도로 안 붙음
  - 스위치 슬롯의 PCIe Link Width를 x16으로 설정해야 했고, x8/x8 bifurcation 상태에서는 업스트림 링크가 Gen4 x8로 잡혔다고 함
  - Link Speed는 Auto가 아니라 Gen4로 고정함. Blackwell Gen5 장치가 Gen4 스위치를 통과하며 협상하다 Gen1로 떨어지는 문제를 피하기 위해서임
  - Re-Size BAR는 96GB VRAM 전체 BAR 노출과 GPU P2P에 필요하다고 적음

- ASPM도 헷갈리는 포인트였음
  - ASPM L1 때문에 idle 상태에서 링크가 2.5GT/s로 보일 수 있음
  - `lspci`에서 downgraded처럼 보여도 부하를 걸면 Gen4로 retrain되는 경우가 있고, 저자는 `p2pBandwidthLatencyTest`로 확인함
  - 그래도 재훈련 지연과 불안감을 줄이려고 ASPM을 껐다고 함

- 커널과 PCIe 토폴로지 쪽도 그냥 넘어가면 안 됨
  - `iommu=off`가 없으면 NCCL이 멀티 GPU P2P에서 멈춘다고 함
  - ACS가 켜져 있으면 P2P 트래픽이 스위치 안에 머물지 않고 CPU 루트 포트를 통해 우회해, 스위치를 단 의미가 사라짐
  - `nvidia-smi topo -m`에서 GPU 사이가 `PIX`로 보여야 하고, `PHB`나 `NODE`면 원하는 토폴로지가 아님

> [!WARNING]
> 멀티 GPU 로컬 LLM은 GPU 개수보다 토폴로지가 먼저임. ACS, IOMMU, Re-Size BAR, PCIe 링크 속도를 놓치면 수만 달러짜리 VRAM을 꽂아놓고도 통신 병목에 막힐 수 있음.

## 전력과 물리 조립도 만만치 않음

- GPU와 PCIe 스위치 장착을 위해 나무 인클로저를 직접 만들었다고 함
  - 제작에 하루 정도 걸렸고, PCIe 스위치와 GPU를 물리적으로 고정하기 위한 커스텀 작업에 가까움
  - 스위치 내장 팬은 시끄럽고 별 효과가 없어 보여서 뽑았다고 함

- 전력은 더 아슬아슬함
  - 220V 회로를 새로 설치하지 않기 위해 단일 110V 회로에서 전력 제한을 걸어 운용함
  - 350W/GPU면 GPU만 1,400W
  - 단일 1700W PSU로 버티던 중간 단계에서는 260W/GPU, 총 GPU 1,040W에 시스템 약 280W를 더해 전체 약 1,320W로 맞췄다고 함

- 모델 가중치는 로컬 ZFS 스토리지에 캐시함
  - 8TB NVMe 2개에 모델 가중치를 저장하고 ZFS로 복제함
  - 모델은 `hf download <model-name> --local-dir ~/storage/<model-name>` 형태로 받아둠
  - 각 모델별 디렉터리에 `docker-compose.yml`을 두고, 컨테이너가 로컬 모델 저장소를 read-only로 마운트하게 구성함

## 로컬 AI 작업 환경까지 이어짐

- 모델 서버는 내부 네트워크에서 HTTP API로 접근함
  - 예시 엔드포인트는 `http://clank.j.co:5000`
  - 내부 DNS로 LLM 머신을 가리키게 했지만, 그냥 머신 IP를 써도 된다고 함

- 저자는 별도 VM에서 opencode를 띄우고, 이 VM이 로컬 추론 머신의 API를 쓰게 구성함
  - VM의 `~/src` 아래 각 디렉터리마다 tmux 세션을 만들고 opencode 인스턴스를 실행하는 식
  - 브라우징과 검색에는 camofox, Kagi API, searXNG를 붙임
  - 커뮤니케이션과 알림에는 Telegram bot, 코드 협업에는 로컬 private Gitea를 사용함

- 샌드박스 관점도 있음
  - AI 작업자는 VM 안에서 실행되고, 호스트와의 통신은 공유 파일시스템 마운트 정도로 제한함
  - 필요한 걸 설치하고 작업하게 두되, 호스트 시스템을 직접 건드리지 않도록 경계를 둔 구성임

---

## 기술 맥락

- 이 글의 핵심 선택은 최신 플랫폼 전체를 사는 대신 VRAM과 GPU 간 통신에 돈을 몰아준 거예요. 대형 LLM 추론에서는 CPU가 조금 오래된 것보다 모델 가중치를 GPU 메모리에 올릴 수 있느냐가 먼저 걸리거든요. 그래서 EPYC·DDR4 중고 베이스를 쓰고, 남는 예산을 384GB VRAM과 PCIe 스위치에 태운 선택이 나와요.

- PCIe 스위치를 넣은 이유는 tensor parallelism 때문이에요. 모델을 여러 GPU에 쪼개면 각 GPU가 계산만 하는 게 아니라 중간 결과를 계속 주고받아야 해요. 이 통신이 CPU 루트 포트를 왕복하면 지연과 대역폭 손실이 커져서, 스위치 패브릭 안에서 P2P로 돌리는 게 훨씬 유리해져요.

- BIOS 설정이 중요한 이유는 하드웨어가 꽂혀 있다고 해서 원하는 토폴로지로 동작하지 않기 때문이에요. bifurcation이 잘못 잡히면 x16이 x8로 쪼개지고, Auto 링크 협상이 꼬이면 Gen1처럼 보일 수 있어요. Re-Size BAR, ASPM, ACS 같은 옵션은 평소엔 잘 안 보이지만 멀티 GPU 추론에서는 바로 성능 문제로 튀어나와요.

- `iommu=off`와 ACS 비활성화는 보안이나 가상화 관점에선 조심스러운 선택이에요. 하지만 이 구성은 베어메탈 추론 머신이고, 목표가 GPU P2P 성능이라 트레이드오프가 달라져요. 저자는 NCCL hang과 CPU 경유 P2P를 피하려고 이 설정을 택했고, `nvidia-smi topo`와 대역폭 측정으로 결과를 검증했어요.

- 전력 제한도 단순 절약이 아니라 운영 안정성 문제예요. 4장의 고전력 GPU를 110V 회로에서 돌리면 순간 부하와 PSU 여유가 바로 현실 문제가 되거든요. 그래서 350W 또는 260W 같은 power cap을 부팅 시 적용하고, 추론 성능과 전기 인프라 사이에서 타협점을 찾은 거예요.

## 핵심 포인트

- 2× RTX 3090으로 48GB VRAM을 확보하면 Qwen3.6-27B와 whisper-large-v3 로컬 STT까지 가능
- 고가 구성은 4× RTX PRO 6000 Blackwell Workstation으로 384GB VRAM을 확보해 GLM-5.2 594B급 모델을 노림
- 저자는 PCIe5·DDR5 기반 시스템 대신 중고 EPYC·DDR4 베이스와 PCIe4 스위치에 투자해 비용을 VRAM 중심으로 배분함
- PCIe 스위치, ACS 비활성화, IOMMU off, Re-Size BAR, ASPM 설정이 멀티 GPU P2P 성능의 핵심으로 등장함
- 측정 결과 스위치 경유 P2P가 단방향 27.5GB/s, 양방향 50.4GB/s, 지연시간 0.37~0.45µs 수준을 기록함

## 인사이트

로컬 LLM은 이제 'GPU 몇 장 꽂으면 끝'이 아니라 VRAM, PCIe 토폴로지, 전력, BIOS, 컨테이너 운영까지 같이 보는 시스템 엔지니어링 문제가 됐다. 특히 멀티 GPU 추론에서는 모델보다 버스와 설정이 먼저 발목 잡을 수 있다는 점이 꽤 실전적임.
