내 하드웨어에서 대형 언어 모델 돌리기
70B 이상 모델을 클라우드 API 대신 로컬에서 돌릴 때의 실제 비용, 트레이드오프, 하드웨어 요구사항을 정리했습니다.

작년에 로컬 추론 장비를 만드는 데 4,200달러를 썼습니다. 이 장비로 70B 파라미터 모델을 꽤 쓸 만한 속도로 돌릴 수 있었죠. 동료가 제 세팅을 보더니 당연한 질문을 던졌습니다. ‘그냥 API 쓰면 안 돼? 그 돈이면 API 크레딧을 8년 치는 쓰겠다.’ 계산 자체는 틀린 말이 아니었어요. 다만 판단 기준이 틀렸습니다.
대형 언어 모델을 로컬에서 돌리는 일은 한때 랙 마운트 GPU 클러스터를 갖춘 연구소의 영역이었습니다. 그런데 상황이 빠르게 바뀌었죠. 소비자용 하드웨어, 양자화 기법, 최적화된 추론 엔진 덕분에 70B 이상 모델이 개인 취미 개발자와 소규모 팀도 손에 닿는 수준이 됐습니다. Tinybox 같은 장비는 한 걸음 더 나아갑니다. 120B 파라미터 모델을 클라우드 없이 오프라인에서 돌리도록 처음부터 설계된 전용 하드웨어예요.
하지만 ‘가능하다’와 ‘실용적이다’는 전혀 다른 얘기입니다. 대형 모델을 로컬에서 돌리려면 실제로 무엇이 필요한지, 언제 그럴 가치가 있는지, 그리고 언제 API에 돈을 내는 편이 나은지 함께 살펴보겠습니다.
로컬에서 모델을 돌려야 하는 이유
데이터를 클라우드 제공자에게 보내고 결과를 돌려받는 API 방식은 대부분의 사용 사례에 충분히 잘 맞습니다. 간단하고, 호출량이 적을 때는 건당 비용도 싸고, 최신 모델을 언제나 바로 쓸 수 있죠. 그렇다면 굳이 로컬 추론을 할 이유가 뭘까요?
- 개인정보 보호와 규제 준수. 어떤 데이터는 사내 네트워크 밖으로 나갈 수 없습니다. 의료 기록, 법률 문서, 독점 코드, 금융 데이터처럼 규제가 엄격한 산업은 데이터 거주 요건이 까다로운 경우가 많아요. 환자 기록을 암호화된 엔드포인트로 보낸다 해도 HIPAA를 위반할 수 있습니다. 로컬 추론이라면 모든 데이터를 온프레미스에 그대로 둘 수 있어요.
- 지연 시간. API 호출에는 네트워크 왕복, 대기열 지연, 호출 한도가 따릅니다. 로컬 추론은 네트워크 지연이 0이고 대기열에 설 일도 없어요. 실시간 코딩 어시스턴트, 기기 내 번역, 음성 인터페이스처럼 대화형 애플리케이션에서는 50ms와 500ms의 차이가 ‘반응이 빠르다’와 ‘답답하다’의 차이로 체감됩니다.
- 대규모 사용 시 비용. API 요금은 토큰 단위로 청구됩니다. 호출량이 적을 때는 무시할 수준이지만, 많아지면 비용이 무섭게 불어나요. 코드 리뷰, 문서 분석, 배치 처리를 많이 하는 팀은 매달 API 비용으로 수천 달러를 쓰기도 합니다. 로컬 하드웨어는 고정 비용이라 한 번 장비를 갖추고 나면 추론은 사실상 공짜입니다.
- 가용성. 클라우드 API는 장애가 나고, 호출 한도가 걸리고, 예고 없이 가격이 바뀌고, 모델이 지원 중단되기도 합니다. 제품이 외부 API에 의존한다면 그 회사의 사업 결정에 좌우될 수밖에 없어요. 로컬 추론을 쓰면 남의 서버가 하루 운이 나쁘다고 내 기능이 증발하지 않습니다.
- 실험의 자유. API 제공자에게는 이용 정책이 있습니다. 모델로 무엇을 할 수 있고 없는지를 그쪽에서 정하죠. 로컬 모델에는 그런 제약이 없습니다. 파인튜닝하고, 수정하고, 원하는 용도로 쓰고, 횟수 제한 없이 돌릴 수 있어요.
하드웨어의 현실
LLM 추론에서 근본적인 제약은 연산 성능이 아니라 메모리입니다. 모델 파라미터가 메모리(GPU VRAM이나 시스템 RAM)에 올라가야 무엇이든 할 수 있어요. 16비트 부동소수점으로 된 70B 파라미터 모델은 약 140GB의 메모리가 필요합니다. 이는 어떤 단일 소비자용 GPU보다도 큰 용량이에요.
여기서 양자화가 판을 바꿉니다. 모델 가중치의 정밀도를 16비트에서 8비트, 4비트, 심지어 2비트로 낮추면 메모리 요구량을 크게 줄일 수 있습니다:
Memory requirements for a 70B parameter model:
FP16 (full precision): ~140 GB → requires multiple A100s
INT8 (8-bit quant): ~70 GB → requires 2x RTX 4090 (48GB total)
Q4_K_M (4-bit quant): ~40 GB → fits on 2x RTX 3090 or 1x A6000
Q2_K (2-bit quant): ~25 GB → fits on 1x RTX 4090 (24GB)
For a 120B parameter model:
FP16: ~240 GB → enterprise GPU territory
INT8: ~120 GB → 5x RTX 4090 or purpose-built device
Q4_K_M: ~70 GB → 3x RTX 4090
Q2_K: ~40 GB → 2x RTX 4090
4비트 양자화(llama.cpp 생태계의 Q4_K_M)가 현재 가장 균형 잡힌 선택입니다. 품질 저하는 측정은 되지만 실사용에서는 대개 감수할 만한 수준이에요. 대부분의 사람은 블라인드 테스트에서 Q4 결과물과 원본 정밀도 결과물을 구분하지 못합니다. 2비트 양자화는 특히 추론이 많이 필요한 작업에서 품질 저하가 뚜렷하지만, 텍스트 분류나 요약 같은 단순한 용도에는 여전히 쓸 만합니다.
소비자용 하드웨어로 구성하기
직접 로컬 추론 환경을 꾸미려 한다면 기본적으로 세 가지 길이 있고, 각각 가격 대비 성능이 다릅니다.
단일 GPU 방식
RTX 4090 한 장(VRAM 24GB, 약 1,600달러)이면 4비트 양자화 모델을 약 30B 파라미터까지 여유 있게 돌릴 수 있고, 2비트 공격적 양자화를 쓰면 70B 모델도 가능합니다. 7B~13B 모델에는 과한 사양이라 초당 40토큰 이상이 나오는데, 이는 대부분의 사람이 읽는 속도보다 빠릅니다. 가장 쉬운 방법이에요. GPU를 사고, llama.cpp나 Ollama를 설치하면 끝입니다.
멀티 GPU 방식
GPU 두 장 이상이면 모델을 여러 장치에 나눠 올릴 수 있습니다(텐서 병렬화). 중고 RTX 3090 두 장(총 VRAM 48GB, 중고 약 2,200달러)이면 4비트 70B 모델도 넉넉히 돌아갑니다. 문제는 PCIe 레인이 충분한 메인보드와 풀사이즈 GPU 여러 장을 꽂을 물리적 공간이 필요하다는 점이에요. 공기 흐름도 중요한 문제가 됩니다. 350W짜리 GPU 두 장을 케이스에 넣으면 발열이 심각합니다.
통합 메모리 방식
대용량 통합 메모리를 갖춘 애플 실리콘 맥은 생각보다 현실적인 선택지입니다. 192GB 통합 메모리의 M2 Ultra는 원본 정밀도의 70B 모델을 메모리에 통째로 올릴 수 있어요. 추론 속도는 전용 GPU보다 느려서 70B 모델 기준 초당 10~15토큰 정도지만, 단순함은 따라올 것이 없습니다. 드라이버 문제도, 멀티 GPU 설정도, 열 관리도 없어요. 책상 위 Mac Studio 한 대로 70B 모델을 돌리면 끝입니다.
M 시리즈 칩은 통합 메모리 아키텍처로 이를 가능하게 합니다. CPU와 GPU가 같은 메모리 풀을 공유하기 때문에 CPU RAM과 GPU VRAM 사이에서 데이터를 복사하는 병목이 없어요. 메모리 대역폭은 전용 GPU 구성보다 낮고, 그래서 추론이 느린 것이지만, 60와트만 쓰는 기기에서 192GB의 주소 공간을 쓸 수 있다는 건 정말 인상적입니다.
추론 전용 장비
가장 새로운 범주는 대형 모델을 효율적으로 돌리도록 설계된 추론 전용 로컬 장비입니다. 여러 GPU를 엮는 번거로움을 해결하는 것이 목표예요. 소비자용 GPU를 이리저리 엮고 케이블 정리에 씨름하는 대신, 추론을 위해 처음부터 설계된 어플라이언스를 쓰는 셈입니다.
매력은 분명합니다. 전원을 꽂고, 애플리케이션이 그쪽을 바라보게 하면 모델이 돌아갑니다. 드라이버 충돌도, CUDA 버전 관리도, GPU 세 장을 너무 붙여 놓아서 생기는 열 스로틀링도 없어요. 대신 비용이 문제입니다. 추론 전용 장비는 보통 같은 성능의 소비자용 GPU보다 FLOP당 가격이 비쌉니다. 통합, 안정성, 그리고 PCIe 레인 할당을 디버깅하지 않아도 되는 편의에 대한 값을 치르는 셈이죠.
로컬 추론이 필요하지만 하드웨어 엔지니어가 없는 중소기업이라면 이런 장비가 합리적입니다. 직접 만들며 즐기는 취미 개발자라면 DIY 멀티 GPU 구성이 여전히 더 저렴하고 자유롭습니다.
소프트웨어 스택
하드웨어는 이야기의 절반일 뿐입니다. 추론 소프트웨어 스택은 빠르게 발전해 왔고, 어떤 소프트웨어를 고르느냐에 따라 같은 하드웨어에서도 처리량이 두 배가 될 수 있어요.
- llama.cpp — 로컬 추론의 스위스 아미 나이프입니다. C/C++로 작성되었고, 라즈베리 파이부터 멀티 GPU 서버까지 어디서든 돌아갑니다. 수십 가지 모델 아키텍처와 양자화 포맷을 지원해요. 항상 가장 빠른 건 아니지만 가장 이식성이 좋고 활발하게 관리되고 있습니다.
- vLLM — NVIDIA GPU에서 처리량을 최적화한 도구입니다. PagedAttention으로 GPU 메모리를 효율적으로 관리해서 배치 추론이 크게 빨라져요. 한 대의 머신으로 여러 사용자에게 서비스한다면 보통 vLLM이 최선의 선택입니다.
- Ollama — ‘LLM을 위한 Docker’ 같은 접근입니다. llama.cpp를 사용자 친화적인 인터페이스와 모델 레지스트리로 감쌌어요.
ollama run llama3:70b를 실행하면 모델을 내려받고, 양자화를 설정하고, 서빙을 시작합니다. 입문용으로 훌륭하지만 llama.cpp를 직접 다루는 것보다는 설정 자유도가 낮습니다. - MLX — 애플이 만든 머신러닝 프레임워크로, 애플 실리콘에 최적화되어 있습니다. M 시리즈 맥을 쓰고 있다면 MLX가 통합 메모리 아키텍처를 더 효과적으로 활용해서 보통 llama.cpp보다 나은 성능을 냅니다.
# Getting started with Ollama (the easiest path)
# Install: https://ollama.ai
# Run a 7B model (downloads automatically, ~4GB)
$ ollama run mistral
# Run a 70B model (needs ~40GB RAM/VRAM)
$ ollama run llama3:70b-instruct-q4_K_M
# Serve as an API endpoint (OpenAI-compatible)
$ ollama serve
$ curl http://localhost:11434/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "mistral",
"messages": [{"role": "user", "content": "Explain TCP handshakes"}]
}'
솔직한 비용 비교
정말 중요한 계산을 해보죠. 70B 모델을 돌리면서 하루 약 100만 토큰을 처리한다고 가정합니다(문서 50~100개를 분석하거나 채팅 수백 건을 처리하는 양에 해당해요).
Cloud API (approximate pricing for 70B-class model):
Input: $0.50 per million tokens
Output: $1.50 per million tokens
Daily cost: ~$2.00
Monthly cost: ~$60
Yearly cost: ~$720
Local inference (2x RTX 4090 build):
Hardware: $4,200 (one-time)
Electricity: ~$30/month (assuming 700W, 8h/day, $0.15/kWh)
Break-even: ~5.5 years
Local inference (Mac Studio M2 Ultra 192GB):
Hardware: $5,800 (one-time)
Electricity: ~$3/month (60W)
Break-even: ~8 years
하루 100만 토큰이라면 클라우드 API가 몇 년 동안은 더 저렴합니다. 하지만 사용량이 늘면 계산이 크게 달라져요. 하루 1,000만 토큰이면 API 비용은 연간 7,200달러이고, 로컬 하드웨어는 약 7개월 만에 본전을 뽑습니다. 하루 5,000만 토큰이면 로컬 추론은 몇 주 만에 장비 값을 해결합니다.
비용 비교에는 개인정보 보호, 지연 시간, 가용성, 실험의 자유 같은 비금전적 요소가 빠져 있습니다. 이런 요소가 단순한 ‘있으면 좋은 것’이 아니라 필수 요건이라면, 재무 비교는 부차적인 문제가 됩니다.
양자화에서 잃는 것들
양자화는 대형 모델을 로컬에서 돌릴 수 있게 만드는 핵심 기술이지만 공짜는 아닙니다. 정밀도를 낮추면 일부 정보가 사라지고, 그 저하는 작업마다 고르게 나타나지 않아요.
제가 직접 테스트해 본 결과, 4비트 양자화 모델은 텍스트 생성, 요약, 단순 Q&A, 번역, 흔한 패턴의 코드 생성에서 원본 정밀도와 거의 차이가 없었습니다. 저하가 드러나는 영역은 복잡한 다단계 추론, 수학 계산, 학습 데이터의 정확한 기억 회상, 그리고 미묘한 지시 따르기입니다.
실무적으로는 이렇습니다. 로컬 모델을 코드 자동완성, 문서 요약, 대화형 AI에 쓴다면 4비트 양자화로 충분합니다. 복잡한 분석 추론이나 미묘한 정확도 차이가 중요한 작업이라면 꼼꼼히 테스트해야 하고, 메모리를 더 쓰거나 작은 모델을 감수하더라도 높은 정밀도를 고려해야 할 수 있어요.
결정 내리기
1년 동안 모델을 로컬에서 돌려본 끝에 정리한, 로컬과 클라우드 추론 중 무엇을 고를지에 대한 제 기준은 이렇습니다:
클라우드 API를 쓸 때: 무조건 최고 품질의 모델이 필요하거나, 호출량이 적거나 중간 정도이거나, 하드웨어 전문성이 없거나, 모델을 자주 바꿔 써야 하거나, 지연 시간이 크게 중요하지 않을 때(수백 밀리초 정도는 괜찮을 때).
로컬에서 돌릴 때: 데이터가 사내 네트워크를 벗어날 수 없거나, 일관된 100ms 미만 지연 시간이 필요하거나, 토큰 사용량이 하드웨어 비용을 정당화할 만큼 많거나, 건당 비용 걱정 없이 자유롭게 실험하고 싶거나, 제3자 가동 시간과 무관하게 추론 가용성이 필요할 때.
이 분야는 빠르게 변하고 있습니다. 모델은 점점 작고 효율적이 되고, 양자화 기법은 나아지고, 하드웨어는 저렴해지고 있어요. 로컬 추론이 재정적으로 말이 되는 호출량 기준선은 해마다 낮아지고 있습니다. 지금 당신에게 맞지 않더라도 18개월 뒤에는 맞을 수 있고, 그 사이 소프트웨어 스택은 계속 쓰기 쉬워질 겁니다.


